Subject: bug#6799: 24.0.50; Please add dired-details.el to Emacs [patch]

From: Stefan Monnier <[email-masked]>
Date: Mon, 11 Feb 2013 12:58:30 -0500

>> I'm not sure what this shows: I get a buffer with two visible lines
>> ("Header" and "Stuff"); case 0 moves point to just before "Stuff" and
>> so does case 1, and both seem right to my understanding of the code
>> you provided.
> Emacs behaves correctly.  (forward-line -1) is executed but the point
> does not move across one visible line.

I'm sorry if I'm maybe a bit dense, but I don't understand what
you're saying.  Please be more specific (and feel free to use
a concrete example from dired-details rather than from your test case).

I especially don't understand because IIUC dired-details only ever hides
parts of a line (i.e. it never hides an LF) and it never hides the
filename itself, so it neither affects what (forward-char arg) should
do nor what (dired-move-to-filename) should do and after those two, the
cursor should be placed in a visible spot, so there's no need to move
the cursor.

> Is there any reason for locate-filename-indentation to be 4 rather than
> 2 by default?

I have no idea, sorry.

> Other than that, dired-hide-details-mode it is a no-op in locate-mode
> buffers.

Then let's not do anything special for locate-mode.

BTW, I saw another detail in your code that should be improved:

+    (define-key map [menu-bar immediate unhide-details]
+      '(menu-item "UnHide Details" dired-hide-details-mode
+		  :help "Unhide details in buffer"
+		  :visible dired-hide-details-mode))
+    (define-key map [menu-bar immediate hide-details]
+      '(menu-item "Hide Details" dired-hide-details-mode
+		  :help "Hide details in buffer"
+		  :visible (not dired-hide-details-mode)))

this should use a single entry with a toggle box.  Example from the
elisp manual:

          (menu-item "Debug on Error" toggle-debug-on-error
                     :button (:toggle
                              . (and (boundp 'debug-on-error)
                                     debug-on-error)))

>>> Locate buffers are not real dired buffer.  locate-mode is an
>>> independent major mode whose keymap derives from dired-mode-map.
>>> locate runs dired-mode-hook despite the current buffer not being
>>> derived from dired-mode.
>> Indeed, it looks messy: it runs dired-mode-hook but not from
>> locate-mode.  Of course, part of it is because dired-mode is still not
>> written as a proper mode function (e.g. it requires a `dir' argument),
>> so locate can't use it to derive from it.
> Could we set the derived-mode-parent property of locate-mode to
> dired-mode?  One way or another, (derived-mode-p 'dired-mode) should
> return non-nil in locate-mode buffers.

That sounds right, yes.

>> I was thinking of virtual-dired (in dired-x), vc-dired (which doesn't
>> exist any more in Emacs, but there might still be similar thingies out
>> there), ...
> As long as these modes use dired-insert-set-properties in the way it is
> meant to be there should not be a problem.

OK, great.  Then feel free to install at your convenience (with a note
in etc/NEWS as well),

        Stefan