From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Ivan Andrus Newsgroups: gmane.emacs.bugs Subject: bug#11295: 24.0.95; New ibuffer filter derived-mode Date: Mon, 23 Apr 2012 20:51:21 +0200 Message-ID: References: <5DACA6C4-9C85-4464-B488-5FEEB6919839@gmail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: multipart/mixed; boundary=Apple-Mail-40-417595815 X-Trace: dough.gmane.org 1335207151 27494 80.91.229.3 (23 Apr 2012 18:52:31 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Mon, 23 Apr 2012 18:52:31 +0000 (UTC) Cc: 11295@debbugs.gnu.org To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Apr 23 20:52:28 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1SMON7-0005QN-QB for geb-bug-gnu-emacs@m.gmane.org; Mon, 23 Apr 2012 20:52:26 +0200 Original-Received: from localhost ([::1]:41136 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SMON7-0000fM-99 for geb-bug-gnu-emacs@m.gmane.org; Mon, 23 Apr 2012 14:52:25 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:55226) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SMON4-0000fH-4C for bug-gnu-emacs@gnu.org; Mon, 23 Apr 2012 14:52:23 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SMON2-0007be-83 for bug-gnu-emacs@gnu.org; Mon, 23 Apr 2012 14:52:21 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:48277) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SMON1-0007bX-Ua for bug-gnu-emacs@gnu.org; Mon, 23 Apr 2012 14:52:20 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1SMONi-0001lu-3Z for bug-gnu-emacs@gnu.org; Mon, 23 Apr 2012 14:53:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Ivan Andrus Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 23 Apr 2012 18:53:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 11295 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 11295-submit@debbugs.gnu.org id=B11295.13352071376751 (code B ref 11295); Mon, 23 Apr 2012 18:53:02 +0000 Original-Received: (at 11295) by debbugs.gnu.org; 23 Apr 2012 18:52:17 +0000 Original-Received: from localhost ([127.0.0.1]:49308 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SMOMz-0001ko-58 for submit@debbugs.gnu.org; Mon, 23 Apr 2012 14:52:17 -0400 Original-Received: from mail-bk0-f44.google.com ([209.85.214.44]:35508) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SMOMv-0001kH-SL for 11295@debbugs.gnu.org; Mon, 23 Apr 2012 14:52:14 -0400 Original-Received: by bkuw5 with SMTP id w5so8714762bku.3 for <11295@debbugs.gnu.org>; Mon, 23 Apr 2012 11:51:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=subject:mime-version:content-type:from:in-reply-to:date:cc :message-id:references:to:x-mailer; bh=P40b7KRqTm2Ko6WVpp97O1ggZ0XhRiNnXQJM0mVcNCY=; b=g8Jvh1ZsrfbkWVJA0B7xHzyIW8ZnHzVqdkOjvU9IZi7aS0lMSg7YTq3KUsF6TaYLcY rgaZTG5656jYXlshR3MUfMj8LZfuI9HynK8vfHBQoBVVm3OfMHnykiGmzBp+spRhkgBb 4/RbypL2NAmimTXKGyF3mCtirRdG8kxVCojLyC29W+KTNZivON4U2+OvJiK3g1l4b99b AGr4K/etEeNTjMTw0PBF3RwkJHJkFzQo9UWFCsr9bg+xu1poFmEbLZDxP0Z9iLaNyRwL KSPjqqpDPyIDLkqhDCW1HgBlyAYkvBDsCpOhl9npV6uNA1qEVlYoafpXSl8OYFkmvF5V 0y2w== Original-Received: by 10.204.128.75 with SMTP id j11mr4908031bks.2.1335207085092; Mon, 23 Apr 2012 11:51:25 -0700 (PDT) Original-Received: from [10.0.2.16] (catv-80-99-177-93.catv.broadband.hu. [80.99.177.93]) by mx.google.com with ESMTPS id iq2sm7372128bkc.1.2012.04.23.11.51.22 (version=SSLv3 cipher=OTHER); Mon, 23 Apr 2012 11:51:23 -0700 (PDT) In-Reply-To: X-Mailer: Apple Mail (2.1084) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 140.186.70.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-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:59412 Archived-At: --Apple-Mail-40-417595815 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii On Apr 21, 2012, at 9:44 PM, Stefan Monnier wrote: >>> Why not use (with-current-buffer buf (derived-mode-p parent))? >> Uh. That would have been too easy. :-) >=20 > I can relate to that. >=20 >>> Another question: couldn't it simply *replace* the existing mode = filter? >>> I guess it could be a bit annoying if you want to see = fundamental-mode >>> buffers (since most modes derive from it), but that's the only = downside >>> I can think of. >> I thought about it, but I do in fact filter by fundamental-mode (and = a few >> other modes) to hide "useless" buffers. =20 >=20 > Fair enough. Please send us an updated patch, so we can install it, Attached is an updated patch. I also added a keybinding, though I'm not = entirely happy with it. I chose / w since w is an upside down m. My = first choices of m, M, p, P, d, and D were all taken. They were for = mode, parent, and derived. Feel free to ignore or change that portion. = Perhaps the key should replace one of the current mode filter keys m and = M. FWIW, I contacted assign@gnu.org for some changes in expand-region.el. -Ivan --Apple-Mail-40-417595815 Content-Disposition: attachment; filename=ibuffer.patch Content-Type: application/octet-stream; name="ibuffer.patch" Content-Transfer-Encoding: 7bit === modified file 'lisp/ibuf-ext.el' --- lisp/ibuf-ext.el 2012-01-19 07:21:25 +0000 +++ lisp/ibuf-ext.el 2012-04-23 17:58:13 +0000 @@ -973,8 +973,9 @@ (concat " [" (cadr type) ": " (format "%s]" (cdr qualifier))))))) -(defun ibuffer-list-buffer-modes () +(defun ibuffer-list-buffer-modes (&optional include-parents) "Create an alist of buffer modes currently in use. +If INCLUDE-PARENTS is non-nil then include parent modes. The list returned will be of the form (\"MODE-NAME\" . MODE-SYMBOL)." (let ((bufs (buffer-list)) (modes) @@ -982,10 +983,13 @@ (while bufs (setq this-mode (buffer-local-value 'major-mode (car bufs)) bufs (cdr bufs)) - (add-to-list - 'modes - `(,(symbol-name this-mode) . - ,this-mode))) + (while this-mode + (add-to-list + 'modes + `(,(symbol-name this-mode) . + ,this-mode)) + (setq this-mode (and include-parents + (get this-mode 'derived-mode-parent))))) modes)) @@ -1027,6 +1031,16 @@ ""))))) (eq qualifier (buffer-local-value 'major-mode buf))) +(define-ibuffer-filter derived-mode + "Toggle current view to buffers whose major mode inherits from QUALIFIER." + (:description "derived mode" + :reader + (intern + (completing-read "Filter by derived mode: " + (ibuffer-list-buffer-modes t) + nil nil ""))) + (with-current-buffer buf (derived-mode-p qualifier))) + ;;;###autoload (autoload 'ibuffer-filter-by-name "ibuf-ext") (define-ibuffer-filter name "Toggle current view to buffers with name matching QUALIFIER." === modified file 'lisp/ibuffer.el' --- lisp/ibuffer.el 2012-03-12 02:41:22 +0000 +++ lisp/ibuffer.el 2012-04-23 16:04:06 +0000 @@ -504,6 +504,7 @@ (define-key map (kbd "/ m") 'ibuffer-filter-by-mode) (define-key map (kbd "/ M") 'ibuffer-filter-by-used-mode) + (define-key map (kbd "/ w") 'ibuffer-filter-by-derived-mode) (define-key map (kbd "/ n") 'ibuffer-filter-by-name) (define-key map (kbd "/ c") 'ibuffer-filter-by-content) (define-key map (kbd "/ e") 'ibuffer-filter-by-predicate) --Apple-Mail-40-417595815--