I want to write a function that does one thing if erc is running and starts erc (using command
erc) if not.
I tried to write it myself, but I couldn't find out how to check if erc is running. How can I do this in elisp?
Emacs Stack Exchange is a question and answer site for those using, extending or developing Emacs. It only takes a minute to sign up.Sign up to join this community
There are two aspects: is there an
erc process running in the buffer? and if there is such a process, is there an established network connection to the server?
If you look in
erc.el, you will see how
erc itself determines the process status to add to the mode line (line 6438 in the file):
... (let ( ... (process-status (cond ((and (erc-server-process-alive) (not erc-server-connected)) ":connecting") ((erc-server-process-alive) "") (t ": CLOSED")))
IOW, it uses the function
erc-server-process-alive to check whether the process is alive and the value of the variable
erc-server-connected to see if it is connected to the server: if it is alive but not connected to the server, it reports "connecting"; else if it is alive, it reports nothing (i.e. everything is good); else it reports "CLOSED".
You should check the doc strings of the function above (
C-h f erc-server-process-alive) and the variable (
C-h v erc-server-connected) and read them carefully, but this should allow you to determine the state of