emacs-devel
[Top][All Lists]
Advanced

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

Re: list-threads


From: Eli Zaretskii
Subject: Re: list-threads
Date: Mon, 30 Jul 2018 17:59:26 +0300

> From: Gemini Lasswell <address@hidden>
> Date: Sat, 28 Jul 2018 18:11:51 -0700
> 
> I've just pushed a commit to scratch/list-threads which might be useful
> to those of you working with threads in Emacs. There is a new command
> 'list-threads' which produces a tabulated list buffer showing the
> currently live threads with their status, sets a timer to keep it
> refreshed, and provides two commands, 's q' and 's e' for sending quit
> and error signals, respectively, to the thread at point.

Thanks, please see some comments below.

> Next up I'm going to see if my rusty C skills are up to adding a
> 'thread' argument to the backtrace primitives, to make it possible to
> generate a backtrace for any thread from the thread list buffer.

You mean, take a backtrace while the target thread is waiting to run?

Here are the comments to your branch:

> +++ b/lisp/emacs-lisp/thread-list.el

I'm not sure this file should be called thread-list.el, nor that it
should be in emacs-lisp/.  I think it should be under lisp/, and
should be the home for all thread-related features implemented in
Lisp.

> +(defun thread-list--timer-func (buf)
> +  "Revert BUF and set a timer to do it again."

Suggest to rename the argument BUFFER, then the doc string will be
more clear, IMO.

> +(defun thread-list--get-entries ()
> +  "Return tabulated list entries for the threads currently active."

"for the currently active threads".

Actually, I'd use "live", not "active", because they really aren't (or
else the definition of "active" in this case could confuse users).

> +Return a list of two strings, the first describing THREAD's
> +status and the second describing what it is blocked on if it is
> +blocked."

I'd rephrase:

  Return a list of two strings: one describing THREAD's status,
  the other describing THREAD's blocker, if any.

> +(defun thread-list--send-signal (sgnl)
> +  "Send the signal SGNL to the thread at point.

I'd use

  Send the specified SIGNAL to the thread at point.

> +Confirm with the user first."

"Ask for user confirmation before signaling the thread."

> +  (let ((thread (tabulated-list-get-id)))
> +    (when (and (threadp thread) (thread-alive-p thread))
> +      (when (y-or-n-p (format "Send %s signal to %s? " sgnl thread))
> +        (when (and (threadp thread) (thread-alive-p thread))
> +          (thread-signal thread sgnl nil))))))

This silently does nothing if the thread is no longer alive.  I'd
suggest some echo-area message to that effect.

Finally, this needs NEWS entry and a short description for the user
manual.



reply via email to

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