diff options
Diffstat (limited to 'lisp/erc/erc-backend.el')
| -rw-r--r-- | lisp/erc/erc-backend.el | 156 |
1 files changed, 78 insertions, 78 deletions
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el index 90b96d7c763..a3d0ebe121f 100644 --- a/lisp/erc/erc-backend.el +++ b/lisp/erc/erc-backend.el | |||
| @@ -98,7 +98,7 @@ | |||
| 98 | ;;; Code: | 98 | ;;; Code: |
| 99 | 99 | ||
| 100 | (require 'erc-compat) | 100 | (require 'erc-compat) |
| 101 | (eval-when-compile (require 'cl)) | 101 | (eval-when-compile (require 'cl-lib)) |
| 102 | ;; There's a fairly strong mutual dependency between erc.el and erc-backend.el. | 102 | ;; There's a fairly strong mutual dependency between erc.el and erc-backend.el. |
| 103 | ;; Luckily, erc.el does not need erc-backend.el for macroexpansion whereas the | 103 | ;; Luckily, erc.el does not need erc-backend.el for macroexpansion whereas the |
| 104 | ;; reverse is true: | 104 | ;; reverse is true: |
| @@ -109,7 +109,7 @@ | |||
| 109 | (defvar erc-server-responses (make-hash-table :test #'equal) | 109 | (defvar erc-server-responses (make-hash-table :test #'equal) |
| 110 | "Hashtable mapping server responses to their handler hooks.") | 110 | "Hashtable mapping server responses to their handler hooks.") |
| 111 | 111 | ||
| 112 | (defstruct (erc-response (:conc-name erc-response.)) | 112 | (cl-defstruct (erc-response (:conc-name erc-response.)) |
| 113 | (unparsed "" :type string) | 113 | (unparsed "" :type string) |
| 114 | (sender "" :type string) | 114 | (sender "" :type string) |
| 115 | (command "" :type string) | 115 | (command "" :type string) |
| @@ -950,7 +950,7 @@ PROCs `process-buffer' is `current-buffer' when this function is called." | |||
| 950 | (push str (erc-response.command-args msg)))) | 950 | (push str (erc-response.command-args msg)))) |
| 951 | 951 | ||
| 952 | (setf (erc-response.contents msg) | 952 | (setf (erc-response.contents msg) |
| 953 | (first (erc-response.command-args msg))) | 953 | (car (erc-response.command-args msg))) |
| 954 | 954 | ||
| 955 | (setf (erc-response.command-args msg) | 955 | (setf (erc-response.command-args msg) |
| 956 | (nreverse (erc-response.command-args msg))) | 956 | (nreverse (erc-response.command-args msg))) |
| @@ -1045,7 +1045,7 @@ Finds hooks by looking in the `erc-server-responses' hashtable." | |||
| 1045 | (name &rest name) | 1045 | (name &rest name) |
| 1046 | &optional sexp sexp def-body)) | 1046 | &optional sexp sexp def-body)) |
| 1047 | 1047 | ||
| 1048 | (defmacro* define-erc-response-handler ((name &rest aliases) | 1048 | (cl-defmacro define-erc-response-handler ((name &rest aliases) |
| 1049 | &optional extra-fn-doc extra-var-doc | 1049 | &optional extra-fn-doc extra-var-doc |
| 1050 | &rest fn-body) | 1050 | &rest fn-body) |
| 1051 | "Define an ERC handler hook/function pair. | 1051 | "Define an ERC handler hook/function pair. |
| @@ -1154,11 +1154,11 @@ add things to `%s' instead." | |||
| 1154 | "") | 1154 | "") |
| 1155 | name hook-name)) | 1155 | name hook-name)) |
| 1156 | (fn-alternates | 1156 | (fn-alternates |
| 1157 | (loop for alias in aliases | 1157 | (cl-loop for alias in aliases |
| 1158 | collect (intern (format "erc-server-%s" alias)))) | 1158 | collect (intern (format "erc-server-%s" alias)))) |
| 1159 | (var-alternates | 1159 | (var-alternates |
| 1160 | (loop for alias in aliases | 1160 | (cl-loop for alias in aliases |
| 1161 | collect (intern (format "erc-server-%s-functions" alias))))) | 1161 | collect (intern (format "erc-server-%s-functions" alias))))) |
| 1162 | `(prog2 | 1162 | `(prog2 |
| 1163 | ;; Normal hook variable. | 1163 | ;; Normal hook variable. |
| 1164 | (defvar ,hook-name ',fn-name ,(format hook-doc name)) | 1164 | (defvar ,hook-name ',fn-name ,(format hook-doc name)) |
| @@ -1172,19 +1172,19 @@ add things to `%s' instead." | |||
| 1172 | (put ',hook-name 'definition-name ',name) | 1172 | (put ',hook-name 'definition-name ',name) |
| 1173 | 1173 | ||
| 1174 | ;; Hashtable map of responses to hook variables | 1174 | ;; Hashtable map of responses to hook variables |
| 1175 | ,@(loop for response in (cons name aliases) | 1175 | ,@(cl-loop for response in (cons name aliases) |
| 1176 | for var in (cons hook-name var-alternates) | 1176 | for var in (cons hook-name var-alternates) |
| 1177 | collect `(puthash ,(format "%s" response) ',var | 1177 | collect `(puthash ,(format "%s" response) ',var |
| 1178 | erc-server-responses)) | 1178 | erc-server-responses)) |
| 1179 | ;; Alternates. | 1179 | ;; Alternates. |
| 1180 | ;; Functions are defaliased, hook variables are defvared so we | 1180 | ;; Functions are defaliased, hook variables are defvared so we |
| 1181 | ;; can add hooks to one alias, but not another. | 1181 | ;; can add hooks to one alias, but not another. |
| 1182 | ,@(loop for fn in fn-alternates | 1182 | ,@(cl-loop for fn in fn-alternates |
| 1183 | for var in var-alternates | 1183 | for var in var-alternates |
| 1184 | for a in aliases | 1184 | for a in aliases |
| 1185 | nconc (list `(defalias ',fn ',fn-name) | 1185 | nconc (list `(defalias ',fn ',fn-name) |
| 1186 | `(defvar ,var ',fn-name ,(format hook-doc a)) | 1186 | `(defvar ,var ',fn-name ,(format hook-doc a)) |
| 1187 | `(put ',var 'definition-name ',hook-name)))))) | 1187 | `(put ',var 'definition-name ',hook-name)))))) |
| 1188 | 1188 | ||
| 1189 | (define-erc-response-handler (ERROR) | 1189 | (define-erc-response-handler (ERROR) |
| 1190 | "Handle an ERROR command from the server." nil | 1190 | "Handle an ERROR command from the server." nil |
| @@ -1196,10 +1196,10 @@ add things to `%s' instead." | |||
| 1196 | (define-erc-response-handler (INVITE) | 1196 | (define-erc-response-handler (INVITE) |
| 1197 | "Handle invitation messages." | 1197 | "Handle invitation messages." |
| 1198 | nil | 1198 | nil |
| 1199 | (let ((target (first (erc-response.command-args parsed))) | 1199 | (let ((target (car (erc-response.command-args parsed))) |
| 1200 | (chnl (erc-response.contents parsed))) | 1200 | (chnl (erc-response.contents parsed))) |
| 1201 | (multiple-value-bind (nick login host) | 1201 | (pcase-let ((`(,nick ,login ,host) |
| 1202 | (values-list (erc-parse-user (erc-response.sender parsed))) | 1202 | (erc-parse-user (erc-response.sender parsed)))) |
| 1203 | (setq erc-invitation chnl) | 1203 | (setq erc-invitation chnl) |
| 1204 | (when (string= target (erc-current-nick)) | 1204 | (when (string= target (erc-current-nick)) |
| 1205 | (erc-display-message | 1205 | (erc-display-message |
| @@ -1212,8 +1212,8 @@ add things to `%s' instead." | |||
| 1212 | nil | 1212 | nil |
| 1213 | (let ((chnl (erc-response.contents parsed)) | 1213 | (let ((chnl (erc-response.contents parsed)) |
| 1214 | (buffer nil)) | 1214 | (buffer nil)) |
| 1215 | (multiple-value-bind (nick login host) | 1215 | (pcase-let ((`(,nick ,login ,host) |
| 1216 | (values-list (erc-parse-user (erc-response.sender parsed))) | 1216 | (erc-parse-user (erc-response.sender parsed)))) |
| 1217 | ;; strip the stupid combined JOIN facility (IRC 2.9) | 1217 | ;; strip the stupid combined JOIN facility (IRC 2.9) |
| 1218 | (if (string-match "^\\(.*\\)?\^g.*$" chnl) | 1218 | (if (string-match "^\\(.*\\)?\^g.*$" chnl) |
| 1219 | (setq chnl (match-string 1 chnl))) | 1219 | (setq chnl (match-string 1 chnl))) |
| @@ -1249,12 +1249,12 @@ add things to `%s' instead." | |||
| 1249 | 1249 | ||
| 1250 | (define-erc-response-handler (KICK) | 1250 | (define-erc-response-handler (KICK) |
| 1251 | "Handle kick messages received from the server." nil | 1251 | "Handle kick messages received from the server." nil |
| 1252 | (let* ((ch (first (erc-response.command-args parsed))) | 1252 | (let* ((ch (nth 0 (erc-response.command-args parsed))) |
| 1253 | (tgt (second (erc-response.command-args parsed))) | 1253 | (tgt (nth 1 (erc-response.command-args parsed))) |
| 1254 | (reason (erc-trim-string (erc-response.contents parsed))) | 1254 | (reason (erc-trim-string (erc-response.contents parsed))) |
| 1255 | (buffer (erc-get-buffer ch proc))) | 1255 | (buffer (erc-get-buffer ch proc))) |
| 1256 | (multiple-value-bind (nick login host) | 1256 | (pcase-let ((`(,nick ,login ,host) |
| 1257 | (values-list (erc-parse-user (erc-response.sender parsed))) | 1257 | (erc-parse-user (erc-response.sender parsed)))) |
| 1258 | (erc-remove-channel-member buffer tgt) | 1258 | (erc-remove-channel-member buffer tgt) |
| 1259 | (cond | 1259 | (cond |
| 1260 | ((string= tgt (erc-current-nick)) | 1260 | ((string= tgt (erc-current-nick)) |
| @@ -1277,11 +1277,11 @@ add things to `%s' instead." | |||
| 1277 | 1277 | ||
| 1278 | (define-erc-response-handler (MODE) | 1278 | (define-erc-response-handler (MODE) |
| 1279 | "Handle server mode changes." nil | 1279 | "Handle server mode changes." nil |
| 1280 | (let ((tgt (first (erc-response.command-args parsed))) | 1280 | (let ((tgt (car (erc-response.command-args parsed))) |
| 1281 | (mode (mapconcat 'identity (cdr (erc-response.command-args parsed)) | 1281 | (mode (mapconcat 'identity (cdr (erc-response.command-args parsed)) |
| 1282 | " "))) | 1282 | " "))) |
| 1283 | (multiple-value-bind (nick login host) | 1283 | (pcase-let ((`(,nick ,login ,host) |
| 1284 | (values-list (erc-parse-user (erc-response.sender parsed))) | 1284 | (erc-parse-user (erc-response.sender parsed)))) |
| 1285 | (erc-log (format "MODE: %s -> %s: %s" nick tgt mode)) | 1285 | (erc-log (format "MODE: %s -> %s: %s" nick tgt mode)) |
| 1286 | ;; dirty hack | 1286 | ;; dirty hack |
| 1287 | (let ((buf (cond ((erc-channel-p tgt) | 1287 | (let ((buf (cond ((erc-channel-p tgt) |
| @@ -1305,8 +1305,8 @@ add things to `%s' instead." | |||
| 1305 | "Handle nick change messages." nil | 1305 | "Handle nick change messages." nil |
| 1306 | (let ((nn (erc-response.contents parsed)) | 1306 | (let ((nn (erc-response.contents parsed)) |
| 1307 | bufs) | 1307 | bufs) |
| 1308 | (multiple-value-bind (nick login host) | 1308 | (pcase-let ((`(,nick ,login ,host) |
| 1309 | (values-list (erc-parse-user (erc-response.sender parsed))) | 1309 | (erc-parse-user (erc-response.sender parsed)))) |
| 1310 | (setq bufs (erc-buffer-list-with-nick nick proc)) | 1310 | (setq bufs (erc-buffer-list-with-nick nick proc)) |
| 1311 | (erc-log (format "NICK: %s -> %s" nick nn)) | 1311 | (erc-log (format "NICK: %s -> %s" nick nn)) |
| 1312 | ;; if we had a query with this user, make sure future messages will be | 1312 | ;; if we had a query with this user, make sure future messages will be |
| @@ -1340,11 +1340,11 @@ add things to `%s' instead." | |||
| 1340 | 1340 | ||
| 1341 | (define-erc-response-handler (PART) | 1341 | (define-erc-response-handler (PART) |
| 1342 | "Handle part messages." nil | 1342 | "Handle part messages." nil |
| 1343 | (let* ((chnl (first (erc-response.command-args parsed))) | 1343 | (let* ((chnl (car (erc-response.command-args parsed))) |
| 1344 | (reason (erc-trim-string (erc-response.contents parsed))) | 1344 | (reason (erc-trim-string (erc-response.contents parsed))) |
| 1345 | (buffer (erc-get-buffer chnl proc))) | 1345 | (buffer (erc-get-buffer chnl proc))) |
| 1346 | (multiple-value-bind (nick login host) | 1346 | (pcase-let ((`(,nick ,login ,host) |
| 1347 | (values-list (erc-parse-user (erc-response.sender parsed))) | 1347 | (erc-parse-user (erc-response.sender parsed)))) |
| 1348 | (erc-remove-channel-member buffer nick) | 1348 | (erc-remove-channel-member buffer nick) |
| 1349 | (erc-display-message parsed 'notice buffer | 1349 | (erc-display-message parsed 'notice buffer |
| 1350 | 'PART ?n nick ?u login | 1350 | 'PART ?n nick ?u login |
| @@ -1361,7 +1361,7 @@ add things to `%s' instead." | |||
| 1361 | 1361 | ||
| 1362 | (define-erc-response-handler (PING) | 1362 | (define-erc-response-handler (PING) |
| 1363 | "Handle ping messages." nil | 1363 | "Handle ping messages." nil |
| 1364 | (let ((pinger (first (erc-response.command-args parsed)))) | 1364 | (let ((pinger (car (erc-response.command-args parsed)))) |
| 1365 | (erc-log (format "PING: %s" pinger)) | 1365 | (erc-log (format "PING: %s" pinger)) |
| 1366 | ;; ping response to the server MUST be forced, or you can lose big | 1366 | ;; ping response to the server MUST be forced, or you can lose big |
| 1367 | (erc-server-send (format "PONG :%s" pinger) t) | 1367 | (erc-server-send (format "PONG :%s" pinger) t) |
| @@ -1379,7 +1379,7 @@ add things to `%s' instead." | |||
| 1379 | (when erc-verbose-server-ping | 1379 | (when erc-verbose-server-ping |
| 1380 | (erc-display-message | 1380 | (erc-display-message |
| 1381 | parsed 'notice proc 'PONG | 1381 | parsed 'notice proc 'PONG |
| 1382 | ?h (first (erc-response.command-args parsed)) ?i erc-server-lag | 1382 | ?h (car (erc-response.command-args parsed)) ?i erc-server-lag |
| 1383 | ?s (if (/= erc-server-lag 1) "s" ""))) | 1383 | ?s (if (/= erc-server-lag 1) "s" ""))) |
| 1384 | (erc-update-mode-line)))) | 1384 | (erc-update-mode-line)))) |
| 1385 | 1385 | ||
| @@ -1451,8 +1451,8 @@ add things to `%s' instead." | |||
| 1451 | "Another user has quit IRC." nil | 1451 | "Another user has quit IRC." nil |
| 1452 | (let ((reason (erc-response.contents parsed)) | 1452 | (let ((reason (erc-response.contents parsed)) |
| 1453 | bufs) | 1453 | bufs) |
| 1454 | (multiple-value-bind (nick login host) | 1454 | (pcase-let ((`(,nick ,login ,host) |
| 1455 | (values-list (erc-parse-user (erc-response.sender parsed))) | 1455 | (erc-parse-user (erc-response.sender parsed)))) |
| 1456 | (setq bufs (erc-buffer-list-with-nick nick proc)) | 1456 | (setq bufs (erc-buffer-list-with-nick nick proc)) |
| 1457 | (erc-remove-user nick) | 1457 | (erc-remove-user nick) |
| 1458 | (setq reason (erc-wash-quit-reason reason nick login host)) | 1458 | (setq reason (erc-wash-quit-reason reason nick login host)) |
| @@ -1462,12 +1462,12 @@ add things to `%s' instead." | |||
| 1462 | 1462 | ||
| 1463 | (define-erc-response-handler (TOPIC) | 1463 | (define-erc-response-handler (TOPIC) |
| 1464 | "The channel topic has changed." nil | 1464 | "The channel topic has changed." nil |
| 1465 | (let* ((ch (first (erc-response.command-args parsed))) | 1465 | (let* ((ch (car (erc-response.command-args parsed))) |
| 1466 | (topic (erc-trim-string (erc-response.contents parsed))) | 1466 | (topic (erc-trim-string (erc-response.contents parsed))) |
| 1467 | (time (format-time-string erc-server-timestamp-format | 1467 | (time (format-time-string erc-server-timestamp-format |
| 1468 | (current-time)))) | 1468 | (current-time)))) |
| 1469 | (multiple-value-bind (nick login host) | 1469 | (pcase-let ((`(,nick ,login ,host) |
| 1470 | (values-list (erc-parse-user (erc-response.sender parsed))) | 1470 | (erc-parse-user (erc-response.sender parsed)))) |
| 1471 | (erc-update-channel-member ch nick nick nil nil nil host login) | 1471 | (erc-update-channel-member ch nick nick nil nil nil host login) |
| 1472 | (erc-update-channel-topic ch (format "%s\C-o (%s, %s)" topic nick time)) | 1472 | (erc-update-channel-topic ch (format "%s\C-o (%s, %s)" topic nick time)) |
| 1473 | (erc-display-message parsed 'notice (erc-get-buffer ch proc) | 1473 | (erc-display-message parsed 'notice (erc-get-buffer ch proc) |
| @@ -1477,8 +1477,8 @@ add things to `%s' instead." | |||
| 1477 | (define-erc-response-handler (WALLOPS) | 1477 | (define-erc-response-handler (WALLOPS) |
| 1478 | "Display a WALLOPS message." nil | 1478 | "Display a WALLOPS message." nil |
| 1479 | (let ((message (erc-response.contents parsed))) | 1479 | (let ((message (erc-response.contents parsed))) |
| 1480 | (multiple-value-bind (nick login host) | 1480 | (pcase-let ((`(,nick ,login ,host) |
| 1481 | (values-list (erc-parse-user (erc-response.sender parsed))) | 1481 | (erc-parse-user (erc-response.sender parsed)))) |
| 1482 | (erc-display-message | 1482 | (erc-display-message |
| 1483 | parsed 'notice nil | 1483 | parsed 'notice nil |
| 1484 | 'WALLOPS ?n nick ?m message)))) | 1484 | 'WALLOPS ?n nick ?m message)))) |
| @@ -1486,7 +1486,7 @@ add things to `%s' instead." | |||
| 1486 | (define-erc-response-handler (001) | 1486 | (define-erc-response-handler (001) |
| 1487 | "Set `erc-server-current-nick' to reflect server settings and display the welcome message." | 1487 | "Set `erc-server-current-nick' to reflect server settings and display the welcome message." |
| 1488 | nil | 1488 | nil |
| 1489 | (erc-set-current-nick (first (erc-response.command-args parsed))) | 1489 | (erc-set-current-nick (car (erc-response.command-args parsed))) |
| 1490 | (erc-update-mode-line) ; needed here? | 1490 | (erc-update-mode-line) ; needed here? |
| 1491 | (setq erc-nick-change-attempt-count 0) | 1491 | (setq erc-nick-change-attempt-count 0) |
| 1492 | (setq erc-default-nicks (if (consp erc-nick) erc-nick (list erc-nick))) | 1492 | (setq erc-default-nicks (if (consp erc-nick) erc-nick (list erc-nick))) |
| @@ -1507,16 +1507,16 @@ add things to `%s' instead." | |||
| 1507 | 1507 | ||
| 1508 | (define-erc-response-handler (004) | 1508 | (define-erc-response-handler (004) |
| 1509 | "Display the server's identification." nil | 1509 | "Display the server's identification." nil |
| 1510 | (multiple-value-bind (server-name server-version) | 1510 | (pcase-let ((`(,server-name ,server-version) |
| 1511 | (values-list (cdr (erc-response.command-args parsed))) | 1511 | (cdr (erc-response.command-args parsed)))) |
| 1512 | (setq erc-server-version server-version) | 1512 | (setq erc-server-version server-version) |
| 1513 | (setq erc-server-announced-name server-name) | 1513 | (setq erc-server-announced-name server-name) |
| 1514 | (erc-update-mode-line-buffer (process-buffer proc)) | 1514 | (erc-update-mode-line-buffer (process-buffer proc)) |
| 1515 | (erc-display-message | 1515 | (erc-display-message |
| 1516 | parsed 'notice proc | 1516 | parsed 'notice proc |
| 1517 | 's004 ?s server-name ?v server-version | 1517 | 's004 ?s server-name ?v server-version |
| 1518 | ?U (fourth (erc-response.command-args parsed)) | 1518 | ?U (nth 3 (erc-response.command-args parsed)) |
| 1519 | ?C (fifth (erc-response.command-args parsed))))) | 1519 | ?C (nth 4 (erc-response.command-args parsed))))) |
| 1520 | 1520 | ||
| 1521 | (define-erc-response-handler (005) | 1521 | (define-erc-response-handler (005) |
| 1522 | "Set the variable `erc-server-parameters' and display the received message. | 1522 | "Set the variable `erc-server-parameters' and display the received message. |
| @@ -1547,7 +1547,7 @@ A server may send more than one 005 message." | |||
| 1547 | 1547 | ||
| 1548 | (define-erc-response-handler (221) | 1548 | (define-erc-response-handler (221) |
| 1549 | "Display the current user modes." nil | 1549 | "Display the current user modes." nil |
| 1550 | (let* ((nick (first (erc-response.command-args parsed))) | 1550 | (let* ((nick (car (erc-response.command-args parsed))) |
| 1551 | (modes (mapconcat 'identity | 1551 | (modes (mapconcat 'identity |
| 1552 | (cdr (erc-response.command-args parsed)) " "))) | 1552 | (cdr (erc-response.command-args parsed)) " "))) |
| 1553 | (erc-set-modes nick modes) | 1553 | (erc-set-modes nick modes) |
| @@ -1576,8 +1576,8 @@ See `erc-display-server-message'." nil | |||
| 1576 | 1576 | ||
| 1577 | (define-erc-response-handler (275) | 1577 | (define-erc-response-handler (275) |
| 1578 | "Display secure connection message." nil | 1578 | "Display secure connection message." nil |
| 1579 | (multiple-value-bind (nick user message) | 1579 | (pcase-let ((`(,nick ,user ,message) |
| 1580 | (values-list (cdr (erc-response.command-args parsed))) | 1580 | (cdr (erc-response.command-args parsed)))) |
| 1581 | (erc-display-message | 1581 | (erc-display-message |
| 1582 | parsed 'notice 'active 's275 | 1582 | parsed 'notice 'active 's275 |
| 1583 | ?n nick | 1583 | ?n nick |
| @@ -1612,8 +1612,8 @@ See `erc-display-server-message'." nil | |||
| 1612 | 1612 | ||
| 1613 | (define-erc-response-handler (307) | 1613 | (define-erc-response-handler (307) |
| 1614 | "Display nick-identified message." nil | 1614 | "Display nick-identified message." nil |
| 1615 | (multiple-value-bind (nick user message) | 1615 | (pcase-let ((`(,nick ,user ,message) |
| 1616 | (values-list (cdr (erc-response.command-args parsed))) | 1616 | (cdr (erc-response.command-args parsed)))) |
| 1617 | (erc-display-message | 1617 | (erc-display-message |
| 1618 | parsed 'notice 'active 's307 | 1618 | parsed 'notice 'active 's307 |
| 1619 | ?n nick | 1619 | ?n nick |
| @@ -1624,8 +1624,8 @@ See `erc-display-server-message'." nil | |||
| 1624 | "WHOIS/WHOWAS notices." nil | 1624 | "WHOIS/WHOWAS notices." nil |
| 1625 | (let ((fname (erc-response.contents parsed)) | 1625 | (let ((fname (erc-response.contents parsed)) |
| 1626 | (catalog-entry (intern (format "s%s" (erc-response.command parsed))))) | 1626 | (catalog-entry (intern (format "s%s" (erc-response.command parsed))))) |
| 1627 | (multiple-value-bind (nick user host) | 1627 | (pcase-let ((`(,nick ,user ,host) |
| 1628 | (values-list (cdr (erc-response.command-args parsed))) | 1628 | (cdr (erc-response.command-args parsed)))) |
| 1629 | (erc-update-user-nick nick nick host nil fname user) | 1629 | (erc-update-user-nick nick nick host nil fname user) |
| 1630 | (erc-display-message | 1630 | (erc-display-message |
| 1631 | parsed 'notice 'active catalog-entry | 1631 | parsed 'notice 'active catalog-entry |
| @@ -1633,8 +1633,8 @@ See `erc-display-server-message'." nil | |||
| 1633 | 1633 | ||
| 1634 | (define-erc-response-handler (312) | 1634 | (define-erc-response-handler (312) |
| 1635 | "Server name response in WHOIS." nil | 1635 | "Server name response in WHOIS." nil |
| 1636 | (multiple-value-bind (nick server-host) | 1636 | (pcase-let ((`(,nick ,server-host)) |
| 1637 | (values-list (cdr (erc-response.command-args parsed))) | 1637 | (cdr (erc-response.command-args parsed))) |
| 1638 | (erc-display-message | 1638 | (erc-display-message |
| 1639 | parsed 'notice 'active 's312 | 1639 | parsed 'notice 'active 's312 |
| 1640 | ?n nick ?s server-host ?c (erc-response.contents parsed)))) | 1640 | ?n nick ?s server-host ?c (erc-response.contents parsed)))) |
| @@ -1655,8 +1655,8 @@ See `erc-display-server-message'." nil | |||
| 1655 | 1655 | ||
| 1656 | (define-erc-response-handler (317) | 1656 | (define-erc-response-handler (317) |
| 1657 | "IDLE notice." nil | 1657 | "IDLE notice." nil |
| 1658 | (multiple-value-bind (nick seconds-idle on-since time) | 1658 | (pcase-let ((`(,nick ,seconds-idle ,on-since ,time) |
| 1659 | (values-list (cdr (erc-response.command-args parsed))) | 1659 | (cdr (erc-response.command-args parsed)))) |
| 1660 | (setq time (when on-since | 1660 | (setq time (when on-since |
| 1661 | (format-time-string erc-server-timestamp-format | 1661 | (format-time-string erc-server-timestamp-format |
| 1662 | (erc-string-to-emacs-time on-since)))) | 1662 | (erc-string-to-emacs-time on-since)))) |
| @@ -1696,16 +1696,16 @@ See `erc-display-server-message'." nil | |||
| 1696 | (define-erc-response-handler (322) | 1696 | (define-erc-response-handler (322) |
| 1697 | "LIST notice." nil | 1697 | "LIST notice." nil |
| 1698 | (let ((topic (erc-response.contents parsed))) | 1698 | (let ((topic (erc-response.contents parsed))) |
| 1699 | (multiple-value-bind (channel num-users) | 1699 | (pcase-let ((`(,channel ,num-users) |
| 1700 | (values-list (cdr (erc-response.command-args parsed))) | 1700 | (cdr (erc-response.command-args parsed)))) |
| 1701 | (add-to-list 'erc-channel-list (list channel)) | 1701 | (add-to-list 'erc-channel-list (list channel)) |
| 1702 | (erc-update-channel-topic channel topic)))) | 1702 | (erc-update-channel-topic channel topic)))) |
| 1703 | 1703 | ||
| 1704 | (defun erc-server-322-message (proc parsed) | 1704 | (defun erc-server-322-message (proc parsed) |
| 1705 | "Display a message for the 322 event." | 1705 | "Display a message for the 322 event." |
| 1706 | (let ((topic (erc-response.contents parsed))) | 1706 | (let ((topic (erc-response.contents parsed))) |
| 1707 | (multiple-value-bind (channel num-users) | 1707 | (pcase-let ((`(,channel ,num-users) |
| 1708 | (values-list (cdr (erc-response.command-args parsed))) | 1708 | (cdr (erc-response.command-args parsed)))) |
| 1709 | (erc-display-message | 1709 | (erc-display-message |
| 1710 | parsed 'notice proc 's322 | 1710 | parsed 'notice proc 's322 |
| 1711 | ?c channel ?u num-users ?t (or topic ""))))) | 1711 | ?c channel ?u num-users ?t (or topic ""))))) |
| @@ -1732,7 +1732,7 @@ See `erc-display-server-message'." nil | |||
| 1732 | "Channel creation date." nil | 1732 | "Channel creation date." nil |
| 1733 | (let ((channel (second (erc-response.command-args parsed))) | 1733 | (let ((channel (second (erc-response.command-args parsed))) |
| 1734 | (time (erc-string-to-emacs-time | 1734 | (time (erc-string-to-emacs-time |
| 1735 | (third (erc-response.command-args parsed))))) | 1735 | (nth 2 (erc-response.command-args parsed))))) |
| 1736 | (erc-display-message | 1736 | (erc-display-message |
| 1737 | parsed 'notice (erc-get-buffer channel proc) | 1737 | parsed 'notice (erc-get-buffer channel proc) |
| 1738 | 's329 ?c channel ?t (format-time-string erc-server-timestamp-format | 1738 | 's329 ?c channel ?t (format-time-string erc-server-timestamp-format |
| @@ -1749,7 +1749,7 @@ See `erc-display-server-message'." nil | |||
| 1749 | ;; authmsg == (aref parsed 5) | 1749 | ;; authmsg == (aref parsed 5) |
| 1750 | ;; The guesses below are, well, just that. -- Lawrence 2004/05/10 | 1750 | ;; The guesses below are, well, just that. -- Lawrence 2004/05/10 |
| 1751 | (let ((nick (second (erc-response.command-args parsed))) | 1751 | (let ((nick (second (erc-response.command-args parsed))) |
| 1752 | (authaccount (third (erc-response.command-args parsed))) | 1752 | (authaccount (nth 2 (erc-response.command-args parsed))) |
| 1753 | (authmsg (erc-response.contents parsed))) | 1753 | (authmsg (erc-response.contents parsed))) |
| 1754 | (erc-display-message parsed 'notice 'active 's330 | 1754 | (erc-display-message parsed 'notice 'active 's330 |
| 1755 | ?n nick ?a authmsg ?i authaccount))) | 1755 | ?n nick ?a authmsg ?i authaccount))) |
| @@ -1771,8 +1771,8 @@ See `erc-display-server-message'." nil | |||
| 1771 | 1771 | ||
| 1772 | (define-erc-response-handler (333) | 1772 | (define-erc-response-handler (333) |
| 1773 | "Who set the topic, and when." nil | 1773 | "Who set the topic, and when." nil |
| 1774 | (multiple-value-bind (channel nick time) | 1774 | (pcase-let ((`(,channel ,nick ,time) |
| 1775 | (values-list (cdr (erc-response.command-args parsed))) | 1775 | (cdr (erc-response.command-args parsed)))) |
| 1776 | (setq time (format-time-string erc-server-timestamp-format | 1776 | (setq time (format-time-string erc-server-timestamp-format |
| 1777 | (erc-string-to-emacs-time time))) | 1777 | (erc-string-to-emacs-time time))) |
| 1778 | (erc-update-channel-topic channel | 1778 | (erc-update-channel-topic channel |
| @@ -1784,15 +1784,15 @@ See `erc-display-server-message'." nil | |||
| 1784 | (define-erc-response-handler (341) | 1784 | (define-erc-response-handler (341) |
| 1785 | "Let user know when an INVITE attempt has been sent successfully." | 1785 | "Let user know when an INVITE attempt has been sent successfully." |
| 1786 | nil | 1786 | nil |
| 1787 | (multiple-value-bind (nick channel) | 1787 | (pcase-let ((`(,nick ,channel) |
| 1788 | (values-list (cdr (erc-response.command-args parsed))) | 1788 | (cdr (erc-response.command-args parsed)))) |
| 1789 | (erc-display-message parsed 'notice (erc-get-buffer channel proc) | 1789 | (erc-display-message parsed 'notice (erc-get-buffer channel proc) |
| 1790 | 's341 ?n nick ?c channel))) | 1790 | 's341 ?n nick ?c channel))) |
| 1791 | 1791 | ||
| 1792 | (define-erc-response-handler (352) | 1792 | (define-erc-response-handler (352) |
| 1793 | "WHO notice." nil | 1793 | "WHO notice." nil |
| 1794 | (multiple-value-bind (channel user host server nick away-flag) | 1794 | (pcase-let ((`(,channel ,user ,host ,server ,nick ,away-flag) |
| 1795 | (values-list (cdr (erc-response.command-args parsed))) | 1795 | (cdr (erc-response.command-args parsed)))) |
| 1796 | (let ((full-name (erc-response.contents parsed)) | 1796 | (let ((full-name (erc-response.contents parsed)) |
| 1797 | hopcount) | 1797 | hopcount) |
| 1798 | (when (string-match "\\(^[0-9]+ \\)\\(.*\\)$" full-name) | 1798 | (when (string-match "\\(^[0-9]+ \\)\\(.*\\)$" full-name) |
| @@ -1806,7 +1806,7 @@ See `erc-display-server-message'." nil | |||
| 1806 | 1806 | ||
| 1807 | (define-erc-response-handler (353) | 1807 | (define-erc-response-handler (353) |
| 1808 | "NAMES notice." nil | 1808 | "NAMES notice." nil |
| 1809 | (let ((channel (third (erc-response.command-args parsed))) | 1809 | (let ((channel (nth 2 (erc-response.command-args parsed))) |
| 1810 | (users (erc-response.contents parsed))) | 1810 | (users (erc-response.contents parsed))) |
| 1811 | (erc-display-message parsed 'notice (or (erc-get-buffer channel proc) | 1811 | (erc-display-message parsed 'notice (or (erc-get-buffer channel proc) |
| 1812 | 'active) | 1812 | 'active) |
| @@ -1821,8 +1821,8 @@ See `erc-display-server-message'." nil | |||
| 1821 | 1821 | ||
| 1822 | (define-erc-response-handler (367) | 1822 | (define-erc-response-handler (367) |
| 1823 | "Channel ban list entries." nil | 1823 | "Channel ban list entries." nil |
| 1824 | (multiple-value-bind (channel banmask setter time) | 1824 | (pcase-let ((`(,channel ,banmask ,setter ,time) |
| 1825 | (values-list (cdr (erc-response.command-args parsed))) | 1825 | (cdr (erc-response.command-args parsed)))) |
| 1826 | ;; setter and time are not standard | 1826 | ;; setter and time are not standard |
| 1827 | (if setter | 1827 | (if setter |
| 1828 | (erc-display-message parsed 'notice 'active 's367-set-by | 1828 | (erc-display-message parsed 'notice 'active 's367-set-by |
| @@ -1845,8 +1845,8 @@ See `erc-display-server-message'." nil | |||
| 1845 | ;; FIXME: Yet more magic numbers in original code, I'm guessing this | 1845 | ;; FIXME: Yet more magic numbers in original code, I'm guessing this |
| 1846 | ;; command takes two arguments, and doesn't have any "contents". -- | 1846 | ;; command takes two arguments, and doesn't have any "contents". -- |
| 1847 | ;; Lawrence 2004/05/10 | 1847 | ;; Lawrence 2004/05/10 |
| 1848 | (multiple-value-bind (from to) | 1848 | (pcase-let ((`(,from ,to) |
| 1849 | (values-list (cdr (erc-response.command-args parsed))) | 1849 | (cdr (erc-response.command-args parsed)))) |
| 1850 | (erc-display-message parsed 'notice 'active | 1850 | (erc-display-message parsed 'notice 'active |
| 1851 | 's379 ?c from ?f to))) | 1851 | 's379 ?c from ?f to))) |
| 1852 | 1852 | ||
| @@ -1855,7 +1855,7 @@ See `erc-display-server-message'." nil | |||
| 1855 | (erc-display-message | 1855 | (erc-display-message |
| 1856 | parsed 'notice 'active | 1856 | parsed 'notice 'active |
| 1857 | 's391 ?s (second (erc-response.command-args parsed)) | 1857 | 's391 ?s (second (erc-response.command-args parsed)) |
| 1858 | ?t (third (erc-response.command-args parsed)))) | 1858 | ?t (nth 2 (erc-response.command-args parsed)))) |
| 1859 | 1859 | ||
| 1860 | (define-erc-response-handler (401) | 1860 | (define-erc-response-handler (401) |
| 1861 | "No such nick/channel." nil | 1861 | "No such nick/channel." nil |