From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Eric Abrahamsen Newsgroups: gmane.emacs.bugs Subject: bug#29489: Obsolete gnus-remove-if and gnus-remove-if-not Date: Thu, 30 Nov 2017 10:29:44 -0800 Message-ID: <87zi73tyav.fsf@ericabrahamsen.net> References: <87o9nmgwue.fsf@ericabrahamsen.net> <87r2sim0je.fsf@users.sourceforge.net> <87a7z6c5i0.fsf@ericabrahamsen.net> <87mv35nchc.fsf@users.sourceforge.net> <87609tdfnz.fsf@ericabrahamsen.net> <871skhlsk0.fsf@users.sourceforge.net> <871skhdam3.fsf@ericabrahamsen.net> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Trace: blaine.gmane.org 1512155930 25285 195.159.176.226 (1 Dec 2017 19:18:50 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Fri, 1 Dec 2017 19:18:50 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) To: 29489@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Dec 01 20:18:46 2017 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1eKqpg-0006Hd-9d for geb-bug-gnu-emacs@m.gmane.org; Fri, 01 Dec 2017 20:18:44 +0100 Original-Received: from localhost ([::1]:60028 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eKqpn-0003q3-Fw for geb-bug-gnu-emacs@m.gmane.org; Fri, 01 Dec 2017 14:18:51 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:34807) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eKox5-0008PH-4K for bug-gnu-emacs@gnu.org; Fri, 01 Dec 2017 12:18:17 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eKowt-0006h9-9n for bug-gnu-emacs@gnu.org; Fri, 01 Dec 2017 12:18:09 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:59887) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eKowt-0006h3-5Q for bug-gnu-emacs@gnu.org; Fri, 01 Dec 2017 12:18:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1eKowr-0003xi-RZ; Fri, 01 Dec 2017 12:18:01 -0500 X-Loop: help-debbugs@gnu.org In-Reply-To: <87o9nmgwue.fsf@ericabrahamsen.net> Resent-From: Eric Abrahamsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org, bugs@gnus.org Resent-Date: Fri, 01 Dec 2017 17:18:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 29489 X-GNU-PR-Package: emacs,gnus X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.151214865215193 (code B ref -1); Fri, 01 Dec 2017 17:18:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 1 Dec 2017 17:17:32 +0000 Original-Received: from localhost ([127.0.0.1]:40334 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eKowO-0003wy-DB for submit@debbugs.gnu.org; Fri, 01 Dec 2017 12:17:32 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:43288) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eKowN-0003wm-Lo for submit@debbugs.gnu.org; Fri, 01 Dec 2017 12:17:32 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eKowG-0006GO-Dq for submit@debbugs.gnu.org; Fri, 01 Dec 2017 12:17:26 -0500 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:33748) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eKowG-0006GI-8A for submit@debbugs.gnu.org; Fri, 01 Dec 2017 12:17:24 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:34152) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eKowD-0007jI-H4 for bug-gnu-emacs@gnu.org; Fri, 01 Dec 2017 12:17:23 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eKowA-00068g-5a for bug-gnu-emacs@gnu.org; Fri, 01 Dec 2017 12:17:21 -0500 Original-Received: from [195.159.176.226] (port=34691 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eKow8-00064D-IT for bug-gnu-emacs@gnu.org; Fri, 01 Dec 2017 12:17:18 -0500 Original-Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1eKTai-0006bW-EG for bug-gnu-emacs@gnu.org; Thu, 30 Nov 2017 19:29:44 +0100 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 308 Original-X-Complaints-To: usenet@blaine.gmane.org Cancel-Lock: sha1:LThlK6Lj169snAz5pF68XixdpiQ= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 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.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:140594 Archived-At: --=-=-= Content-Type: text/plain Eric Abrahamsen writes: > Noam Postavsky writes: > >> Eric Abrahamsen writes: >> >>> For the interim, all that matters is consistency: >>> >>> (let ((list nil) >>> (ob (make-vector 3 0))) >>> (intern "foo" ob) >>> (intern "bar" ob) >>> (intern "xxx" ob) >>> (gnus-remove-if-not (lambda (_) t) ob)) ;=> (xxx 0 0) >> >> But: >> >> (let ((list nil) >> (ob (make-vector 3 0))) >> (intern "foo" ob) >> (intern "bar" ob) >> (intern "xxx" ob) >> (gnus-remove-if-not (lambda (_) t) >> ob t)) ;=> (xxx bar foo) > > Good catch! Thanks for that. I was too hasty, and had already moved on > to running the next patch. > > There are only two places in the code where that third argument is > passed. I can rework those two locations so that they work properly, > until the next step is taken. For a brief, amusing moment, I thought I could write a seq-filter method that specialized on obarrays, but unfortunately there's no specializer for obarrays. Oh well. Here's another version of the patch. It's not pretty, but I do hope it's temporary. --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0001-Obsolete-gnus-remove-if-and-gnus-remove-if-not.patch >From 75ef198feb472c84a3fab5fd3e8d5f7e03ecdb01 Mon Sep 17 00:00:00 2001 From: Eric Abrahamsen Date: Sat, 25 Nov 2017 18:42:55 -0800 Subject: [PATCH] Obsolete gnus-remove-if and gnus-remove-if-not Use seq-remove and seq-filter, respectively, instead. * lisp/gnus/gnus-util.el: Remove functions and replace with define-obsolete-function-alias calls. * lisp/gnus/gnus.el: Require seq here. * lisp/gnus/gnus-art.el (gnus-mime-view-part-as-type): * lisp/gnus/gnus-icalendar.el (gnus-icalendar-event--get-attendee-names): * lisp/gnus/gnus-score.el (gnus-summary-score-effect): * lisp/gnus/gnus-sum.el (gnus-read-move-group-name): * lisp/gnus/gnus-topic.el (gnus-group-prepare-topics): * lisp/gnus/gnus-win.el (gnus-get-buffer-window): * lisp/gnus/nnmail.el (nnmail-purge-split-history): * lisp/gnus/nnmaildir.el (nnmaildir-request-scan): * lisp/gnus/nnrss.el (nnrss-make-hash-index): Replace calls in all these locations. --- lisp/gnus/gnus-art.el | 2 +- lisp/gnus/gnus-icalendar.el | 4 ++-- lisp/gnus/gnus-score.el | 2 +- lisp/gnus/gnus-sum.el | 34 ++++++++++++++++++++-------------- lisp/gnus/gnus-topic.el | 4 ++-- lisp/gnus/gnus-util.el | 38 +++----------------------------------- lisp/gnus/gnus-win.el | 2 +- lisp/gnus/gnus.el | 1 + lisp/gnus/nnmail.el | 2 +- lisp/gnus/nnmaildir.el | 2 +- lisp/gnus/nnrss.el | 2 +- 11 files changed, 34 insertions(+), 59 deletions(-) diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index 97aa878ab6..6ee0d7b023 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -5219,7 +5219,7 @@ gnus-mime-view-part-as-type (gnus-completing-read "View as MIME type" (if pred - (gnus-remove-if-not pred (mailcap-mime-types)) + (seq-filter pred (mailcap-mime-types)) (mailcap-mime-types)) nil nil nil (car default))))) diff --git a/lisp/gnus/gnus-icalendar.el b/lisp/gnus/gnus-icalendar.el index cca4a81d1c..38c3ea36d6 100644 --- a/lisp/gnus/gnus-icalendar.el +++ b/lisp/gnus/gnus-icalendar.el @@ -169,7 +169,7 @@ gnus-icalendar-event--find-attendee (defun gnus-icalendar-event--get-attendee-names (ical) (let* ((event (car (icalendar--all-events ical))) - (attendee-props (gnus-remove-if-not + (attendee-props (seq-filter (lambda (p) (eq (car p) 'ATTENDEE)) (caddr event)))) @@ -180,7 +180,7 @@ gnus-icalendar-event--get-attendee-names (or (plist-get (cadr prop) 'CN) (replace-regexp-in-string "^.*MAILTO:" "" (caddr prop)))) (attendees-by-type (type) - (gnus-remove-if-not + (seq-filter (lambda (p) (string= (attendee-role p) type)) attendee-props)) (attendee-names-by-type diff --git a/lisp/gnus/gnus-score.el b/lisp/gnus/gnus-score.el index 765dfab570..a2cc07db46 100644 --- a/lisp/gnus/gnus-score.el +++ b/lisp/gnus/gnus-score.el @@ -921,7 +921,7 @@ gnus-summary-score-effect (interactive (list (gnus-completing-read "Header" (mapcar 'car - (gnus-remove-if-not + (seq-filter (lambda (x) (fboundp (nth 2 x))) gnus-header-index)) t) diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index e599a8460f..4dee306c81 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el @@ -12270,21 +12270,27 @@ gnus-read-move-group-name (if (> (length articles) 1) (format "these %d articles" (length articles)) "this article"))) + valid-names (to-newsgroup - (cond - ((null split-name) - (gnus-group-completing-read - prom - (gnus-remove-if-not 'gnus-valid-move-group-p gnus-active-hashtb t) - nil prefix nil default)) - ((= 1 (length split-name)) - (gnus-group-completing-read - prom - (gnus-remove-if-not 'gnus-valid-move-group-p gnus-active-hashtb t) - nil prefix 'gnus-group-history (car split-name))) - (t - (gnus-completing-read - prom (nreverse split-name) nil nil 'gnus-group-history)))) + (progn + (mapatoms (lambda (g) + (when (gnus-valid-move-group-p g) + (push g valid-names))) + gnus-active-hashtb) + (cond + ((null split-name) + (gnus-group-completing-read + prom + valid-names + nil prefix nil default)) + ((= 1 (length split-name)) + (gnus-group-completing-read + prom + valid-names + nil prefix 'gnus-group-history (car split-name))) + (t + (gnus-completing-read + prom (nreverse split-name) nil nil 'gnus-group-history))))) (to-method (gnus-server-to-method (gnus-group-method to-newsgroup))) encoded) (when to-newsgroup diff --git a/lisp/gnus/gnus-topic.el b/lisp/gnus/gnus-topic.el index ba756e0314..065215b471 100644 --- a/lisp/gnus/gnus-topic.el +++ b/lisp/gnus/gnus-topic.el @@ -460,9 +460,9 @@ gnus-group-prepare-topics (unless gnus-killed-hashtb (gnus-make-hashtable-from-killed)) (gnus-group-prepare-flat-list-dead - (gnus-remove-if (lambda (group) + (seq-remove (lambda (group) (or (gnus-group-entry group) - (gnus-gethash group gnus-killed-hashtb))) + (gethash group gnus-killed-hashtb))) not-in-list) gnus-level-killed ?K regexp))) diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el index b7477a7fa8..ed112273ca 100644 --- a/lisp/gnus/gnus-util.el +++ b/lisp/gnus/gnus-util.el @@ -1117,41 +1117,9 @@ gnus-alive-p (with-current-buffer gnus-group-buffer (eq major-mode 'gnus-group-mode)))) -(defun gnus-remove-if (predicate sequence &optional hash-table-p) - "Return a copy of SEQUENCE with all items satisfying PREDICATE removed. -SEQUENCE should be a list, a vector, or a string. Returns always a list. -If HASH-TABLE-P is non-nil, regards SEQUENCE as a hash table." - (let (out) - (if hash-table-p - (mapatoms (lambda (symbol) - (unless (funcall predicate symbol) - (push symbol out))) - sequence) - (unless (listp sequence) - (setq sequence (append sequence nil))) - (while sequence - (unless (funcall predicate (car sequence)) - (push (car sequence) out)) - (setq sequence (cdr sequence)))) - (nreverse out))) - -(defun gnus-remove-if-not (predicate sequence &optional hash-table-p) - "Return a copy of SEQUENCE with all items not satisfying PREDICATE removed. -SEQUENCE should be a list, a vector, or a string. Returns always a list. -If HASH-TABLE-P is non-nil, regards SEQUENCE as a hash table." - (let (out) - (if hash-table-p - (mapatoms (lambda (symbol) - (when (funcall predicate symbol) - (push symbol out))) - sequence) - (unless (listp sequence) - (setq sequence (append sequence nil))) - (while sequence - (when (funcall predicate (car sequence)) - (push (car sequence) out)) - (setq sequence (cdr sequence)))) - (nreverse out))) +(define-obsolete-function-alias 'gnus-remove-if 'seq-remove "27.1") + +(define-obsolete-function-alias 'gnus-remove-if-not 'seq-filter "27.1") (defun gnus-grep-in-list (word list) "Find if a WORD matches any regular expression in the given LIST." diff --git a/lisp/gnus/gnus-win.el b/lisp/gnus/gnus-win.el index 8e47ae3f98..4f720463b4 100644 --- a/lisp/gnus/gnus-win.el +++ b/lisp/gnus/gnus-win.el @@ -513,7 +513,7 @@ gnus-get-buffer-window (memq frame '(t 0 visible))) (car (let ((frames (frames-on-display-list))) - (gnus-remove-if (lambda (win) (not (memq (window-frame win) + (seq-remove (lambda (win) (not (memq (window-frame win) frames))) (get-buffer-window-list buffer nil frame))))) (t diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el index 3458fdea71..597470c381 100644 --- a/lisp/gnus/gnus.el +++ b/lisp/gnus/gnus.el @@ -33,6 +33,7 @@ (require 'wid-edit) (require 'mm-util) (require 'nnheader) +(require 'seq) ;; These are defined afterwards with gnus-define-group-parameter (defvar gnus-ham-process-destinations) diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el index ad58d29208..5ed80a9bb6 100644 --- a/lisp/gnus/nnmail.el +++ b/lisp/gnus/nnmail.el @@ -2034,7 +2034,7 @@ nnmail-purge-split-history "Remove all instances of GROUP from `nnmail-split-history'." (let ((history nnmail-split-history)) (while history - (setcar history (gnus-remove-if (lambda (e) (string= (car e) group)) + (setcar history (seq-remove (lambda (e) (string= (car e) group)) (car history))) (pop history)) (setq nnmail-split-history (delq nil nnmail-split-history)))) diff --git a/lisp/gnus/nnmaildir.el b/lisp/gnus/nnmaildir.el index 708a3426af..3e4a87cee7 100644 --- a/lisp/gnus/nnmaildir.el +++ b/lisp/gnus/nnmaildir.el @@ -915,7 +915,7 @@ nnmaildir-request-scan (setq dirs (funcall srv-ls srv-dir nil "\\`[^.]" 'nosort) dirs (if (zerop (length target-prefix)) dirs - (gnus-remove-if + (seq-remove (lambda (dir) (and (>= (length dir) (length target-prefix)) (string= (substring dir 0 diff --git a/lisp/gnus/nnrss.el b/lisp/gnus/nnrss.el index 9a3a562a5d..aa19c376d1 100644 --- a/lisp/gnus/nnrss.el +++ b/lisp/gnus/nnrss.el @@ -625,7 +625,7 @@ nnrss-mime-encode-string ;;; Snarf functions (defun nnrss-make-hash-index (item) (gnus-message 9 "nnrss: Making hash index of %s" (gnus-prin1-to-string item)) - (setq item (gnus-remove-if + (setq item (seq-remove (lambda (field) (when (listp field) (memq (car field) nnrss-ignore-article-fields))) -- 2.15.0 --=-=-=--