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

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

bug#64897: 29.0.91; Bug (and patch) in find-dired-with-command


From: Warren Lynn
Subject: bug#64897: 29.0.91; Bug (and patch) in find-dired-with-command
Date: Thu, 27 Jul 2023 10:24:37 -0400

On Linux. When I call "find-name-dired" command, which in turn invokes "find-dired-with-command" function, in a multi-hop tramp remote directory, an error will occur in side the function, with backtrace (only shown lowest level):

Debugger entered--Lisp error: (wrong-type-argument processp nil)
  process-mark(nil)
  (move-marker (process-mark proc) (point) (current-buffer))

The issue is around this part of the code:

    ;; Start the find process.    
    (shell-command (concat command "&") (current-buffer))
    (let ((proc (get-buffer-process (current-buffer)))) ;; !!!!!!!! proc could be nil here !!!!!!!!!!
      ;; Initialize the process marker; it is used by the filter.
      (move-marker (process-mark proc) (point) (current-buffer))

After changing the code to:

    ;; Start the find process.
    (let ((proc (shell-command (concat command "&") (current-buffer))))
      ;; Initialize the process marker; it is used by the filter.
      (move-marker (process-mark proc) (point) (current-buffer))

I do not have the error any more.

However, I observe that even with my fix above, the behavior is not completely right. Sometimes, the (found) file entries appear before the dired buffer header line. My impression of the code is it does not handle asynchronous timing in a robust way, and that is more of a problem when the command is invoked from a remote directory. Probably some serious revamp is needed here, which is beyond my expertise. Maybe Emacs should include the "aio" package and rely on that for asynchronous event handling.


reply via email to

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