jwiegley / emacs-async

Simple library for asynchronous processing in Emacs
GNU General Public License v3.0
828 stars 68 forks source link

Dired buffers don't update after the async move is completed. #99

Closed DavidCogen closed 6 years ago

DavidCogen commented 6 years ago

I installed emacs-async because I thought it would help me with dired mode. I often move or copy huge files there and the freeze was annoying. I thought async mode would help.

But the dired buffers dont update after the async operation is complete. The source buffer still shows the file that I moved and the destination buffer doesn't show the moved file.

(Until I manually refresh the dired buffers, that is.)

Because of this limitation, I don't see how this async dired mode will be useful for me. I end up waiting until the async operation completes so I can refresh the dired buffers to make them consistent again.

I hope you will be able to add this capability. Until then, I'll do most of my big file copies outside of emacs, or issue an asynchronous shell command.

thierryvolpiatto commented 6 years ago

Done.

Note: You have better time using helm to manage your file tasks to avoid all these flying dired buffers.

DavidCogen commented 6 years ago

Hmm.. Seems not to work consistently. I mark a file and use R to move it, with both the source and destination dired buffers visible. Either one or neither of the dired buffers are updated after the move completes; never both. I can't seem to pin down the behavior though; it seems to vary.

basil-conto commented 6 years ago

FWIW, there is also the user option dired-auto-revert-buffer. Quoth (emacs) Dired Updating:

   If you use ‘C-x d’ or some other Dired command to visit a directory
that is already being shown in a Dired buffer, Dired switches to that
buffer but does not update it.  If the buffer is not up-to-date, Dired
displays a warning telling you to type ‘g’ to update it.  You can also
tell Emacs to revert each Dired buffer automatically when you revisit
it, by setting the variable ‘dired-auto-revert-buffer’ to a non-‘nil’
value.

Quoth its docstring:

dired-auto-revert-buffer is a variable defined in ‘dired.el’.
Its value is nil

Documentation:
Automatically revert Dired buffer on revisiting.
If t, revisiting an existing Dired buffer automatically reverts it.
If its value is a function, call this function with the directory
name as single argument and revert the buffer if it returns non-nil.
Otherwise, a message offering to revert the changed dired buffer
is displayed.
Note that this is not the same as ‘auto-revert-mode’ that
periodically reverts at specified time intervals.

You can customize this variable.

This variable was introduced, or its default value was changed, in
version 23.2 of Emacs.
thierryvolpiatto commented 6 years ago

@basil-conto Thanks but dired-auto-revert-buffer have nothing to do with this change, it should update dired buffers with or without this variable enabled.

@DavidCogen I can't reproduce, it is working fine here with same recipe, please check your installation, I hardly see how it could not work.

basil-conto commented 6 years ago

@thierryvolpiatto Sure, hence the "FWIW", i.e. in case some user finds it useful.