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

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

RE: To Drew Adams?: `dired-get-marked-files' returns error when not onfi


From: Drew Adams
Subject: RE: To Drew Adams?: `dired-get-marked-files' returns error when not onfile
Date: Tue, 6 Jul 2010 14:10:05 -0700

> I have the impression `dired-get-marked-files' should return 
> nil instead signal an error (or at least parameterised) when
> I am in dired buffer and I am pointing on empty line after all files.
> 
> why? because how can I handle such situation cleanly in elisp code?

In both Dired+ and vanilla Emacs, `dired-get-marked-files' raises an error in
this case.  It calls `dired-get-filename', which raises the error because there
is no file listed on that line.

Your question is how to "handle such a situation".  But it's not clear what you
mean.  What is it that you are trying to do?

Your code can test whether there is a file on the current line in one of these
ways, depending on whether you want to consider `.' and `..' as file names (see
the doc of `dired-get-filename'):

1. Call (dired-get-filename nil 'NO-ERROR-IF-NOT-FILEP)
2. Call `dired-get-filename' inside `condition-case':

(condition-case nil (dired-get-filename) (error nil))

You can also suppress the error in `dired-get-marked-files' and instead return
nil, by wrapping that in `condition-case' the same way.  

(defun my-dired-get-marked-files
 (&optional localp arg filter distinguish-one-marked)
 "Mine."
  (condition-case nil
      (dired-get-marked-files localp arg filter
                              distinguish-one-marked)
    (error nil)))

However, the particular error you are concerned about is not distinguished from
any other errors this way: any error condition here will return nil instead of
raising an error.




reply via email to

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