(defcustom lurk-nick "plugd"
"Default nick.")
-(defcustom lurk-full-name "plugd"
- "Default full name.")
-(defcustom lurk-user-name "plugd"
- "Default user name.")
+
+(defcustom lurk-default-quit-msg "Bye"
+ "Default quit message when none supplied.")
(defcustom lurk-networks
'(("libera" "irc.libera.chat" 6697)
("freenode" "chat.freenode.net" 6697)
+ ("tilde" "tilde.chat" 6697)
+ ("mbr" "mbrserver.com" 6667 :notls)
("local" "localhost" 6697))
"IRC networks.")
(clrhash lurk-contexts)
(setq lurk-current-context nil)
(lurk-start-process network)
- (lurk-send-msg (lurk-msg nil nil "USER" lurk-user-name 0 "*" lurk-full-name))
+ (lurk-send-msg (lurk-msg nil nil "USER" lurk-nick 0 "*" lurk-nick))
(lurk-send-msg (lurk-msg nil nil "NICK" lurk-nick))
(setq lurk-ping-timer (run-with-timer lurk-ping-period nil #'lurk-ping-function)))))
+(defun lurk-connected-p ()
+ (let ((proc (get-process "lurk")))
+ (and proc (eq (process-status proc) 'open))))
(defun lurk-send-msg (msg)
(let ((proc (get-process "lurk")))
("PONG")
;; (lurk-display-notice nil "ping-pong (client initiated)"))
+ ("001"
+ (let* ((params (lurk-msg-params msg))
+ (nick (elt params 0))
+ (text (string-join (seq-drop params 1) " ")))
+ (setq lurk-nick nick)
+ (lurk-display-notice nil text)))
+
("353" ; NAMEREPLY
(let* ((params (lurk-msg-params msg))
(channel (elt params 2))
(concat "\01ACTION " action "\01"))))
(lurk-display-action lurk-nick action))
- ((rx (: "VERSION" " " (let nick (* (not whitespace)))))
+ ((rx (: "VERSION" " " (let nick (+ (not whitespace)))))
(lurk-send-msg (lurk-msg nil nil "PRIVMSG"
(list nick "\01VERSION\01")))
(lurk-display-notice nil "CTCP version request sent to " nick))
lurk-current-context)))
(lurk-display-error "No current channel to leave.")))
+ ((rx "QUIT" (opt (: " " (let quit-msg (* not-newline)))))
+ (lurk-send-msg (lurk-msg nil nil "QUIT"
+ (or quit-msg lurk-default-quit-msg))))
+
+ ((rx (: "NICK" (* whitespace) string-end))
+ (lurk-display-notice nil "Current nick: " lurk-nick))
+
+ ((rx (: "NICK" (+ whitespace) (let nick (+ (not whitespace)))))
+ (if (lurk-connected-p)
+ (lurk-send-msg (lurk-msg nil nil "NICK" nick))
+ (setq lurk-nick nick)
+ (lurk-display-notice nil "Set default nick to '" nick "'")))
+
((rx "MSG "
(let to (* (not whitespace)))
" "
"Enter current contents of line after prompt."
(interactive)
(with-current-buffer "*lurk*"
- (lurk-enter-string
- (buffer-substring lurk-input-marker (point-max)))
- (let ((inhibit-read-only t))
- (delete-region lurk-input-marker (point-max)))))
+ (let ((line (buffer-substring lurk-input-marker (point-max))))
+ (let ((inhibit-read-only t))
+ (delete-region lurk-input-marker (point-max)))
+ (lurk-enter-string line))))
;;; Mode