From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: "J.P." Newsgroups: gmane.emacs.bugs Subject: bug#50005: 28.0.50; silence a couple byte-compiler warnings in ERC Date: Thu, 12 Aug 2021 03:56:45 -0700 Message-ID: <87a6lngccy.fsf@neverwas.me> References: <50A0B8E0-2F07-4AAC-8170-27990F9FEAD4@acm.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="36171"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: Amin Bandali , 50005@debbugs.gnu.org To: Mattias =?UTF-8?Q?Engdeg=C3=A5rd?= Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu Aug 12 12:57:10 2021 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mE8Ob-0009AK-WF for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 12 Aug 2021 12:57:10 +0200 Original-Received: from localhost ([::1]:40776 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mE8Oa-0007BA-9y for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 12 Aug 2021 06:57:08 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:35612) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mE8OU-0007B2-Ez for bug-gnu-emacs@gnu.org; Thu, 12 Aug 2021 06:57:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:54390) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mE8OU-0003C7-7r for bug-gnu-emacs@gnu.org; Thu, 12 Aug 2021 06:57:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mE8OU-0003nl-51 for bug-gnu-emacs@gnu.org; Thu, 12 Aug 2021 06:57:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: "J.P." Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 12 Aug 2021 10:57:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 50005 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 50005-submit@debbugs.gnu.org id=B50005.162876581914605 (code B ref 50005); Thu, 12 Aug 2021 10:57:02 +0000 Original-Received: (at 50005) by debbugs.gnu.org; 12 Aug 2021 10:56:59 +0000 Original-Received: from localhost ([127.0.0.1]:37703 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mE8OR-0003nU-5L for submit@debbugs.gnu.org; Thu, 12 Aug 2021 06:56:59 -0400 Original-Received: from mail-108-mta167.mxroute.com ([136.175.108.167]:40735) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mE8ON-0003nF-Sy for 50005@debbugs.gnu.org; Thu, 12 Aug 2021 06:56:57 -0400 Original-Received: from filter004.mxroute.com ([149.28.56.236] filter004.mxroute.com) (Authenticated sender: mN4UYu2MZsgR) by mail-108-mta167.mxroute.com (ZoneMTA) with ESMTPSA id 17b3a01e4d100074ba.002 for <50005@debbugs.gnu.org> (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES128-GCM-SHA256); Thu, 12 Aug 2021 10:56:47 +0000 X-Zone-Loop: 116a75038910392ba7f7ed458702e77624fd0bfb5c69 X-Originating-IP: [149.28.56.236] In-Reply-To: <50A0B8E0-2F07-4AAC-8170-27990F9FEAD4@acm.org> ("Mattias =?UTF-8?Q?Engdeg=C3=A5rd?="'s message of "Thu, 12 Aug 2021 10:15:45 +0200") X-AuthUser: masked@neverwas.me X-Zone-Spam-Resolution: no action X-Zone-Spam-Status: No, score=-0.1, required=15, tests=[ARC_NA=0, FROM_HAS_DN=0, RCPT_COUNT_THREE=0, TO_DN_SOME=0, HAS_ATTACHMENT=0, FROM_EQ_ENVFROM=0, MIME_TRACE=0, MIME_GOOD=-0.1, NEURAL_SPAM=0, MID_RHS_MATCH_FROM=0, RCVD_COUNT_ZERO=0] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:211657 Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Mattias Engdeg=C3=A5rd writes: > Oops (two typos), but thanks for illustrating the problems with: Thanks, I spotted the weird double-quote mismatch thing earlier, but I guess I'm still missing something else? Sorry, I'm quite blind/dumb, as I'm sure you've gathered. Anyway, I suppose, if we're using `rx-to-string' or `regexp-opt', then that entire line can just be 86ed. > (rx-to-string `(+ (in ,@(string-to-list erc-lurker-ignore-chars))) t) > > or > > (concat (regexp-opt (mapcar #'char-to-string erc-lurker-ignore-chars)) "= +") So, I take this to mean there's no problem with requiring (autoloading) rx.el (or regexp-opt.el), right? I mean, I'd really like to use rx forms elsewhere in ERC. So if nobody has a problem with it, let's do it! (Cc. bandali.) And I guess the `string-to-list' is necessary because (rx-to-string '(+ (in "abc")) t) =E2=87=92 "[a-c]+" is still interpreted as a set of character alternatives, whereas (rx-to-string '(+ (in ?a ?- ?c)) t) =E2=87=92 "[ac-]+" combines individual character args into just such a set. Thanks for pointing that out. I'm sure I would have missed that. Do you use ERC, Mattias? If so, are you available to review more patches? I'm obviously quite ignorant in the ways of Emacs but am pushing hard to improve ERC. Some might say that's a recipe for embarrassment/disaster (though I'm pretty sure I already crossed that first bridge ages ago). So what do you say, can you help? I of course would welcome the experience and obviously don't mind sharing (or even surrendering complete) credit for anything. (Guess you'd have to weight any potential cap feathers/plaudits against the indelible smirch of being associated with the likes of me.) But let me know either way! Thanks. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Fix-mistake-in-test-for-erc-ring-previous-command.patch >From 552c40c20249bc3d90463e176a623e00a4532c9a Mon Sep 17 00:00:00 2001 From: "F. Jason Park" Date: Thu, 13 May 2021 02:27:08 -0700 Subject: [PATCH 1/2] Fix mistake in test for erc-ring-previous-command * test/lisp/erc/erc-tests.el (erc-ring-previous-command): The variable erc-send-completed-hook was previously set to nil permanently, which would affect other tests. --- test/lisp/erc/erc-tests.el | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/test/lisp/erc/erc-tests.el b/test/lisp/erc/erc-tests.el index d13397274a..9efcf4a703 100644 --- a/test/lisp/erc/erc-tests.el +++ b/test/lisp/erc/erc-tests.el @@ -61,13 +61,16 @@ erc-ring-previous-command (with-current-buffer (get-buffer-create "*#fake*") (erc-mode) (insert "\n\n") - (setq erc-input-marker (make-marker) ; these are all local - erc-insert-marker (make-marker) - erc-send-completed-hook nil) + (should-not (local-variable-if-set-p 'erc-send-completed-hook)) + (set (make-local-variable 'erc-send-completed-hook) nil) ; skip t (globals) + (setq erc-input-marker (make-marker) + erc-insert-marker (make-marker)) (set-marker erc-insert-marker (point-max)) (erc-display-prompt) (should (= (point) erc-input-marker)) - (add-hook 'erc-pre-send-functions #'erc-add-to-input-ring nil t) + ;; Just in case erc-ring-mode is already on + (setq-local erc-pre-send-functions nil) + (add-hook 'erc-pre-send-functions #'erc-add-to-input-ring) ;; (cl-letf (((symbol-function 'erc-process-input-line) (lambda (&rest _) -- 2.31.1 --=-=-= Content-Type: text/x-patch; charset=utf-8 Content-Disposition: attachment; filename=0002-Fix-a-couple-byte-compiler-warnings-in-erc.el.patch Content-Transfer-Encoding: quoted-printable >From e898612de9e2df42c6a769fa88eb02eaeb8b0b78 Mon Sep 17 00:00:00 2001 From: "F. Jason Park" Date: Wed, 21 Jul 2021 00:26:38 -0700 Subject: [PATCH 2/2] Fix a couple byte-compiler warnings in erc.el MIME-Version: 1.0 Content-Type: text/plain; charset=3DUTF-8 Content-Transfer-Encoding: 8bit * lisp/erc/erc.el (erc-lurker-maybe-trim): Prevent warning from showing up in third-party code re library not loaded by autoloading rx.el when needed. Also make function do what it claims to. It now only removes trailing chars typically appended automatically for uniquifying purposes when a desired nick is already taken. Special thanks to Mattias Engdeg=C3=A5rd for making this more respectable. Bug#50005. (erc-with-all-buffers-of-server): Mute byte compiler warning saying return value unused. Leave possible optimizations for some future person. --- lisp/erc/erc.el | 25 ++++-------- test/lisp/erc/erc-tests.el | 79 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+), 17 deletions(-) diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el index 73202016ba..ec3ed354b6 100644 --- a/lisp/erc/erc.el +++ b/lisp/erc/erc.el @@ -1732,20 +1732,11 @@ erc-with-all-buffers-of-server where PRED matches or in all buffers of the server process if PRED is nil." (declare (indent 1) (debug (form form body))) - ;; Make the evaluation have the correct order - (let ((pre (make-symbol "pre")) - (pro (make-symbol "pro"))) - `(let* ((,pro ,process) - (,pre ,pred) - (res (mapcar (lambda (buffer) - (with-current-buffer buffer - ,@forms)) - (erc-buffer-list ,pre - ,pro)))) - ;; Silence the byte-compiler by binding the result of mapcar to - ;; a variable. - (ignore res) - res))) + (macroexp-let2 nil pred pred + `(erc-buffer-filter (lambda () + (when (or (not ,pred) (funcall ,pred)) + ,@forms)) + ,process))) =20 (define-obsolete-function-alias 'erc-iswitchb #'erc-switch-to-buffer "25.1= ") (defun erc--switch-to-buffer (&optional arg) @@ -2583,9 +2574,9 @@ erc-lurker-maybe-trim Returns NICK unmodified unless `erc-lurker-trim-nicks' is non-nil." (if erc-lurker-trim-nicks - (replace-regexp-in-string - (regexp-opt-charset (string-to-list erc-lurker-ignore-chars)) - "" nick) + (string-trim-right + nick (rx-to-string `(+ (in ,@(string-to-list + erc-lurker-ignore-chars))))) nick)) =20 (defcustom erc-lurker-hide-list nil diff --git a/test/lisp/erc/erc-tests.el b/test/lisp/erc/erc-tests.el index 9efcf4a703..d1a1405999 100644 --- a/test/lisp/erc/erc-tests.el +++ b/test/lisp/erc/erc-tests.el @@ -47,6 +47,85 @@ erc--read-time-period (cl-letf (((symbol-function 'read-string) (lambda (&rest _) "1d"))) (should (equal (erc--read-time-period "foo: ") 86400)))) =20 +(ert-deftest erc-with-all-buffers-of-server () + (let (proc-exnet + proc-onet + erc-kill-channel-hook erc-kill-server-hook erc-kill-buffer-hook) + + (with-current-buffer (get-buffer-create "OtherNet") + (erc-mode) + (setq proc-onet (start-process "sleep" (current-buffer) "sleep" "1") + erc-server-process proc-onet + erc-network 'OtherNet) + (set-process-query-on-exit-flag erc-server-process nil)) + + (with-current-buffer (get-buffer-create "ExampleNet") + (erc-mode) + (setq proc-exnet (start-process "sleep" (current-buffer) "sleep" "1") + erc-server-process proc-exnet + erc-network 'ExampleNet) + (set-process-query-on-exit-flag erc-server-process nil)) + + (with-current-buffer (get-buffer-create "#foo") + (erc-mode) + (setq erc-server-process proc-exnet) + (setq erc-default-recipients '("#foo"))) + + (with-current-buffer (get-buffer-create "#spam") + (erc-mode) + (setq erc-server-process proc-onet) + (setq erc-default-recipients '("#spam"))) + + (with-current-buffer (get-buffer-create "#bar") + (erc-mode) + (setq erc-server-process proc-onet) + (setq erc-default-recipients '("#bar"))) + + (with-current-buffer (get-buffer-create "#baz") + (erc-mode) + (setq erc-server-process proc-exnet) + (setq erc-default-recipients '("#baz"))) + + (should (eq (get-buffer-process "ExampleNet") proc-exnet)) + (erc-with-all-buffers-of-server (get-buffer-process "ExampleNet") + nil + (kill-buffer)) + + (should-not (get-buffer "ExampleNet")) + (should-not (get-buffer "#foo")) + (should-not (get-buffer "#baz")) + (should (get-buffer "OtherNet")) + (should (get-buffer "#bar")) + (should (get-buffer "#spam")) + + (let* ((test (lambda () (not (string=3D (buffer-name) "#spam")))) + (calls 0) + (get-test (lambda () (cl-incf calls) test))) + + (erc-with-all-buffers-of-server proc-onet + (funcall get-test) + (kill-buffer)) + + (should (=3D calls 1))) + + (should-not (get-buffer "OtherNet")) + (should-not (get-buffer "#bar")) + (should (get-buffer "#spam")) + (kill-buffer "#spam"))) + +(ert-deftest erc-lurker-maybe-trim () + (let (erc-lurker-trim-nicks + (erc-lurker-ignore-chars "_`")) + + (should (string=3D "nick`" (erc-lurker-maybe-trim "nick`"))) + + (setq erc-lurker-trim-nicks t) + (should (string=3D "nick" (erc-lurker-maybe-trim "nick`"))) + (should (string=3D "ni`_ck" (erc-lurker-maybe-trim "ni`_ck__``"))) + + (setq erc-lurker-ignore-chars "_-`") ; set of chars, not character alts + (should (string=3D "nick" (erc-lurker-maybe-trim "nick-_`"))))) + (ert-deftest erc-ring-previous-command-base-case () (ert-info ("Create ring when nonexistent and do nothing") (let (erc-input-ring --=20 2.31.1 --=-=-=--