0

I've started a jupyter kernel form emacs-jupyter. I'd like to get the process id for the python process associated with the buffer so that I can attach a debugger to it. How can I do this in elisp?

1

1 Answer 1

0

Something like this:

(process-id (get-buffer-process (current-buffer))) 

should do it. You can replace the call to current-buffer by some other means of identifying the buffer of interest, and you should probably check that the result of get-buffer-process is not nil.

5
  • Thanks for the response. This was my first try, but get-buffer-process returns nil. I don't understand because there is clearly a python process associated with the buffer (jupyter kernel). Commented May 18, 2021 at 18:15
  • If get-buffer-process returns nil, then there is no process associated with the buffer (if you kill the buffer with C-x k, it asks for confirmation if there is a process associated with the buffer - that's what happens e.g. when you start a shell with M-x shell and then try to kill the *shell* buffer - does it do that if you try to kill the jupyter-kernel buffer?) You might have to delve a bit deeper into what emacs-jupyter does to figure out what process is associated with what buffer. Commented May 18, 2021 at 18:32
  • It suggests Jupyter REPL (*jupyter-repl[python 3.9.4]*<2>) still connected. Kill it? (y or n) when I kill the buffer. So I would think there is a process associated with the buffer. I did browse the emacs-jupyter code a bit, but unfortunately I am not an elisp expert. Commented May 18, 2021 at 18:55
  • 1
    Since the error mentions jupyter-repl and get-buffer-process returns nil, I checked and indeed, the error originates from that source file: github.com/nnicandro/emacs-jupyter/blob/master/… You're correct, there must be a process that Emacs is communicating with. Looking through the same file shows that the REPL start process uses jupyter-kernel-process-manager, of which there is also a source file. That's where you can find the Emacs process handle. Hopefully that helps. Commented May 19, 2021 at 13:16
  • 1
    This line looks promising: github.com/nnicandro/emacs-jupyter/blob/… I'd throw a message statement in there or jump in a debugger to see what the kernel object looks like. (Of course, you could track down its definition and see if there's a slot (i.e. attribute) for what you want). There is also something called jupyter--debug referenced in the code; that might have the info you need or give a hint at how to get it. Commented May 19, 2021 at 13:23

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.