Subject: bug#71200: closed (Re: bug#71200: TRAMP: Trying to do a project-find-file or (find-directory) using the podman method causes a (wrong-type-argument stringp nil) error)

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 29 May 2024 17:02:02 +0000

Your bug report

#71200: TRAMP: Trying to do a project-find-file or (find-directory) using the podman method causes a (wrong-type-argument stringp nil) error

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
71200: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=71200
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#71200: TRAMP: Trying to do a project-find-file or (find-directory) using the podman method causes a (wrong-type-argument stringp nil) error
From: Michael Albinus <[email-masked]>
To: alexis purslane <[email-masked]>
Cc: Dmitry Gutov <[email-masked]>, "[email-masked]" <[email-masked]>
Date: Wed, 29 May 2024 19:01:22 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Version: 30.1

alexis purslane <[email-masked]> writes:

Hi Alexis,

[you've removed the Cc again :-( ]

> I really apologize for not checking this earlier, but it didn't occur
> to me to test this, it came up naturally: if you try to enter a
> distrobox that doesn't exist, Emacs will hang and peg one CPU until
> you hit C-g. But yes I think this bug can be closed for sure

Well, I don't believe it is up to Tramp to check it. For all
container-based methods it is requested that the respective container
is running. In case of toolbox and distrobox, it is sufficient that the
container is created. If not running, it is started then.

Like the other Tramp methods, distrobox offers host name
completion. Typing "C-x C-f /distrobox: TAB" will show you existing
containers.

And yes, closing the bug. Feel free to report further problems. But
likely they won't fit to the scope of this bug report; a new bug report
would be better I believe.

Best regards, Michael.

Subject: TRAMP: Trying to do a project-find-file or (find-directory) using the podman method causes a (wrong-type-argument stringp nil) error
From: alexis purslane <[email-masked]>
To: "[email-masked]" <[email-masked]>
Date: Sun, 26 May 2024 00:12:45 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

As the the title says, whenever I try to do project-find-* on a project that uses the podman TRAMP method, it spits out an error and otherwise does nothing. Here's the backtrace:

```
Debugger entered--Lisp error: (wrong-type-argument stringp nil)
  split-string(nil "\0" t)
  project--vc-list-files("/podman:development:~/Development/embryo-engine/" Git nil)
  #f(compiled-function (dir) #<bytecode -0x443eb4e00f15eb4>)("/podman:development:~/Development/embryo-engine/")
  mapcan(#f(compiled-function (dir) #<bytecode -0x443eb4e00f15eb4>) ("/podman:development:~/Development/embryo-engine/"))
  #f(compiled-function (project &optional dirs) #<bytecode 0xe73db4877a27b8>)((vc Git "/podman:development:~/Development/embryo-engine/") ("/podman:development:~/Development/embryo-engine/"))
  apply(#f(compiled-function (project &optional dirs) #<bytecode 0xe73db4877a27b8>) (vc Git "/podman:development:~/Development/embryo-engine/") ("/podman:development:~/Development/embryo-engine/"))
  project-files((vc Git "/podman:development:~/Development/embryo-engine/") ("/podman:development:~/Development/embryo-engine/"))
  project-find-file-in(nil ("/podman:development:~/Development/embryo-engine/") (vc Git "/podman:development:~/Development/embryo-engine/") nil)
  project-find-file()
  #<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_62>("/podman:development:~/Development/embryo-engine/")
  funcall(#<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_62> "/podman:development:~/Development/embryo-engine/")
  (lambda (&rest _) (funcall (dashboard-projects-backend-switch-function) (dashboard-expand-path-alist "0|/podman:development:~/Development/embryo-engine/" dashboard-projects-alist)))((item :tag #(" /podman:development:~/Development/embryo-engine/" 0 1 (rear-nonsticky t display (raise 0.01) font-lock-face (:family "Symbols Nerd Font Mono" :height 1.0) face (:family "Symbols Nerd Font Mono" :height 1.0))) :action (lambda (&rest _) (funcall (dashboard-projects-backend-switch-function) (dashboard-expand-path-alist "0|/podman:development:~/Development/embryo-engine/" dashboard-projects-alist))) :button-face dashboard-items-face :mouse-face highlight :button-prefix "" :button-suffix "" :format "%[%t%]" :button-overlay #<overlay from 706 to 756 in *dashboard*> :from #<marker (moves after insertion) at 706 in *dashboard*> :to #<marker at 756 in *dashboard*>) nil)
  widget-apply-action((item :tag #(" /podman:development:~/Development/embryo-engine/" 0 1 (rear-nonsticky t display (raise 0.01) font-lock-face (:family "Symbols Nerd Font Mono" :height 1.0) face (:family "Symbols Nerd Font Mono" :height 1.0))) :action (lambda (&rest _) (funcall (dashboard-projects-backend-switch-function) (dashboard-expand-path-alist "0|/podman:development:~/Development/embryo-engine/" dashboard-projects-alist))) :button-face dashboard-items-face :mouse-face highlight :button-prefix "" :button-suffix "" :format "%[%t%]" :button-overlay #<overlay from 706 to 756 in *dashboard*> :from #<marker (moves after insertion) at 706 in *dashboard*> :to #<marker at 756 in *dashboard*>) nil)
  widget-button-press(706)
  evil-ret-gen(nil nil)
  evil-ret(nil)
  funcall-interactively(evil-ret nil)
  command-execute(evil-ret)
```

I have a weird little snippet of code to fix it, and a sort-of analysis of what I think is wrong, here: https://gist.github.com/alexispurslane/890ea9971787c979f8c59c8decf132c4. However, this fix is half-baked currently.

Here's my emacs info:

```
Basic Info: 

GNU Emacs 29.3 (build 1, x86_64-redhat-linux-gnu, GTK+ Version
3.24.41, cairo version 1.18.0) of 2024-04-25

Build Flags:
"--build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --runstatedir=/run --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-cairo --with-dbus --with-gif --with-gpm=no --with-harfbuzz --with-jpeg --with-json --with-modules --with-native-compilation=aot --with-pgtk --with-png --with-rsvg --with-sqlite3 --with-tiff --with-tree-sitter --with-webp --with-xpm --with-xwidgets build_alias=x86_64-redhat-linux-gnu host_alias=x86_64-redhat-linux-gnu CC=gcc 'CFLAGS=-DMAIL_USE_LOCKF -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer ' LDFLAGS=-Wl,-z,relro PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig CXX=g++ 'CXXFLAGS=-O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer '"
```

This seems like it is probably a bug, and not just user error, so I hope this helps.

Don't hesitate to let me know if you need more info.