From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Vibhav Pant Newsgroups: gmane.emacs.devel Subject: [PATCH] Add support for IRCv3 message tags Date: Sun, 9 Oct 2016 19:13:42 +0530 Message-ID: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=94eb2c081feeea551a053e6ed43e X-Trace: blaine.gmane.org 1476020653 16800 195.159.176.226 (9 Oct 2016 13:44:13 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sun, 9 Oct 2016 13:44:13 +0000 (UTC) To: "emacs-devel@gnu.org" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Oct 09 15:44:09 2016 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1btEOS-0002IL-P0 for ged-emacs-devel@m.gmane.org; Sun, 09 Oct 2016 15:43:56 +0200 Original-Received: from localhost ([::1]:44523 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1btEOR-00008P-0s for ged-emacs-devel@m.gmane.org; Sun, 09 Oct 2016 09:43:55 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:47734) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1btEOI-00008J-DA for emacs-devel@gnu.org; Sun, 09 Oct 2016 09:43:47 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1btEOG-0004GP-2U for emacs-devel@gnu.org; Sun, 09 Oct 2016 09:43:45 -0400 Original-Received: from mail-qk0-x22b.google.com ([2607:f8b0:400d:c09::22b]:35778) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1btEOF-0004Fd-ST for emacs-devel@gnu.org; Sun, 09 Oct 2016 09:43:43 -0400 Original-Received: by mail-qk0-x22b.google.com with SMTP id z190so66756895qkc.2 for ; Sun, 09 Oct 2016 06:43:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to; bh=6PBDlLcyIbL0dZPxXseIO0WitXkmiD9X1lI6lb7q0eQ=; b=Wt25NeN3TTENGlOWEAtsKbz9P4Q5RZSYSW6WzYxJ4jj/e5yP8Jd470euw8GYrzSFUi Mz0LXSTEaBp1ZuOxyp2sFcwl+gbmwgFBTCd/C+A02fH3WTGJL9BuIr5xs4IMJZerNlbQ XDWE/01xxI1EMva8L/V/QcV4I5QAh6iB9stSIXjXa1rKdTZ2wpQSoqoBCB5IdPZAag9Z qGYASy5q6dx5H7jLl3aVUbDu2dtLHXTGC3Wrgq+F14q3x0IcCZeATmiOZWtUY6K7AobF x6NqpC6arFwjKvoMOArrS2Vp9hW0PGLblyjsou0Gxv/iqz2DMNdDEXVCATWpE94WUr5N GkSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=6PBDlLcyIbL0dZPxXseIO0WitXkmiD9X1lI6lb7q0eQ=; b=krj++XAZVTdxDt9A4CdPoYtbYhmMiBuT56hZEBm5qMAGVBOMBC0QxCet7jKDtclkIE gqkwmVZvazHVQ6fn3PhgWoHvC/NKNLdH1t+8p5ET1yHBx13lGbhE9IiJ9IkhOpRZvhMR G6xbXcQiGE0ISBNmzBw1FVe5oaZAGN4fUkIUOW9cVVu4eMbrX7glInfeySFKb6QD968W imKIXhRSlLysqKwBODBU2GLEEBmncRVr1NfJ/HLlsulFd05AK7923HFb11qQcS2ycsZB x8av6vSeASI8pYIzqCZVAMCX3jXU+aoN5WIeA/mAKv5na/Eso/WhQhx2cmcLKz3sk4l8 jwZw== X-Gm-Message-State: AA6/9Rk1ZCSuqw+fnW8/w1dL7+uOqrY49p55rhLZJFN4gDmaXv14GOuIKDtwHB5M2uyFRFF3Quv+suIvR52cGA== X-Received: by 10.55.145.129 with SMTP id t123mr26442447qkd.130.1476020622995; Sun, 09 Oct 2016 06:43:42 -0700 (PDT) Original-Received: by 10.140.81.165 with HTTP; Sun, 9 Oct 2016 06:43:42 -0700 (PDT) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400d:c09::22b X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:208119 Archived-At: --94eb2c081feeea551a053e6ed43e Content-Type: text/plain; charset=UTF-8 The following patch adds support for IRCv3(.2) message tags (http://ircv3.net/specs/core/message-tags-3.2.html), by adding a 'tags' memember to the `erc-response` struct. Also, (erc-parse-server-response) is modified so as to detect if the raw message has any tags preset, and if so, adds them to the parsed message. Feedback would be appreciated. diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el index bbb7ccb..f210e29 100644 --- a/lisp/erc/erc-backend.el +++ b/lisp/erc/erc-backend.el @@ -115,7 +115,8 @@ erc-server-responses (sender "" :type string) (command "" :type string) (command-args '() :type list) - (contents "" :type string)) + (contents "" :type string) + (tags '() :type list)) ;;; User data @@ -961,10 +962,16 @@ erc-parse-server-response PROCs `process-buffer' is `current-buffer' when this function is called." (unless (string= string "") ;; Ignore empty strings (save-match-data - (let ((posn (if (eq (aref string 0) ?:) - (string-match " " string) - 0)) - (msg (make-erc-response :unparsed string))) + (let* ((tag-list (when (eq (aref string 0) ?@) + (split-string + (substring string 1 (string-match " " string)) ";"))) + (msg (make-erc-response :unparsed string :tags tag-list)) + (string (if tag-list + (substring string (+ 1 (string-match " " string))) + string)) + (posn (if (eq (aref string 0) ?:) + (string-match " " string) + 0))) (setf (erc-response.sender msg) (if (eq posn 0) -- Vibhav Pant vibhavp@gmail.com --94eb2c081feeea551a053e6ed43e Content-Type: text/plain; charset=US-ASCII; name="tags.diff" Content-Disposition: attachment; filename="tags.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iu2okcy80 ZGlmZiAtLWdpdCBhL2xpc3AvZXJjL2VyYy1iYWNrZW5kLmVsIGIvbGlzcC9lcmMvZXJjLWJhY2tl bmQuZWwKaW5kZXggYmJiN2NjYi4uZjIxMGUyOSAxMDA2NDQKLS0tIGEvbGlzcC9lcmMvZXJjLWJh Y2tlbmQuZWwKKysrIGIvbGlzcC9lcmMvZXJjLWJhY2tlbmQuZWwKQEAgLTExNSw3ICsxMTUsOCBA QCBlcmMtc2VydmVyLXJlc3BvbnNlcwogICAoc2VuZGVyICIiIDp0eXBlIHN0cmluZykKICAgKGNv bW1hbmQgIiIgOnR5cGUgc3RyaW5nKQogICAoY29tbWFuZC1hcmdzICcoKSA6dHlwZSBsaXN0KQot ICAoY29udGVudHMgIiIgOnR5cGUgc3RyaW5nKSkKKyAgKGNvbnRlbnRzICIiIDp0eXBlIHN0cmlu ZykKKyAgKHRhZ3MgJygpIDp0eXBlIGxpc3QpKQogCiA7OzsgVXNlciBkYXRhCiAKQEAgLTk2MSwx MCArOTYyLDE2IEBAIGVyYy1wYXJzZS1zZXJ2ZXItcmVzcG9uc2UKIFBST0NzIGBwcm9jZXNzLWJ1 ZmZlcicgaXMgYGN1cnJlbnQtYnVmZmVyJyB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLiIK ICAgKHVubGVzcyAoc3RyaW5nPSBzdHJpbmcgIiIpIDs7IElnbm9yZSBlbXB0eSBzdHJpbmdzCiAg ICAgKHNhdmUtbWF0Y2gtZGF0YQotICAgICAgKGxldCAoKHBvc24gKGlmIChlcSAoYXJlZiBzdHJp bmcgMCkgPzopCi0gICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1tYXRjaCAiICIgc3RyaW5n KQotICAgICAgICAgICAgICAgICAgICAwKSkKLSAgICAgICAgICAgIChtc2cgKG1ha2UtZXJjLXJl c3BvbnNlIDp1bnBhcnNlZCBzdHJpbmcpKSkKKyAgICAgIChsZXQqICgodGFnLWxpc3QgKHdoZW4g KGVxIChhcmVmIHN0cmluZyAwKSA/QCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc3BsaXQt c3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgIChzdWJzdHJpbmcgc3RyaW5nIDEgKHN0 cmluZy1tYXRjaCAiICIgc3RyaW5nKSkgIjsiKSkpCisgICAgICAgICAgICAgKG1zZyAobWFrZS1l cmMtcmVzcG9uc2UgOnVucGFyc2VkIHN0cmluZyA6dGFncyB0YWctbGlzdCkpCisgICAgICAgICAg ICAgKHN0cmluZyAoaWYgdGFnLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc3Vic3Ry aW5nIHN0cmluZyAoKyAxIChzdHJpbmctbWF0Y2ggIiAiIHN0cmluZykpKQorICAgICAgICAgICAg ICAgICAgICAgICBzdHJpbmcpKQorICAgICAgICAgICAgIChwb3NuIChpZiAoZXEgKGFyZWYgc3Ry aW5nIDApID86KQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoICIgIiBzdHJp bmcpCisgICAgICAgICAgICAgICAgICAgICAwKSkpCiAKICAgICAgICAgKHNldGYgKGVyYy1yZXNw b25zZS5zZW5kZXIgbXNnKQogICAgICAgICAgICAgICAoaWYgKGVxIHBvc24gMCkK --94eb2c081feeea551a053e6ed43e--