unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#50187: 28.0.50; tramp is called from calendar
@ 2021-08-24 15:06 Steingold
  2022-08-22 14:28 ` Lars Ingebrigtsen
  0 siblings, 1 reply; 42+ messages in thread
From: Steingold @ 2021-08-24 15:06 UTC (permalink / raw)
  To: 50187

I get this trace:

--8<---------------cut here---------------start------------->8---
  tramp-file-name-handler(file-readable-p "/scp:remote:/path/Contents/Resources/site-lisp/cal-move.so")
  calendar-cursor-to-visible-date((8 24 2021))
  calendar-generate-window(8 2021)
  calendar-basic-setup(nil)
  calendar()
  run-hooks(midnight-hook)
  apply(run-hooks midnight-hook)
  timer-event-handler([t 24869 56416 388128 86400 run-hooks (midnight-hook) nil 0])
--8<---------------cut here---------------end--------------->8---

I do have a file "/scp:remote:/path/foo/bar/baz.py" open.
"remote" is not accessible because the VPN is down.
"/scp:remote:/path/" is the location of the .git directory for baz.py.
"remote" is linux, localhost is mac. of course there is no
Contents/Resources/site-lisp/cal-move.so on "remote".
How come "calendar" calls "tramp"?
when I click on the function name in *Backtrace* to get to the source
code, tramp is called and I get an infinite loop of
"Tramp: Opening connection nil for remote using scp...failed"
I have to C-g and M-x tramp-cleanup-all-connections to get back to editing.


In GNU Emacs 28.0.50 (build 5, x86_64-apple-darwin19.6.0, NS appkit-1894.60 Version 10.15.7 (Build 19H1323))
 of 2021-08-23 built on 3c22fb11fdab.ant.amazon.com
Repository revision: 00edc8329a6277f2e5b5204efbe503e2b7957006
Repository branch: master
Windowing system distributor 'Apple', version 10.3.1894
System Description:  Mac OS X 10.15.7

Configured using:
 'configure --with-imagemagick --with-mailutils --with-ns
 PKG_CONFIG_PATH=/usr/local/opt/libxml2/lib/pkgconfig:/usr/local/opt/imagemagick/lib/pkgconfig:/usr/local/opt/gnutls/lib/pkgconfig:/usr/local/opt/jansson/lib/pkgconfig:/usr/local/opt/libtiff/lib/pkgconfig:/usr/local/opt/libpng/lib/pkgconfig:/usr/local/opt/libjpeg/lib/pkgconfig:/usr/local/opt/freetype/lib/pkgconfig'

Configured features:
ACL GMP GNUTLS IMAGEMAGICK JPEG JSON LCMS2 LIBXML2 MODULES NOTIFY KQUEUE
NS PDUMPER PNG THREADS TIFF TOOLKIT_SCROLL_BARS ZLIB

Important settings:
  value of $LC_ALL: en_US.UTF-8
  value of $LANG: C
  locale-coding-system: utf-8-unix

Major mode: VC dir

Minor modes in effect:
  pyvenv-mode: t
  shell-dirtrack-mode: t
  global-edit-server-edit-mode: t
  winner-mode: t
  which-function-mode: t
  url-handler-mode: t
  show-paren-mode: t
  desktop-save-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tab-bar-mode: 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
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t

Load-path shadows:
Error during checking
Features:
(tramp-cmds smiley gnus-cite qp gnus-async gnus-bcklg gnus-dup gnus-ml
hl-line disp-table spam spam-stat gnus-uu yenc nndraft nnmh gnus-agent
gnus-srvr gnus-score score-mode nnvirtual utf-7 gnus-cache bbdb-gnus
nntp smtpmail shadow sort bbdb-message mailalias cookie1 mail-extr
gnus-msg emacsbug sendmail vc-mtn vc-src vc-sccs vc-svn vc-cvs vc-rcs
vc-dir ewoc cl-print debug backtrace dabbrev skeleton misearch
multi-isearch rx color autoload lisp-mnt mm-archive gnutls
network-stream url-http url-gw nsm url-cache url-auth finder-inf package
add-log vc-hg vc-bzr tramp-cache remember vc cc-mode cc-fonts cc-guess
cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
bug-reference conf-mode company-oddmuse company-keywords company-etags
company-gtags company-dabbrev-code company-dabbrev company-files
company-clang company-template company-cmake company-bbdb
yasnippet-snippets yasnippet flymake-proc flymake company-capf company
pcase help-fns radix-tree elpy edmacro kmacro elpy-rpc pyvenv eshell
esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups
esh-util elpy-shell elpy-profile elpy-django s elpy-refactor ido grep
compile etags fileloop xref project cus-edit pp cus-start python
tramp-sh tramp tramp-loaddefs trampver tramp-integration files-x
tramp-compat shell ls-lisp flyspell ispell org-element avl-tree
generator ol-eww eww xdg url-queue thingatpt mm-url ol-rmail ol-mhe
ol-irc ol-info ol-gnus nnselect gnus-search eieio-opt cl-extra help-mode
speedbar ezimage dframe gnus-art mm-uu mml2015 mm-view mml-smime smime
dig gnus-sum shr kinsoku svg dom browse-url url url-proxy url-privacy
url-expand url-methods url-history url-cookie url-domsuf url-util
mailcap gnus-group gnus-undo gnus-start gnus-dbus dbus xml gnus-cloud
nnimap nnmail mail-source utf7 netrc nnoo parse-time gnus-spec gnus-int
gnus-range message rmc puny rfc822 mml mml-sec epa derived epg
epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231 gmm-utils
mailheader gnus-win ol-docview doc-view jka-compr image-mode exif
ol-bibtex bibtex iso8601 ol-bbdb ol-w3m org ob ob-tangle ob-ref ob-lob
ob-table ob-exp org-macro org-footnote org-src ob-comint org-pcomplete
pcomplete comint ansi-color org-list org-faces org-entities noutline
outline org-version ob-emacs-lisp ob-core ob-eval org-table ol org-keys
org-compat org-macs org-loaddefs format-spec find-func cal-x view
cal-china cal-bahai cal-islam holidays hol-loaddefs bbdb-anniv cal-iso
cal-hebrew lunar cal-julian solar cal-dst vc-git diff-mode easy-mmode
vc-dispatcher appt diary-lib diary-loaddefs cal-menu calendar
cal-loaddefs dired-aux dired dired-loaddefs midnight warnings gnus
nnheader gnus-util rmail rmail-loaddefs rfc2047 rfc2045 ietf-drums
text-property-search time-date mail-utils mm-util mail-prsvr wid-edit
bbdb-mua bbdb-com crm mailabbrev bbdb bbdb-site timezone edit-server
advice server winner ring which-func imenu url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs
password-cache json subr-x map seq byte-opt gv bytecomp byte-compile
cconv url-vars paren help-at-pt desktop frameset cl-loaddefs cl-lib
cus-load info iso-transl tooltip eldoc electric uniquify ediff-hook
vc-hooks lisp-float-type mwheel term/ns-win ns-win ucs-normalize
mule-util term/common-win tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
timer select scroll-bar mouse jit-lock font-lock syntax font-core
term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite charscript charprop case-table epa-hook
jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice button
loaddefs faces cus-face macroexp files window text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote threads kqueue cocoa ns lcms2
multi-tty make-network-process emacs)

Memory information:
((conses 16 1907075 184330)
 (symbols 48 42376 26)
 (strings 32 404355 48896)
 (string-bytes 1 11953164)
 (vectors 16 124222)
 (vector-slots 8 2158656 320801)
 (floats 8 1033 615)
 (intervals 56 173673 4887)
 (buffers 992 62))

-- 
Sam Steingold (http://sds.podval.org/) on darwin Ns 10.3.1894
http://childpsy.net http://calmchildstories.com http://steingoldpsychology.com
https://jij.org https://www.dhimmitude.org https://www.peaceandtolerance.org/
Genius is immortal, but morons live longer.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2021-08-24 15:06 bug#50187: 28.0.50; tramp is called from calendar Steingold
@ 2022-08-22 14:28 ` Lars Ingebrigtsen
  2022-08-22 16:18   ` Sam Steingold
  2022-08-23  7:30   ` Michael Albinus
  0 siblings, 2 replies; 42+ messages in thread
From: Lars Ingebrigtsen @ 2022-08-22 14:28 UTC (permalink / raw)
  To: Steingold; +Cc: 50187

Steingold <sds@gnu.org> writes:

> I get this trace:
>
>   tramp-file-name-handler(file-readable-p "/scp:remote:/path/Contents/Resources/site-lisp/cal-move.so")
>   calendar-cursor-to-visible-date((8 24 2021))
>   calendar-generate-window(8 2021)
>   calendar-basic-setup(nil)
>   calendar()
>   run-hooks(midnight-hook)
>   apply(run-hooks midnight-hook)
>   timer-event-handler([t 24869 56416 388128 86400 run-hooks (midnight-hook) nil 0])

(I'm going through old bug reports that unfortunately weren't resolved
at the time.)

calendar-cursor-to-visible-date is an autoloaded function, so what's
happening is that Emacs is trying to load the cal-move file -- and
looking into "/scp:remote:/path/Contents/Resources/site-lisp/".

Can something have put that in your load-path by any chance?






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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-08-22 14:28 ` Lars Ingebrigtsen
@ 2022-08-22 16:18   ` Sam Steingold
  2022-08-23  2:11     ` Michael Heerdegen
  2022-08-23  2:18     ` Michael Heerdegen
  2022-08-23  7:30   ` Michael Albinus
  1 sibling, 2 replies; 42+ messages in thread
From: Sam Steingold @ 2022-08-22 16:18 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 50187

> * Lars Ingebrigtsen <ynefv@tahf.bet> [2022-08-22 16:28:38 +0200]:
>
> Steingold <sds@gnu.org> writes:
>
>> I get this trace:
>>
>>   tramp-file-name-handler(file-readable-p "/scp:remote:/path/Contents/Resources/site-lisp/cal-move.so")
>>   calendar-cursor-to-visible-date((8 24 2021))
>>   calendar-generate-window(8 2021)
>>   calendar-basic-setup(nil)
>>   calendar()
>>   run-hooks(midnight-hook)
>>   apply(run-hooks midnight-hook)
>>   timer-event-handler([t 24869 56416 388128 86400 run-hooks (midnight-hook) nil 0])
>
> (I'm going through old bug reports that unfortunately weren't resolved
> at the time.)

Very nice of you, but, alas, I have no way to reliably reproduce it now.

> calendar-cursor-to-visible-date is an autoloaded function, so what's
> happening is that Emacs is trying to load the cal-move file -- and
> looking into "/scp:remote:/path/Contents/Resources/site-lisp/".
>
> Can something have put that in your load-path by any chance?

I don't think so.

I suspect that this is a part of the pattern I still observe when tramp
paths seep into `default-directory' in irrelevant buffers.

Basically, if I create a non-file buffer `*NFB*' (e.g., by calling
`list-packages' or `gnus') while inside a tramp buffer, the buffer `*NFB*'
inherits `default-directory' from the tramp buffer (unless a special
action is taken, like by `gnus'!) so when a future action involving disk
access is initiated from `*NFB*' (e.g., when `midnight-hook' autoloads
something), the file system local to `*NFB*' is checked first (because
`.' is a part of `load-path' so it is resolved against the tramp
`default-directory').

Maybe a solution is to _never_ inherit `default-directory' unless
there is a _reason_ for that.  E.g., `*vc-diff*' should not inherit
`default-directory' from `*vc*' implicitly, but by an explicit action.
However, this will break so much existing code that you wouldn't even
consider that.
On the other hand, "explicitly non-file" modes (like, e.g., `*Custom*'
or `*Help*') should probably reset `default-directory'.

I now evaluate this

--8<---------------cut here---------------start------------->8---
(dolist (b (buffer-list))
  (with-current-buffer b
    (when (and (null buffer-file-name)
               (not (eq major-mode 'dired-mode))
               (not (string-match " ?\\*.*\\(tramp\\|vc\\|diff\\)" (buffer-name)))
               (tramp-tramp-file-p default-directory))
      (message "Reset 'default-directory' in %s(%s) from %s"
               b (or buffer-file-name list-buffers-directory) default-directory)
      (setq default-directory (default-value 'default-directory))
      )))
--8<---------------cut here---------------end--------------->8---

whenever I have any trouble with tramp, and, e.g., today I saw

--8<---------------cut here---------------start------------->8---
Reset ’default-directory’ in  *Minibuf-1*(nil) from /scp:remote:/home/sds/
Reset ’default-directory’ in *Custom Themes*(nil) from /scp:remote:/home/sds/
Reset ’default-directory’ in  *eldoc for line-move-visual*(nil) from /scp:remote:/home/sds/
--8<---------------cut here---------------end--------------->8---

Thank you very much for your attention.

-- 
Sam Steingold (https://aphar.dreamwidth.org/) on darwin Ns 10.3.2113
https://lastingimpactpsychology.com https://steingoldpsychology.com
https://ffii.org https://thereligionofpeace.com http://think-israel.org
Please express your antipathy in the suicidal form.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-08-22 16:18   ` Sam Steingold
@ 2022-08-23  2:11     ` Michael Heerdegen
  2022-08-23  2:18     ` Michael Heerdegen
  1 sibling, 0 replies; 42+ messages in thread
From: Michael Heerdegen @ 2022-08-23  2:11 UTC (permalink / raw)
  To: Sam Steingold; +Cc: Lars Ingebrigtsen, 50187

Sam Steingold <sds@gnu.org> writes:

> > calendar-cursor-to-visible-date is an autoloaded function, so what's
> > happening is that Emacs is trying to load the cal-move file -- and
> > looking into "/scp:remote:/path/Contents/Resources/site-lisp/".
> >
> > Can something have put that in your load-path by any chance?
>
> I don't think so.
>
> I suspect that this is a part of the pattern I still observe when tramp
> paths seep into `default-directory' in irrelevant buffers.

If you had `nil' in your `load-path' - that stands for the
`default-directory'.

Michael.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-08-22 16:18   ` Sam Steingold
  2022-08-23  2:11     ` Michael Heerdegen
@ 2022-08-23  2:18     ` Michael Heerdegen
  2022-08-23  2:47       ` Sam Steingold
  1 sibling, 1 reply; 42+ messages in thread
From: Michael Heerdegen @ 2022-08-23  2:18 UTC (permalink / raw)
  To: Sam Steingold; +Cc: Lars Ingebrigtsen, 50187

Sam Steingold <sds@gnu.org> writes:

> (because `.' is a part of `load-path'

Ok, but it's not there by default, right?

> so it is resolved against the tramp `default-directory').
>
> Maybe a solution is to _never_ inherit `default-directory' unless
> there is a _reason_ for that.  E.g., `*vc-diff*' should not inherit
> `default-directory' from `*vc*' implicitly, but by an explicit action.
> However, this will break so much existing code that you wouldn't even
> consider that.
> On the other hand, "explicitly non-file" modes (like, e.g., `*Custom*'
> or `*Help*') should probably reset `default-directory'.

What you suggest would at least partly reverse the effect of having
default-directory in load-path.  Maybe you should just remove it?

Michael.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-08-23  2:18     ` Michael Heerdegen
@ 2022-08-23  2:47       ` Sam Steingold
  2022-08-23  3:24         ` Michael Heerdegen
  0 siblings, 1 reply; 42+ messages in thread
From: Sam Steingold @ 2022-08-23  2:47 UTC (permalink / raw)
  To: Michael Heerdegen; +Cc: Lars Ingebrigtsen, 50187

> * Michael Heerdegen <zvpunry_urreqrtra@jro.qr> [2022-08-23 04:18:23 +0200]:
>
>
> Sam Steingold <sds@gnu.org> writes:
>
>> (because `.' is a part of `load-path'
>
> Ok, but it's not there by default, right?

I have no idea why it was there (it is not there now!)
I am not even sure if it was there then.
My only point is that disk access triggered from a buffer with a tramp
`default-directory' results in tramp being activated and trying to
touch the remote.
Dunno why.
My theory was `load-path', looks like I was wrong.


-- 
Sam Steingold (https://aphar.dreamwidth.org) on Pop 22.04 (jammy) X 11.0.12101003
http://childpsy.net http://calmchildstories.com http://steingoldpsychology.com
https://www.memritv.org https://www.peaceandtolerance.org/
I haven't lost my mind -- it's backed up on tape somewhere.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-08-23  2:47       ` Sam Steingold
@ 2022-08-23  3:24         ` Michael Heerdegen
  2022-08-23  3:39           ` Sam Steingold
  0 siblings, 1 reply; 42+ messages in thread
From: Michael Heerdegen @ 2022-08-23  3:24 UTC (permalink / raw)
  To: Sam Steingold; +Cc: Lars Ingebrigtsen, 50187

Sam Steingold <sds@gnu.org> writes:

> >> (because `.' is a part of `load-path'
> >
> > Ok, but it's not there by default, right?
>
> I have no idea why it was there (it is not there now!)
> I am not even sure if it was there then.
> My only point is that disk access triggered from a buffer with a tramp
> `default-directory' results in tramp being activated and trying to
> touch the remote.
> Dunno why.
> My theory was `load-path', looks like I was wrong.

Not really: your backtrace very much looks like the function
`calendar-cursor-to-visible-date' was autoloaded.  Autoloads don't
contain complete paths, they only contain relative file names.  So the
`load-path' is searched, and if "." or nil is at the beginning, the
default-directory is searched first.  Else the standard file would have
been found before default-directory is touched.  Quite plausible that
this is what you saw.

Michael.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-08-23  3:24         ` Michael Heerdegen
@ 2022-08-23  3:39           ` Sam Steingold
  2022-08-23  4:00             ` Michael Heerdegen
  0 siblings, 1 reply; 42+ messages in thread
From: Sam Steingold @ 2022-08-23  3:39 UTC (permalink / raw)
  To: Michael Heerdegen; +Cc: Lars Ingebrigtsen, 50187

At any rate, I never add either "." or nil to `load-path`.

On Mon, 22 Aug 2022 at 23:25, Michael Heerdegen
<michael_heerdegen@web.de> wrote:
> Not really: your backtrace very much looks like the function
> `calendar-cursor-to-visible-date' was autoloaded.  Autoloads don't
> contain complete paths, they only contain relative file names.  So the
> `load-path' is searched, and if "." or nil is at the beginning, the
> default-directory is searched first.  Else the standard file would have
> been found before default-directory is touched.  Quite plausible that
> this is what you saw.

-- 
Sam Steingold <http://sds.podval.org> <http://www.childpsy.net>
<http://steingoldpsychology.com>





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-08-23  3:39           ` Sam Steingold
@ 2022-08-23  4:00             ` Michael Heerdegen
  0 siblings, 0 replies; 42+ messages in thread
From: Michael Heerdegen @ 2022-08-23  4:00 UTC (permalink / raw)
  To: Sam Steingold; +Cc: Lars Ingebrigtsen, 50187

Sam Steingold <sds@gnu.org> writes:

> At any rate, I never add either "." or nil to `load-path`.

There are multiple ways why such an entry could have been added there -
it must not even have been you.

But if the load-path theory is wrong, I have no clue what was going on
without a reproducer.  The backtrace seems to clearly hint at
autoloading going on.

Michael.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-08-22 14:28 ` Lars Ingebrigtsen
  2022-08-22 16:18   ` Sam Steingold
@ 2022-08-23  7:30   ` Michael Albinus
  2022-08-23 10:00     ` Lars Ingebrigtsen
  1 sibling, 1 reply; 42+ messages in thread
From: Michael Albinus @ 2022-08-23  7:30 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Steingold, 50187

Lars Ingebrigtsen <larsi@gnus.org> writes:

Hi Lars,

>> I get this trace:
>>
>>   tramp-file-name-handler(file-readable-p "/scp:remote:/path/Contents/Resources/site-lisp/cal-move.so")
>>   calendar-cursor-to-visible-date((8 24 2021))
>>   calendar-generate-window(8 2021)
>>   calendar-basic-setup(nil)
>>   calendar()
>>   run-hooks(midnight-hook)
>>   apply(run-hooks midnight-hook)
>>   timer-event-handler([t 24869 56416 388128 86400 run-hooks (midnight-hook) nil 0])
>
> (I'm going through old bug reports that unfortunately weren't resolved
> at the time.)
>
> calendar-cursor-to-visible-date is an autoloaded function, so what's
> happening is that Emacs is trying to load the cal-move file -- and
> looking into "/scp:remote:/path/Contents/Resources/site-lisp/".
>
> Can something have put that in your load-path by any chance?

I don't believe it is a load-path issue. calendar-cursor-to-visible-date
is declared in cal-loaddefs.el (it has the ;;;###cal-autoload cookie),
and this loaddefs file is loaded when loading calendar.el.

That has been finished already, when calendar-basic-setup is applied.

The question is rather: what is cal-move.so, and how and why is it
checked for readability? In the directory emacs/lisp/calendar I cannot
find any use of this file.

Best regards, Michael.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-08-23  7:30   ` Michael Albinus
@ 2022-08-23 10:00     ` Lars Ingebrigtsen
  2022-08-23 19:13       ` Michael Heerdegen
  0 siblings, 1 reply; 42+ messages in thread
From: Lars Ingebrigtsen @ 2022-08-23 10:00 UTC (permalink / raw)
  To: Michael Albinus; +Cc: Steingold, 50187

Michael Albinus <michael.albinus@gmx.de> writes:

> I don't believe it is a load-path issue. calendar-cursor-to-visible-date
> is declared in cal-loaddefs.el (it has the ;;;###cal-autoload cookie),
> and this loaddefs file is loaded when loading calendar.el.
>
> That has been finished already, when calendar-basic-setup is applied.

Yes, cal-loaddefs had been loaded.  

> The question is rather: what is cal-move.so, and how and why is it
> checked for readability? In the directory emacs/lisp/calendar I cannot
> find any use of this file.

The backtrace shows that Emacs was trying to load cal-move.so, and
that's presumably something that Emacs tries to do when resolving the
`autoload' definition of `calendar-cursor-to-visible-date', I think?
(If I remember correctly, Emacs looks for all of so/elc/el, if Emacs is
built with module support, when doing a `require'/`autoload' lookup.)






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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-08-23 10:00     ` Lars Ingebrigtsen
@ 2022-08-23 19:13       ` Michael Heerdegen
  2022-08-23 19:29         ` Lars Ingebrigtsen
  0 siblings, 1 reply; 42+ messages in thread
From: Michael Heerdegen @ 2022-08-23 19:13 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 50187, Steingold, Michael Albinus

Lars Ingebrigtsen <larsi@gnus.org> writes:

> The backtrace shows that Emacs was trying to load cal-move.so, and
> that's presumably something that Emacs tries to do when resolving the
> `autoload' definition of `calendar-cursor-to-visible-date', I think?
> (If I remember correctly, Emacs looks for all of so/elc/el, if Emacs is
> built with module support, when doing a `require'/`autoload' lookup.)

".so" is the first prefix in the return value of (get-load-suffixes) for
me - so it is tried first.

And we see in the backtrace that `calendar-basic-setup' is not done.
And why else should a call of `calendar-cursor-to-visible-date' directly
invoke tramp?  If an Elisp function would be involved, it would appear
in the backtrace.

Michael.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-08-23 19:13       ` Michael Heerdegen
@ 2022-08-23 19:29         ` Lars Ingebrigtsen
  2022-08-23 23:09           ` Michael Heerdegen
  0 siblings, 1 reply; 42+ messages in thread
From: Lars Ingebrigtsen @ 2022-08-23 19:29 UTC (permalink / raw)
  To: Michael Heerdegen; +Cc: 50187, Steingold, Michael Albinus

Michael Heerdegen <michael_heerdegen@web.de> writes:

> And we see in the backtrace that `calendar-basic-setup' is not done.
> And why else should a call of `calendar-cursor-to-visible-date' directly
> invoke tramp?  If an Elisp function would be involved, it would appear
> in the backtrace.

I don't quite understand what you mean.

If you

(debug-on-entry 'tramp-file-name-handler)
(push "/ssh:host:/tmp/" load-path)

and then do something that will trigger an autoload, you get a backtrace
like that (depending on what it's autoloading):

  tramp-file-name-handler(expand-file-name "tramp" "/ssh:host:/tmp/")
  tramp-file-name-handler(expand-file-name "tramp" "/ssh:host:/tmp/")
  tramp-file-name-handler(expand-file-name "mule-util" "/ssh:host:/tmp/")
  truncate-string-to-width(#("<     Calendar     ? info / o other /
  calendar-string-spread((#("<" 0 1 (help-echo "mouse-1: previous m
  calendar-update-mode-line()
  calendar-mode()
  calendar-basic-setup(nil)
  calendar()
  eval((calendar) nil)

Here's it's calling truncate-string-to-width (which is autoloaded from
mule-utils).





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-08-23 19:29         ` Lars Ingebrigtsen
@ 2022-08-23 23:09           ` Michael Heerdegen
  2022-09-12 18:49             ` Sam Steingold
  0 siblings, 1 reply; 42+ messages in thread
From: Michael Heerdegen @ 2022-08-23 23:09 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 50187, Steingold, Michael Albinus

Lars Ingebrigtsen <larsi@gnus.org> writes:

>   tramp-file-name-handler(expand-file-name "tramp" "/ssh:host:/tmp/")
>   tramp-file-name-handler(expand-file-name "tramp" "/ssh:host:/tmp/")
>   tramp-file-name-handler(expand-file-name "mule-util" "/ssh:host:/tmp/")
>   truncate-string-to-width(#("<     Calendar     ? info / o other /
>   calendar-string-spread((#("<" 0 1 (help-echo "mouse-1: previous m
>   calendar-update-mode-line()
>   calendar-mode()
>   calendar-basic-setup(nil)
>   calendar()
>   eval((calendar) nil)

Could be that the backtraces just show different moments in autoloading
progress.  AFAIK `tramp-file-name-handler' is called very often.  Maybe
there is also some caching mechanism involved or something like that and
the first `tramp-file-name-handler' call depends on what you did before
- I don't know.

The OP didn't tell us how he produced his backtrace (do you maybe
recall, Sam?).

Michael.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-08-23 23:09           ` Michael Heerdegen
@ 2022-09-12 18:49             ` Sam Steingold
  2022-09-13  2:14               ` Michael Heerdegen
  0 siblings, 1 reply; 42+ messages in thread
From: Sam Steingold @ 2022-09-12 18:49 UTC (permalink / raw)
  To: Michael Heerdegen; +Cc: 50187, Lars Ingebrigtsen, Michael Albinus

> * Michael Heerdegen <zvpunry_urreqrtra@jro.qr> [2022-08-24 01:09:44 +0200]:
>
> The OP didn't tell us how he produced his backtrace (do you maybe
> recall, Sam?).

I have calendar in midnight-hook, so I came to this backtrace in the
morning.


-- 
Sam Steingold (https://aphar.dreamwidth.org/) on darwin Ns 10.3.2113
https://lastingimpactpsychology.com https://steingoldpsychology.com
http://think-israel.org https://ij.org/ https://www.peaceandtolerance.org/
Your mouse pad is incompatible with MS Windows - your HD will be reformatted.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-12 18:49             ` Sam Steingold
@ 2022-09-13  2:14               ` Michael Heerdegen
  2022-09-13 14:29                 ` Sam Steingold
  0 siblings, 1 reply; 42+ messages in thread
From: Michael Heerdegen @ 2022-09-13  2:14 UTC (permalink / raw)
  To: Sam Steingold; +Cc: 50187, Lars Ingebrigtsen, Michael Albinus

Sam Steingold <sds@gnu.org> writes:

> I have calendar in midnight-hook, so I came to this backtrace in the
> morning.

Yes thanks - but I wanted to know how you had obtained the backtrace,
that would help for the analysis.  M-x debug-on-entry [what function?],
or something else?  Can you maybe try to produce that backtrace again?

Michael.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-13  2:14               ` Michael Heerdegen
@ 2022-09-13 14:29                 ` Sam Steingold
  2022-09-14  2:54                   ` Michael Heerdegen
  0 siblings, 1 reply; 42+ messages in thread
From: Sam Steingold @ 2022-09-13 14:29 UTC (permalink / raw)
  To: Michael Heerdegen; +Cc: 50187, Lars Ingebrigtsen, Michael Albinus

> * Michael Heerdegen <zvpunry_urreqrtra@jro.qr> [2022-09-13 04:14:24 +0200]:
>
> Sam Steingold <sds@gnu.org> writes:
>
>> I have calendar in midnight-hook, so I came to this backtrace in the
>> morning.
>
> Yes thanks - but I wanted to know how you had obtained the backtrace,
> that would help for the analysis.  M-x debug-on-entry [what function?],
> or something else?  Can you maybe try to produce that backtrace again?

I always run Emacs with `debug-on-error' set to t.
So `midnight-hook' runs `calendar', it errors out, and I see the
*Backtrace* first thing in the morning.

-- 
Sam Steingold (https://aphar.dreamwidth.org/) on darwin Ns 10.3.2113
https://lastingimpactpsychology.com https://steingoldpsychology.com
https://mideasttruth.com https://fairforall.org https://ij.org/
To be popular with ladies one has to be smart, handsome & rich. Or to be a cat.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-13 14:29                 ` Sam Steingold
@ 2022-09-14  2:54                   ` Michael Heerdegen
  2022-09-14 18:57                     ` Sam Steingold
  0 siblings, 1 reply; 42+ messages in thread
From: Michael Heerdegen @ 2022-09-14  2:54 UTC (permalink / raw)
  To: Sam Steingold; +Cc: Michael Albinus, Lars Ingebrigtsen, 50187

Sam Steingold <sds@gnu.org> writes:

> I always run Emacs with `debug-on-error' set to t.
> So `midnight-hook' runs `calendar', it errors out, and I see the
> *Backtrace* first thing in the morning.

I didn't know that you got an error.

And you can still reproduce the problem?  Then you could try to use the
calendar before midnight and see if that prevents that error at
midnight.  If it doesn't, my autoload theory would be wrong.

Michael.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-14  2:54                   ` Michael Heerdegen
@ 2022-09-14 18:57                     ` Sam Steingold
  2022-09-15 10:36                       ` Michael Heerdegen
  0 siblings, 1 reply; 42+ messages in thread
From: Sam Steingold @ 2022-09-14 18:57 UTC (permalink / raw)
  To: Michael Heerdegen; +Cc: Michael Albinus, Lars Ingebrigtsen, 50187

> * Michael Heerdegen <zvpunry_urreqrtra@jro.qr> [2022-09-14 04:54:36 +0200]:
>
> Sam Steingold <sds@gnu.org> writes:
>
>> I always run Emacs with `debug-on-error' set to t.
>> So `midnight-hook' runs `calendar', it errors out, and I see the
>> *Backtrace* first thing in the morning.
>
> I didn't know that you got an error.

Sorry, the original message was indeed unclear on that.

> And you can still reproduce the problem?

Alas, I have not seen this for quite some time.
I don't even recall _when_ the problem went away.
All I remember is that I saw it for a while, reported the bug, did
nothing specifically to correct the issue, and then it went away after
some time.

> Then you could try to use the calendar before midnight and see if that
> prevents that error at midnight.  If it doesn't, my autoload theory
> would be wrong.

I do use calendar regularly, but I have not seen this recently.

_However_, I just called calendar from a Tramp buffer and the *Calendar*
buffer's `default-directory' is a tramp directory.

I don't think this is right.

-- 
Sam Steingold (https://aphar.dreamwidth.org/) on darwin Ns 10.3.2113
https://lastingimpactpsychology.com https://steingoldpsychology.com
https://iris.org.il https://honestreporting.com https://jihadwatch.org
A good programmer: language change is easy, editor change is ... huh?!





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-14 18:57                     ` Sam Steingold
@ 2022-09-15 10:36                       ` Michael Heerdegen
  2022-09-15 16:10                         ` Sam Steingold
  0 siblings, 1 reply; 42+ messages in thread
From: Michael Heerdegen @ 2022-09-15 10:36 UTC (permalink / raw)
  To: Sam Steingold; +Cc: Michael Albinus, Lars Ingebrigtsen, 50187

Sam Steingold <sds@gnu.org> writes:

> _However_, I just called calendar from a Tramp buffer and the *Calendar*
> buffer's `default-directory' is a tramp directory.
>
> I don't think this is right.

I think it's common behavior.  Does it cause trouble?

Michael.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-15 10:36                       ` Michael Heerdegen
@ 2022-09-15 16:10                         ` Sam Steingold
  2022-09-16  9:41                           ` Lars Ingebrigtsen
  0 siblings, 1 reply; 42+ messages in thread
From: Sam Steingold @ 2022-09-15 16:10 UTC (permalink / raw)
  To: Michael Heerdegen; +Cc: Michael Albinus, Lars Ingebrigtsen, 50187

> * Michael Heerdegen <zvpunry_urreqrtra@jro.qr> [2022-09-15 12:36:00 +0200]:
>
> Sam Steingold <sds@gnu.org> writes:
>
>> _However_, I just called calendar from a Tramp buffer and the *Calendar*
>> buffer's `default-directory' is a tramp directory.
>>
>> I don't think this is right.
>
> I think it's common behavior.  Does it cause trouble?

Yes.

Local disk access is fast compared to Tramp (that may take forever and
then actually fail). Thus a simple C-x C-f from a buffer with a remote
`default-directory' can become a nightmare - before I even see the
prompt.

`default-directory' should be remote only when there is a definite
reason for that (IOW, for remote files and directories),
it should not be inherited by non-file buffers at random.

Thank you!

-- 
Sam Steingold (https://aphar.dreamwidth.org/) on darwin Ns 10.3.2113
https://lastingimpactpsychology.com https://steingoldpsychology.com
https://ij.org/ https://honestreporting.com https://www.peaceandtolerance.org/
Diplomacy is the art of saying "nice doggy" until you can find a nice rock.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-15 16:10                         ` Sam Steingold
@ 2022-09-16  9:41                           ` Lars Ingebrigtsen
  2022-09-16  9:48                             ` Michael Albinus
                                               ` (2 more replies)
  0 siblings, 3 replies; 42+ messages in thread
From: Lars Ingebrigtsen @ 2022-09-16  9:41 UTC (permalink / raw)
  To: Sam Steingold; +Cc: Michael Heerdegen, Michael Albinus, 50187

Sam Steingold <sds@gnu.org> writes:

> `default-directory' should be remote only when there is a definite
> reason for that (IOW, for remote files and directories),
> it should not be inherited by non-file buffers at random.

It would be a break with how Emacs has worked for decades, so I don't
think that's something we could do in general.

I'm not even sure we could provide a user option for this -- if we're
not using the normal default directory here, which one should we choose
for `default-directory'?  "~/"?  "/"?

If starting calendar while in a Tramp buffer is problematic for you,
then I think the solution is to not do that, I'm afraid.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-16  9:41                           ` Lars Ingebrigtsen
@ 2022-09-16  9:48                             ` Michael Albinus
  2022-09-16 10:04                             ` Gregory Heytings
  2022-09-16 14:25                             ` Sam Steingold
  2 siblings, 0 replies; 42+ messages in thread
From: Michael Albinus @ 2022-09-16  9:48 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Michael Heerdegen, Sam Steingold, 50187

Lars Ingebrigtsen <larsi@gnus.org> writes:

>> `default-directory' should be remote only when there is a definite
>> reason for that (IOW, for remote files and directories),
>> it should not be inherited by non-file buffers at random.
>
> It would be a break with how Emacs has worked for decades, so I don't
> think that's something we could do in general.
>
> I'm not even sure we could provide a user option for this -- if we're
> not using the normal default directory here, which one should we choose
> for `default-directory'?  "~/"?  "/"?

I agree.

> If starting calendar while in a Tramp buffer is problematic for you,
> then I think the solution is to not do that, I'm afraid.

If the problem is reproducible, we shall catch it. Set tramp-verbose to
10. Next morning, when the Tramp problem has appeared, the Tramp debug
buffer shall tell us what happened. Please show the buffer.

Best regards, Michael.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-16  9:41                           ` Lars Ingebrigtsen
  2022-09-16  9:48                             ` Michael Albinus
@ 2022-09-16 10:04                             ` Gregory Heytings
  2022-09-16 14:31                               ` Sam Steingold
  2022-09-16 14:25                             ` Sam Steingold
  2 siblings, 1 reply; 42+ messages in thread
From: Gregory Heytings @ 2022-09-16 10:04 UTC (permalink / raw)
  To: Lars Ingebrigtsen
  Cc: Michael Heerdegen, 50187, Sam Steingold, Michael Albinus


>
> If starting calendar while in a Tramp buffer is problematic for you, 
> then I think the solution is to not do that, I'm afraid.
>

Or to use this, for example:

(advice-add
  'calendar :around
  (lambda (fun &rest args)
    (let ((default-directory
 	  (if (file-remote-p default-directory)
 	      "~/"
 	    default-directory)))
      (apply fun args))))





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-16  9:41                           ` Lars Ingebrigtsen
  2022-09-16  9:48                             ` Michael Albinus
  2022-09-16 10:04                             ` Gregory Heytings
@ 2022-09-16 14:25                             ` Sam Steingold
  2022-09-16 14:31                               ` Michael Albinus
  2 siblings, 1 reply; 42+ messages in thread
From: Sam Steingold @ 2022-09-16 14:25 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Michael Heerdegen, Michael Albinus, 50187

> * Lars Ingebrigtsen <ynefv@tahf.bet> [2022-09-16 11:41:48 +0200]:
>
> Sam Steingold <sds@gnu.org> writes:
>
>> `default-directory' should be remote only when there is a definite
>> reason for that (IOW, for remote files and directories),
>> it should not be inherited by non-file buffers at random.
>
> It would be a break with how Emacs has worked for decades, so I don't
> think that's something we could do in general.

;-(

> I'm not even sure we could provide a user option for this -- if we're
> not using the normal default directory here, which one should we choose
> for `default-directory'?  "~/"?  "/"?

(default-value 'default-directory)

> If starting calendar while in a Tramp buffer is problematic for you,
> then I think the solution is to not do that, I'm afraid.

1. calendar is not the only non-file-connected buffer
2. when calendar is called from midnight-hook, I cannot select which
buffer calendar starts in.

-- 
Sam Steingold (https://aphar.dreamwidth.org/) on darwin Ns 10.3.2113
https://lastingimpactpsychology.com https://steingoldpsychology.com
https://www.peaceandtolerance.org/ https://honestreporting.com
Isn't "Microsoft Works" an advertisement lie?





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-16 14:25                             ` Sam Steingold
@ 2022-09-16 14:31                               ` Michael Albinus
  0 siblings, 0 replies; 42+ messages in thread
From: Michael Albinus @ 2022-09-16 14:31 UTC (permalink / raw)
  To: Sam Steingold; +Cc: Michael Heerdegen, Lars Ingebrigtsen, 50187

Sam Steingold <sds@gnu.org> writes:

Hi Sam,

>> I'm not even sure we could provide a user option for this -- if we're
>> not using the normal default directory here, which one should we choose
>> for `default-directory'?  "~/"?  "/"?
>
> (default-value 'default-directory)

This is nil. `default-directory' has only buffer-local values.

>> If starting calendar while in a Tramp buffer is problematic for you,
>> then I think the solution is to not do that, I'm afraid.
>
> 1. calendar is not the only non-file-connected buffer

Sure. But we have catched similar errors in other packages already. And
fixed them.

> 2. when calendar is called from midnight-hook, I cannot select which
> buffer calendar starts in.

Yes. So let Tramp catch the traces, setting tramp-verbose to 10.

Best regards, Michael.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-16 10:04                             ` Gregory Heytings
@ 2022-09-16 14:31                               ` Sam Steingold
  2022-09-16 14:38                                 ` Michael Albinus
  2022-09-16 15:02                                 ` Gregory Heytings
  0 siblings, 2 replies; 42+ messages in thread
From: Sam Steingold @ 2022-09-16 14:31 UTC (permalink / raw)
  To: Gregory Heytings
  Cc: Michael Heerdegen, 50187, Lars Ingebrigtsen, Michael Albinus

> * Gregory Heytings <tertbel@urlgvatf.bet> [2022-09-16 10:04:57 +0000]:
>
>>
>> If starting calendar while in a Tramp buffer is problematic for you, then I
>> think the solution is to not do that, I'm afraid.
>>
>
> Or to use this, for example:
>
> (advice-add
>  'calendar :around
>  (lambda (fun &rest args)
>    (let ((default-directory
> 	  (if (file-remote-p default-directory)
> 	      "~/"
> 	    default-directory)))
>      (apply fun args))))

calendar is far from being the only problem.
I run this:

--8<---------------cut here---------------start------------->8---
(dolist (b (buffer-list))
  (with-current-buffer b
    (when (and (null buffer-file-name)
               (not (eq major-mode 'dired-mode))
               (not (string-match " ?\\*.*\\(tramp\\|vc\\|diff\\)" (buffer-name)))
               (find-file-name-handler default-directory 'file-remote-p))
      (message "Reset 'default-directory' in %s(%s) from %s"
               b (or buffer-file-name list-buffers-directory) default-directory)
      (setq default-directory (default-value 'default-directory))
      )))
--8<---------------cut here---------------end--------------->8---

every now and then.

-- 
Sam Steingold (https://aphar.dreamwidth.org/) on darwin Ns 10.3.2113
https://lastingimpactpsychology.com https://steingoldpsychology.com
https://jij.org https://www.memritv.org https://www.peaceandtolerance.org/
If at first you don't suck seed, try and suck another seed.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-16 14:31                               ` Sam Steingold
@ 2022-09-16 14:38                                 ` Michael Albinus
  2022-09-16 15:02                                 ` Gregory Heytings
  1 sibling, 0 replies; 42+ messages in thread
From: Michael Albinus @ 2022-09-16 14:38 UTC (permalink / raw)
  To: Sam Steingold
  Cc: Michael Heerdegen, Gregory Heytings, 50187, Lars Ingebrigtsen

Sam Steingold <sds@gnu.org> writes:

Hi Sam,

> (dolist (b (buffer-list))
>   (with-current-buffer b
>     (when (and (null buffer-file-name)
>                (not (eq major-mode 'dired-mode))
>                (not (string-match " ?\\*.*\\(tramp\\|vc\\|diff\\)" (buffer-name)))
>                (find-file-name-handler default-directory 'file-remote-p))
>       (message "Reset 'default-directory' in %s(%s) from %s"
>                b (or buffer-file-name list-buffers-directory) default-directory)
>       (setq default-directory (default-value 'default-directory))
>       )))

This works by sheer luck then. `default-directory' must not be nil; it
is fundamental that it is a string.

That code makes other packages useless for remote buffers, like shell or
compile. This cannot be the solution.

Best regards, Michael.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-16 14:31                               ` Sam Steingold
  2022-09-16 14:38                                 ` Michael Albinus
@ 2022-09-16 15:02                                 ` Gregory Heytings
  2022-09-16 16:56                                   ` Sam Steingold
  1 sibling, 1 reply; 42+ messages in thread
From: Gregory Heytings @ 2022-09-16 15:02 UTC (permalink / raw)
  To: Sam Steingold
  Cc: Michael Heerdegen, Michael Albinus, Lars Ingebrigtsen, 50187


>
> calendar is far from being the only problem.
>

That wasn't clear from the bug title and the discussion.

>
> I run this:
>
> (dolist (b (buffer-list))
>  (with-current-buffer b
>    (when (and (null buffer-file-name)
>               (not (eq major-mode 'dired-mode))
>               (not (string-match " ?\\*.*\\(tramp\\|vc\\|diff\\)" (buffer-name)))
>               (find-file-name-handler default-directory 'file-remote-p))
>      (message "Reset 'default-directory' in %s(%s) from %s"
>               b (or buffer-file-name list-buffers-directory) default-directory)
>      (setq default-directory (default-value 'default-directory))
>      )))
>
> every now and then.
>

I think you can achieve a similar effect automatically, by adding a 
function in buffer-list-update-hook that does the above on the first 
element of buffer-list.  But as Michael said you should probably not use 
nil.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-16 15:02                                 ` Gregory Heytings
@ 2022-09-16 16:56                                   ` Sam Steingold
  2022-09-16 17:13                                     ` Sam Steingold
  2022-09-16 17:26                                     ` Gregory Heytings
  0 siblings, 2 replies; 42+ messages in thread
From: Sam Steingold @ 2022-09-16 16:56 UTC (permalink / raw)
  To: Gregory Heytings
  Cc: Michael Heerdegen, Michael Albinus, Lars Ingebrigtsen, 50187

> * Gregory Heytings <tertbel@urlgvatf.bet> [2022-09-16 15:02:04 +0000]:
>
>> calendar is far from being the only problem.
>
> That wasn't clear from the bug title and the discussion.

I am pretty sure I mentioned this a few time here and elsewhere but you
don't have to track my pet peeves ;-)

>>
>> I run this:
>>
>> (dolist (b (buffer-list))
>>  (with-current-buffer b
>>    (when (and (null buffer-file-name)
>>               (not (eq major-mode 'dired-mode))
>>               (not (string-match " ?\\*.*\\(tramp\\|vc\\|diff\\)" (buffer-name)))
>>               (find-file-name-handler default-directory 'file-remote-p))
>>      (message "Reset 'default-directory' in %s(%s) from %s"
>>               b (or buffer-file-name list-buffers-directory) default-directory)
>>      (setq default-directory (default-value 'default-directory))
>>      )))
>>
>> every now and then.
>>
>
> I think you can achieve a similar effect automatically, by adding a
> function in buffer-list-update-hook that does the above on the first
> element of buffer-list.

Wow, thanks Gregory, didn't even think about it.

1. This hook seems to be called far too often; but I do not see a
`create-buffer-hook' - any reason for that? (there is a
`kill-buffer-hook')

2. It appears that I can use (current-buffer) instead of (car
(buffer-list))


> But as Michael said you should probably not use nil.

I am not sure what you mean, could you please clarify?

-- 
Sam Steingold (https://aphar.dreamwidth.org/) on darwin Ns 10.3.2113
https://lastingimpactpsychology.com https://steingoldpsychology.com
https://www.dhimmitude.org https://jihadwatch.org https://camera.org
Time would have been the best Teacher, if it did not kill all its students.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-16 16:56                                   ` Sam Steingold
@ 2022-09-16 17:13                                     ` Sam Steingold
  2022-09-16 17:30                                       ` Eli Zaretskii
  2022-09-16 17:26                                     ` Gregory Heytings
  1 sibling, 1 reply; 42+ messages in thread
From: Sam Steingold @ 2022-09-16 17:13 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: 50187

> * Sam Steingold <fqf@tah.bet> [2022-09-16 12:56:39 -0400]:
>
> Wow, thanks Gregory, didn't even think about it.

... mostly because I was still hoping for a fix in Emacs ;-(

-- 
Sam Steingold (https://aphar.dreamwidth.org/) on darwin Ns 10.3.2113
https://lastingimpactpsychology.com https://steingoldpsychology.com
https://fairforall.org https://honestreporting.com https://jihadwatch.org
Three can keep a secret if two of them are dead.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-16 16:56                                   ` Sam Steingold
  2022-09-16 17:13                                     ` Sam Steingold
@ 2022-09-16 17:26                                     ` Gregory Heytings
  2022-09-16 18:45                                       ` Sam Steingold
  1 sibling, 1 reply; 42+ messages in thread
From: Gregory Heytings @ 2022-09-16 17:26 UTC (permalink / raw)
  To: Sam Steingold
  Cc: Michael Heerdegen, 50187, Lars Ingebrigtsen, Michael Albinus

[-- Attachment #1: Type: text/plain, Size: 760 bytes --]


>
> 1. This hook seems to be called far too often; but I do not see a 
> `create-buffer-hook' - any reason for that? (there is a 
> `kill-buffer-hook')
>

It's not clear when such a hook would have to run I think.

>
> 2. It appears that I can use (current-buffer) instead of (car 
> (buffer-list))
>

Yes, that's another possibility indeed.

>> But as Michael said you should probably not use nil.
>
> I am not sure what you mean, could you please clarify?
>

The docstring says "it should be an absolute directory name", and nil is 
not an absolute directory name 😉

>
> ... mostly because I was still hoping for a fix in Emacs ;-(
>

It's not clear to me what the "fix" would be here, can you explain what 
you have in mind?

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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-16 17:13                                     ` Sam Steingold
@ 2022-09-16 17:30                                       ` Eli Zaretskii
  0 siblings, 0 replies; 42+ messages in thread
From: Eli Zaretskii @ 2022-09-16 17:30 UTC (permalink / raw)
  To: sds; +Cc: gregory, 50187

> Cc: 50187@debbugs.gnu.org
> From: Sam Steingold <sds@gnu.org>
> Date: Fri, 16 Sep 2022 13:13:50 -0400
> 
> > * Sam Steingold <fqf@tah.bet> [2022-09-16 12:56:39 -0400]:
> >
> > Wow, thanks Gregory, didn't even think about it.
> 
> ... mostly because I was still hoping for a fix in Emacs ;-(

I thought Michael asked for additional data to be collected, so he
could look into this issue?





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-16 17:26                                     ` Gregory Heytings
@ 2022-09-16 18:45                                       ` Sam Steingold
  2022-09-16 18:51                                         ` Michael Albinus
                                                           ` (2 more replies)
  0 siblings, 3 replies; 42+ messages in thread
From: Sam Steingold @ 2022-09-16 18:45 UTC (permalink / raw)
  To: Gregory Heytings
  Cc: Michael Heerdegen, 50187, Lars Ingebrigtsen, Michael Albinus

> * Gregory Heytings <tertbel@urlgvatf.bet> [2022-09-16 17:26:45 +0000]:
>
>>> But as Michael said you should probably not use nil.
>>
>> I am not sure what you mean, could you please clarify?
>>
>
> The docstring says "it should be an absolute directory name", and nil
> is not an absolute directory name 😉

Ah, right, the initial global value of `default-directory' is nil, but I do

(setq-default default-directory (expand-file-name "~/"))

>> ... mostly because I was still hoping for a fix in Emacs ;-(
>
> It's not clear to me what the "fix" would be here, can you explain
> what you have in mind?

1. `default-directory' should have a global default, see above
2. new buffers should inherit `default-directory' from the global
default instead of the previous buffer from which this one was created.

Thank you!

-- 
Sam Steingold (https://aphar.dreamwidth.org/) on darwin Ns 10.3.2113
https://lastingimpactpsychology.com https://steingoldpsychology.com
https://ffii.org https://jihadwatch.org http://think-israel.org
The more project management you do, the less likely your project is to succeed.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-16 18:45                                       ` Sam Steingold
@ 2022-09-16 18:51                                         ` Michael Albinus
  2022-09-16 19:02                                         ` Eli Zaretskii
  2022-09-16 19:30                                         ` Gregory Heytings
  2 siblings, 0 replies; 42+ messages in thread
From: Michael Albinus @ 2022-09-16 18:51 UTC (permalink / raw)
  To: Sam Steingold
  Cc: Michael Heerdegen, Gregory Heytings, 50187, Lars Ingebrigtsen

Sam Steingold <sds@gnu.org> writes:

Hi Sam,

> 1. `default-directory' should have a global default, see above

It has. It is nil, and there's nothing wrong with it.

> 2. new buffers should inherit `default-directory' from the global
> default instead of the previous buffer from which this one was created.

No. This would break many packages.

Show us the Tramp traces if calendar is called from a remote buffer. We
might be able to fix it.

> Thank you!

Best regards, Michael.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-16 18:45                                       ` Sam Steingold
  2022-09-16 18:51                                         ` Michael Albinus
@ 2022-09-16 19:02                                         ` Eli Zaretskii
  2022-09-16 19:30                                         ` Gregory Heytings
  2 siblings, 0 replies; 42+ messages in thread
From: Eli Zaretskii @ 2022-09-16 19:02 UTC (permalink / raw)
  To: sds; +Cc: michael_heerdegen, michael.albinus, gregory, 50187, larsi

> Cc: Michael Heerdegen <michael_heerdegen@web.de>, 50187@debbugs.gnu.org,
>  Lars Ingebrigtsen <larsi@gnus.org>, Michael Albinus <michael.albinus@gmx.de>
> From: Sam Steingold <sds@gnu.org>
> Date: Fri, 16 Sep 2022 14:45:25 -0400
> 
> (setq-default default-directory (expand-file-name "~/"))
> 
> >> ... mostly because I was still hoping for a fix in Emacs ;-(
> >
> > It's not clear to me what the "fix" would be here, can you explain
> > what you have in mind?
> 
> 1. `default-directory' should have a global default, see above

But using "~/" as that default is IMO wrong, as it contradicts what
expand-file-name does when default-directory is nil: it uses "/" on
Posix systems and the root of the Emacs installation on MS-Windows.
If we want default-directory to have a global default (and I'm not yet
convinced that it's a good idea), we should at least use the same
value as expand-file-name does, otherwise we'll have bugs.

> 2. new buffers should inherit `default-directory' from the global
> default instead of the previous buffer from which this one was created.

I question the validity of this assertion.  It seems to be based on a
particular class of use cases, while its effect is over-reaching.
Consider, for example, the frequent paradigm of using
with-temp-buffer.






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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-16 18:45                                       ` Sam Steingold
  2022-09-16 18:51                                         ` Michael Albinus
  2022-09-16 19:02                                         ` Eli Zaretskii
@ 2022-09-16 19:30                                         ` Gregory Heytings
  2022-09-16 21:43                                           ` Sam Steingold
  2 siblings, 1 reply; 42+ messages in thread
From: Gregory Heytings @ 2022-09-16 19:30 UTC (permalink / raw)
  To: Sam Steingold
  Cc: Michael Heerdegen, 50187, Lars Ingebrigtsen, Michael Albinus


>> It's not clear to me what the "fix" would be here, can you explain what 
>> you have in mind?
>
> 1. `default-directory' should have a global default, see above
>
> 2. new buffers should inherit `default-directory' from the global 
> default instead of the previous buffer from which this one was created.
>

That fix would break *lots* of code.  There's a good reason that the 
default value of non-file-visiting buffers is inherited from that of the 
buffer from which they were created: it is, in most cases, the 
default-directory value that is expected and useful in that buffer. 
Think of cases like occur, grep, compilation, diff, dired, and so forth. 
It is much better to manually fix the few cases in which you do not want 
to inherit its value.

What would perhaps be feasible would be to add a variable similar to 
display-buffer-alist: an alist of user-defined conditional values for 
default-directory.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-16 19:30                                         ` Gregory Heytings
@ 2022-09-16 21:43                                           ` Sam Steingold
  2022-09-17  6:20                                             ` Eli Zaretskii
  2022-09-17  6:48                                             ` Michael Albinus
  0 siblings, 2 replies; 42+ messages in thread
From: Sam Steingold @ 2022-09-16 21:43 UTC (permalink / raw)
  To: Gregory Heytings
  Cc: Michael Heerdegen, 50187, Lars Ingebrigtsen, Michael Albinus

> * Gregory Heytings <tertbel@urlgvatf.bet> [2022-09-16 19:30:28 +0000]:
>
>>> It's not clear to me what the "fix" would be here, can you explain what you
>>> have in mind?
>>
>> 1. `default-directory' should have a global default, see above
>>
>> 2. new buffers should inherit `default-directory' from the global default
>> instead of the previous buffer from which this one was created.
>
> That fix would break *lots* of code.

;-(


> Think of cases like occur, grep, compilation, diff, dired, and so
> forth. It is much better to manually fix the few cases in which you do
> not want to inherit its value.

I admit that I was sloppy in my second point.
I should have said that each emacs buffer has a natural "parent".
E.g., the initial *scratch* is like init(1), and the rest either has it
as the parent (e.g., gnus, calendar, list-packages, list-buffers) and
the rest have the parent the buffer from which it was created (like
occur, diff, and other examples you have).
It makes perfect sense for *occur* to inherit `default-directory', and
no sense for calendar.

> What would perhaps be feasible would be to add a variable similar to
> display-buffer-alist: an alist of user-defined conditional values for
> default-directory.

I would do this somewhat differently.

You are right that we have a long standing assumption that a new buffer
inherits `default-directory' from the "previous buffer" and we will
probably have to keep that.

However, we also did not have `quit-window' and `special-mode' until
relatively recently in Emacs history.
I suggest a solution similar to those.

Specifically, define a function `disinherit' (and add `disinherit'
optional argument to `get-buffer-create' et al) that would reset
`default-directory' et al to the "root" value (whatever the value would
be in *scratch* for `emacs -Q`) for the newly created buffer.

Then encourage developers to use disinherit in things like games,
calendar &c &c &c.

Thank you.

-- 
Sam Steingold (https://aphar.dreamwidth.org/) on darwin Ns 10.3.2113
https://lastingimpactpsychology.com https://steingoldpsychology.com
https://ffii.org https://camera.org https://fairforall.org
Sometimes "pain in the ass" and "headache" are synonyms.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-16 21:43                                           ` Sam Steingold
@ 2022-09-17  6:20                                             ` Eli Zaretskii
  2023-09-03  8:36                                               ` Stefan Kangas
  2022-09-17  6:48                                             ` Michael Albinus
  1 sibling, 1 reply; 42+ messages in thread
From: Eli Zaretskii @ 2022-09-17  6:20 UTC (permalink / raw)
  To: sds; +Cc: michael_heerdegen, michael.albinus, gregory, 50187, larsi

> Cc: Michael Heerdegen <michael_heerdegen@web.de>, 50187@debbugs.gnu.org,
>  Lars Ingebrigtsen <larsi@gnus.org>, Michael Albinus <michael.albinus@gmx.de>
> From: Sam Steingold <sds@gnu.org>
> Date: Fri, 16 Sep 2022 17:43:17 -0400
> 
> It makes perfect sense for *occur* to inherit `default-directory', and
> no sense for calendar.

Then "M-x calendar" should take care of setting the default-directory
of its buffer.  It cannot be done by the infrastructure, because in
many cases when a buffer is created, Emacs doesn't yet know its future
purpose.

But we are arguing about issues that might be purely academic.
Michael asked you to collect some Tramp-related data, so he could look
into what happens in this particular case.  Please provide him the
data he asked for: it could very well lead to a simple and
uncontroversial solution.

> Specifically, define a function `disinherit' (and add `disinherit'
> optional argument to `get-buffer-create' et al) that would reset
> `default-directory' et al to the "root" value (whatever the value would
> be in *scratch* for `emacs -Q`) for the newly created buffer.

The default-directory of *scratch* is the directory where you start
Emacs, so it's not a fixed directory, and I don't see how it can serve
the model for anything referenced in this discussion.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-16 21:43                                           ` Sam Steingold
  2022-09-17  6:20                                             ` Eli Zaretskii
@ 2022-09-17  6:48                                             ` Michael Albinus
  1 sibling, 0 replies; 42+ messages in thread
From: Michael Albinus @ 2022-09-17  6:48 UTC (permalink / raw)
  To: Sam Steingold
  Cc: Michael Heerdegen, Gregory Heytings, 50187, Lars Ingebrigtsen

Sam Steingold <sds@gnu.org> writes:

Hi Sam,

> Specifically, define a function `disinherit' (and add `disinherit'
> optional argument to `get-buffer-create' et al) that would reset
> `default-directory' et al to the "root" value (whatever the value would
> be in *scratch* for `emacs -Q`) for the newly created buffer.
>
> Then encourage developers to use disinherit in things like games,
> calendar &c &c &c.

The usual approach in packages, which do not want to be offended by a
remote default-directory, shall be

--8<---------------cut here---------------start------------->8---
(let ((default-directory temporary-file-directory))
   ...)
--8<---------------cut here---------------end--------------->8---

But it is up to the package to do so in its implementation.

> Thank you.

Best regards, Michael.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2022-09-17  6:20                                             ` Eli Zaretskii
@ 2023-09-03  8:36                                               ` Stefan Kangas
  2024-01-10 11:02                                                 ` Stefan Kangas
  0 siblings, 1 reply; 42+ messages in thread
From: Stefan Kangas @ 2023-09-03  8:36 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: 50187, michael_heerdegen, gregory, michael.albinus, larsi, sds

Eli Zaretskii <eliz@gnu.org> writes:

>> Cc: Michael Heerdegen <michael_heerdegen@web.de>, 50187@debbugs.gnu.org,
>>  Lars Ingebrigtsen <larsi@gnus.org>, Michael Albinus <michael.albinus@gmx.de>
>> From: Sam Steingold <sds@gnu.org>
>> Date: Fri, 16 Sep 2022 17:43:17 -0400
>>
>> It makes perfect sense for *occur* to inherit `default-directory', and
>> no sense for calendar.
>
> Then "M-x calendar" should take care of setting the default-directory
> of its buffer.  It cannot be done by the infrastructure, because in
> many cases when a buffer is created, Emacs doesn't yet know its future
> purpose.
>
> But we are arguing about issues that might be purely academic.
> Michael asked you to collect some Tramp-related data, so he could look
> into what happens in this particular case.  Please provide him the
> data he asked for: it could very well lead to a simple and
> uncontroversial solution.

We seem to need more information here to make any progress.  Without
that information, I don't think it makes sense to keep this bug open.

Sam, could you please try to collect the information that Michael has
asked for?  Thanks in advance.





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

* bug#50187: 28.0.50; tramp is called from calendar
  2023-09-03  8:36                                               ` Stefan Kangas
@ 2024-01-10 11:02                                                 ` Stefan Kangas
  0 siblings, 0 replies; 42+ messages in thread
From: Stefan Kangas @ 2024-01-10 11:02 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: michael_heerdegen, gregory, michael.albinus, 50187-done, larsi,
	sds

Stefan Kangas <stefankangas@gmail.com> writes:

> Eli Zaretskii <eliz@gnu.org> writes:
>
>>> Cc: Michael Heerdegen <michael_heerdegen@web.de>, 50187@debbugs.gnu.org,
>>>  Lars Ingebrigtsen <larsi@gnus.org>, Michael Albinus <michael.albinus@gmx.de>
>>> From: Sam Steingold <sds@gnu.org>
>>> Date: Fri, 16 Sep 2022 17:43:17 -0400
>>>
>>> It makes perfect sense for *occur* to inherit `default-directory', and
>>> no sense for calendar.
>>
>> Then "M-x calendar" should take care of setting the default-directory
>> of its buffer.  It cannot be done by the infrastructure, because in
>> many cases when a buffer is created, Emacs doesn't yet know its future
>> purpose.
>>
>> But we are arguing about issues that might be purely academic.
>> Michael asked you to collect some Tramp-related data, so he could look
>> into what happens in this particular case.  Please provide him the
>> data he asked for: it could very well lead to a simple and
>> uncontroversial solution.
>
> We seem to need more information here to make any progress.  Without
> that information, I don't think it makes sense to keep this bug open.
>
> Sam, could you please try to collect the information that Michael has
> asked for?  Thanks in advance.

More information was requested, but none was given within 4 months, so
I'm closing this bug.

If this is still an issue, please reply to this email (use "Reply to
all" in your email client) and we can reopen the bug report.





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

end of thread, other threads:[~2024-01-10 11:02 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-08-24 15:06 bug#50187: 28.0.50; tramp is called from calendar Steingold
2022-08-22 14:28 ` Lars Ingebrigtsen
2022-08-22 16:18   ` Sam Steingold
2022-08-23  2:11     ` Michael Heerdegen
2022-08-23  2:18     ` Michael Heerdegen
2022-08-23  2:47       ` Sam Steingold
2022-08-23  3:24         ` Michael Heerdegen
2022-08-23  3:39           ` Sam Steingold
2022-08-23  4:00             ` Michael Heerdegen
2022-08-23  7:30   ` Michael Albinus
2022-08-23 10:00     ` Lars Ingebrigtsen
2022-08-23 19:13       ` Michael Heerdegen
2022-08-23 19:29         ` Lars Ingebrigtsen
2022-08-23 23:09           ` Michael Heerdegen
2022-09-12 18:49             ` Sam Steingold
2022-09-13  2:14               ` Michael Heerdegen
2022-09-13 14:29                 ` Sam Steingold
2022-09-14  2:54                   ` Michael Heerdegen
2022-09-14 18:57                     ` Sam Steingold
2022-09-15 10:36                       ` Michael Heerdegen
2022-09-15 16:10                         ` Sam Steingold
2022-09-16  9:41                           ` Lars Ingebrigtsen
2022-09-16  9:48                             ` Michael Albinus
2022-09-16 10:04                             ` Gregory Heytings
2022-09-16 14:31                               ` Sam Steingold
2022-09-16 14:38                                 ` Michael Albinus
2022-09-16 15:02                                 ` Gregory Heytings
2022-09-16 16:56                                   ` Sam Steingold
2022-09-16 17:13                                     ` Sam Steingold
2022-09-16 17:30                                       ` Eli Zaretskii
2022-09-16 17:26                                     ` Gregory Heytings
2022-09-16 18:45                                       ` Sam Steingold
2022-09-16 18:51                                         ` Michael Albinus
2022-09-16 19:02                                         ` Eli Zaretskii
2022-09-16 19:30                                         ` Gregory Heytings
2022-09-16 21:43                                           ` Sam Steingold
2022-09-17  6:20                                             ` Eli Zaretskii
2023-09-03  8:36                                               ` Stefan Kangas
2024-01-10 11:02                                                 ` Stefan Kangas
2022-09-17  6:48                                             ` Michael Albinus
2022-09-16 14:25                             ` Sam Steingold
2022-09-16 14:31                               ` Michael Albinus

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).