Subject: Re: bug#75983: project crash, file-name-directory "~", file-equal-p nil

From: Eli Zaretskii <[email-masked]>
Date: Sat, 01 Feb 2025 10:50:21 +0200

> From: Ship Mints <[email-masked]>
> Date: Fri, 31 Jan 2025 19:10:47 -0500
> 
> The behaviors below can be seen on 29, 30, 31 (I don't have an earlier Emacs to test but these issues
> probably are long-standing). Let's discuss these as I suspect there may be historical reasons for these
> behaviors that I'm unaware of, or maybe these are legitimate, even if old. It's also possible that I'm
> misunderstanding something.

Thanks, but please don't mix separate issues in the same bug report.
If you think file-name-directory has a bug (I disagree), please report
a separate bug against file-name-directory.  If you think file-equal-p
should accept nil as its argument (I'm not sure I will agree, but
maybe you will convince), please report a separate feature-request bug
about that function.

> Issue 3:
> 
> project-forget-projects-under crashes when `project-list-file' contains "/home/username", which appears in
> my remembered project list.

It doesn't crash, it signals an error.  Crashing means the entire
Emacs session goes down in flames.

> (defun project--read-project-list ()
> ...
>    (abbreviate-file-name name) ; converts "/home/username" to "~"
> 
> (defun project-forget-projects-under ()
> ...
>       (dolist (proj (project-known-project-roots))
>         (when (file-equal-p (file-name-directory proj) dir) ; <--- boom on nil
> 
> I'm happy to submit patches for any or all of these including guarding project-forget-projects-under to check
> for nil and/or amending project--read-project-list to convert "~" to "~/" as workarounds, with each submitted
> against a discrete bug number.

I think this should be solved in project.el, but let's hear what
Dmitry (CC'ed) thinks.