From: Harald Judt <h.judt@gmx.at>
To: emacs-devel@gnu.org
Subject: Re: [ELPA] New package: dired-duplicates
Date: Tue, 31 Oct 2023 22:05:12 +0100 [thread overview]
Message-ID: <c0bc1c40-634d-479d-ab58-1d2924b11000@gmx.at> (raw)
In-Reply-To: <875y2nugm8.fsf@posteo.net>
[-- Attachment #1.1: Type: text/plain, Size: 5246 bytes --]
Hi,
On 2023-10-31 13:21, Philip Kaludercic wrote:
[...]
> Sure, I can take care of adding the package to the archive, you'll only
> have to bump the "Version" header when you want the package to be
> released (and in the future as well, the commit that touches the
> "Version" header triggers a new release).
>
> In the meantime, here is some quick and superficial feedback on the code:
Great news! Thank you for your feedback, I'll try to incorporate it and push
the changes to the package git repository soon. Though I have a few questions
understanding some of this:
> diff --git a/dired-duplicates.el b/dired-duplicates.el
> index d62af02..4af37a3 100644
> --- a/dired-duplicates.el
> +++ b/dired-duplicates.el
> @@ -54,7 +54,6 @@
> (defcustom dired-duplicates-separate-results
> t
> "Boolean value indicating whether to separate results with new-lines."
> - :group 'dired-duplicates
[...]
Why should I not use :group for customization? I thought this makes it easier
to explore customization?
> @@ -103,21 +98,22 @@ return boolean t if the file matches a criteria, otherwise nil."
>
> The executable used is defined by `dired-duplicates-checksum-exec'."
> (let* ((default-directory (file-name-directory (expand-file-name file)))
> - (exec (executable-find dired-duplicates-checksum-exec t)))
> + (exec (executable-find dired-duplicates-checksum-exec t))
> + (file (expand-file-name (file-local-name file))))
> (unless exec
> - (user-error "Checksum program %s not found in exec-path" exec))
> - (car (split-string
> - (shell-command-to-string
> - (concat exec " \"" (expand-file-name (file-local-name file)) "\""))
> - nil
> - t))))
> + (user-error "Checksum program %s not found in `exec-path'" exec))
> + (with-temp-buffer
> + (unless (zerop (call-process exec nil t nil file))
> + (error "Failed to start checksum program %s" exec))
> + (goto-char (point-min))
> + (if (looking-at "\\`[[:alnum:]]+")
> + (match-string 0)
> + (error "Unexpected output from checksum program %s" exec)))))
Yeah, good idea to improve the error handling.
[...]
> (defun dired-duplicates--find-and-filter-files (directories)
> "Search below DIRECTORIES for duplicate files.
> @@ -140,14 +136,14 @@ duplicate files as values."
> (append (gethash size same-size-table) (list f)))
> finally
> (cl-loop for same-size-files being the hash-values in same-size-table
> - if (> (length same-size-files) 1) do
> + if (> (length same-size-files) 1) do ;see length>
> (cl-loop for f in same-size-files
> for checksum = (dired-duplicates-checksum-file f)
> do (setf (gethash checksum checksum-table)
> (append (gethash checksum checksum-table) (list f)))))
> (cl-loop for same-files being the hash-value in checksum-table using (hash-key checksum)
> do
> - (if (> (length same-files) 1)
> + (if (cdr same-files) ;(> (length same-files) 1) in O(1)
> (setf (gethash checksum checksum-table)
> (cons (file-attribute-size (file-attributes (car same-files)))
> (sort same-files #'string<)))
Nice to know. Though I find length> more readable, I'll use cdr since I also
use car ;-)
> @@ -180,7 +176,6 @@ Currently, this simply adds a new-line after each results group."
> for len in lengths
> do
> (forward-line len)
> - ;; (forward-line len)
> (let ((inhibit-read-only t))
> (beginning-of-line)
> (unless (= (point) (point-max))
Thanks, I wonder how I have not noticed this.
> @@ -225,7 +220,7 @@ This is the same as `dired-do-flagged-delete', but calls
>
> (defvar dired-duplicates-map
> (let ((map (make-sparse-keymap)))
> - ;; workaround for Emacs bug #57565
> + ;; workaround for Emacs bug#57565
> (when (< emacs-major-version 29)
> (define-key map (kbd "x") 'dired-duplicates--do-flagged-delete)
> (define-key map (kbd "D") 'dired-duplicates--do-delete))
> @@ -248,7 +243,7 @@ The results will be shown in a Dired buffer."
> default-directory)))
> (unless directories
> (user-error "Specify one or more directories to search in"))
> - (let* ((directories (if (listp directories) directories (list directories)))
> + (let* ((directories (if (listp directories) directories (list directories))) ;see `ensure-list'
`ensure-list' would bump emacs requirements to 28.1 or require compat hence I
did not use it.
[...]
Thanks for the review and your suggestions.
Regards,
Harald
--
`Experience is the best teacher.'
PGP Key ID: 4FFFAB21B8580ABD
Fingerprint: E073 6DD8 FF40 9CF2 0665 11D4 4FFF AB21 B858 0ABD
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
next prev parent reply other threads:[~2023-10-31 21:05 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-31 10:34 [ELPA] New package: dired-duplicates Harald Judt
2023-10-31 12:21 ` Philip Kaludercic
2023-10-31 21:05 ` Harald Judt [this message]
2023-11-01 2:14 ` Michael Heerdegen
2023-11-01 15:16 ` [External] : " Drew Adams
2023-11-01 15:45 ` Eli Zaretskii
2023-11-01 16:28 ` Drew Adams
2023-11-01 16:47 ` Eli Zaretskii
2023-11-01 16:33 ` Philip Kaludercic
2023-11-01 11:32 ` Philip Kaludercic
2023-11-01 20:04 ` Harald Judt
2023-11-01 21:29 ` Philip Kaludercic
2023-11-02 8:44 ` Harald Judt
2023-11-03 8:19 ` Philip Kaludercic
2023-11-03 20:19 ` Harald Judt
2023-11-04 15:27 ` Philip Kaludercic
2023-11-06 9:33 ` Harald Judt
2023-11-10 8:37 ` Philip Kaludercic
2023-11-10 10:02 ` Harald Judt
2023-11-23 6:12 ` Philip Kaludercic
2023-10-31 21:24 ` Harald Judt
2023-11-01 17:40 ` Stefan Kangas
2023-11-01 3:30 ` Eli Zaretskii
2023-11-01 13:53 ` Visuwesh
2023-11-01 14:12 ` Eli Zaretskii
2023-11-01 17:57 ` Philip Kaludercic
2023-11-01 19:24 ` Eli Zaretskii
2023-11-01 20:09 ` Harald Judt
2023-11-02 5:55 ` Eli Zaretskii
2023-11-08 20:29 ` Harald Judt
2023-11-09 5:52 ` Eli Zaretskii
2023-11-09 8:00 ` Harald Judt
2023-11-09 8:38 ` tomas
2023-11-09 8:48 ` Eli Zaretskii
2023-11-09 8:43 ` Eli Zaretskii
2023-11-09 8:53 ` tomas
2023-11-09 9:18 ` Harald Judt
2023-11-09 14:52 ` Harald Judt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c0bc1c40-634d-479d-ab58-1d2924b11000@gmx.at \
--to=h.judt@gmx.at \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.