From 420d8a86f65f11665e2ef58c738442aa2051208c Mon Sep 17 00:00:00 2001 From: Tim Vaughan Date: Fri, 2 Jul 2021 12:24:51 +0200 Subject: [PATCH] Proper handling of topic messages. --- lurk.el | 50 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/lurk.el b/lurk.el index 347258e..16de2af 100644 --- a/lurk.el +++ b/lurk.el @@ -62,25 +62,21 @@ ;; (defface lurk-text - '((t :inherit font-lock-preprocessor-face)) + '((t :inherit default)) "Face used for Lurk text.") (defface lurk-prompt - '((t :inherit org-level-2)) + '((t :inherit org-priority)) "Face used for the prompt.") (defface lurk-context - '((t :inherit org-list-dt)) + '((t :inherit org-tag)) "Face used for the context name in the prompt.") (defface lurk-faded - '((t :inherit font-lock-preprocessor-face)) + '((t :inherit org-agenda-dimmed-todo-face)) "Face used for faded Lurk text.") -(defface lurk-bold - '((t :inherit font-lock-function-name-face)) - "Face used for bold Lurk text.") - (defface lurk-error '((t :inherit font-lock-regexp-grouping-construct)) "Face used for Lurk error text.") @@ -113,7 +109,7 @@ (unless (equal "open" (string-trim string)) (lurk-display-error "Disconnected from server.") (clrhash lurk-contexts) - (setq lurk-current-context nil) + (lurk-set-current-context nil) (lurk-render-prompt) (cancel-timer lurk-ping-timer))) @@ -150,7 +146,7 @@ (if (not (assoc network lurk-networks)) (lurk-display-error "Network '" network "' is unknown.") (clrhash lurk-contexts) - (setq lurk-current-context nil) + (lurk-set-current-context nil) (lurk-start-process network) (lurk-send-msg (lurk-msg nil nil "USER" lurk-nick 0 "*" lurk-nick)) (lurk-send-msg (lurk-msg nil nil "NICK" lurk-nick)) @@ -303,22 +299,24 @@ portion of the source component of the message, as LURK doesn't use this.") (car context-list))) nil)) +(defun lurk-set-current-context (context) + (setq lurk-current-context context) + (lurk-highlight-context context)) + (defun lurk-cycle-contexts (&optional rev) (if lurk-current-context (progn - (setq lurk-current-context (lurk-get-next-context rev)) + (lurk-set-current-context (lurk-get-next-context rev)) (lurk-render-prompt)) (lurk-display-error "No channels joined."))) (defun lurk-cycle-contexts-forward () (interactive) - (lurk-cycle-contexts) - (lurk-highlight-context lurk-current-context)) + (lurk-cycle-contexts)) (defun lurk-cycle-contexts-reverse () (interactive) - (lurk-cycle-contexts t) - (lurk-highlight-context lurk-current-context)) + (lurk-cycle-contexts t)) ;;; Buffer @@ -451,7 +449,7 @@ portion of the source component of the message, as LURK doesn't use this.") (maphash (lambda (this-context facelist) (if (equal this-context context) - (setcar facelist 'lurk-bold) + (setcar facelist 'lurk-text) (setcar facelist 'lurk-faded))) lurk-context-facelists) (force-window-update "*lurk*")) @@ -482,7 +480,6 @@ portion of the source component of the message, as LURK doesn't use this.") (defun lurk-eval-msg-string (string) ;; (lurk-display-string nil string) (let* ((msg (lurk-string->msg string))) - ;; (message (pp msg)) (pcase (lurk-msg-cmd msg) ("PING" (lurk-send-msg @@ -513,6 +510,20 @@ portion of the source component of the message, as LURK doesn't use this.") (lurk--as-string (length (lurk-get-context-users channel))) " users in " channel))) + ("331" + (let* ((params (lurk-msg-params msg)) + (channel (elt params 1))) + (lurk-display-notice + channel + "No topic set."))) + + ("332" + (lurk-display-notice nil "Detected 332: "string) + (let* ((params (lurk-msg-params msg)) + (channel (elt params 1)) + (topic (elt params 2))) + (lurk-display-notice channel "Topic: " topic))) + ((rx (= 3 (any digit))) (lurk-display-notice nil (mapconcat 'identity (cdr (lurk-msg-params msg)) " "))) @@ -520,7 +531,7 @@ portion of the source component of the message, as LURK doesn't use this.") (guard (equal lurk-nick (lurk-msg-src msg)))) (let ((channel (car (lurk-msg-params msg)))) (lurk-add-context channel) - (setq lurk-current-context channel) + (lurk-set-current-context channel) (lurk-display-notice channel "Joining channel " channel) (lurk-render-prompt))) @@ -537,7 +548,7 @@ portion of the source component of the message, as LURK doesn't use this.") (lurk-display-notice channel "Left channel " channel) (lurk-del-context channel) (if (equal channel lurk-current-context) - (setq lurk-current-context (lurk-get-next-context))) + (lurk-set-current-context (lurk-get-next-context))) (lurk-render-prompt))) ("PART" @@ -715,5 +726,4 @@ portion of the source component of the message, as LURK doesn't use this.") "Started LURK.") - ;;; lurk.el ends here -- 2.20.1