help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Adding an `or condition without changing code


From: Stefan Monnier
Subject: Re: Adding an `or condition without changing code
Date: Mon, 13 Jan 2020 09:37:51 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)

> I'm implementing dired-single-buffer
>
> The function of the same name has the following `let initialization
>
> (let ((name (or default-dirname (dired-get-filename nil t)))) ;;
>  default-dirname is an optional argument to dired-single-buffer
>
> The two conditions to `or are not sufficient if I call dired-single-buffer
> from an unvisited buffer. The result is that `name is nil and a string-p,
> nil error is thrown.
>
> A simple hack is to add a third condition to `or
>
> (let ((name (or default-dirname (dired-get-filename nil t) "~/")))  ;;
>  fall-back to /home/user

I guess using `default-directory` rather than "~" would be more
generally useful.

> But, it IS a hack and means I have altered some good citizen's code.

Indeed.  Luckily Emacs does make it possible to do that.

> How can that be resolved? Might the solution be a customization of dired?

I think it should be considered as a bug in `dired-single-buffer`.

> From the documentation of dired-get-filename I don't grok a solution....

You can only meaningfully use `dired-get-filename` inside
a dired buffer, so the problem is in that function.


        Stefan




reply via email to

[Prev in Thread] Current Thread [Next in Thread]