From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Thierry Volpiatto Newsgroups: gmane.emacs.bugs Subject: bug#13032: 24.3.50; Request: Provide a `delete-duplicate-lines' command Date: Tue, 04 Dec 2012 08:04:13 +0100 Organization: Emacs Helm Message-ID: <87obia9u36.fsf@gmail.com> References: <87obig2ap2.fsf@mail.jurta.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1354604746 4895 80.91.229.3 (4 Dec 2012 07:05:46 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 4 Dec 2012 07:05:46 +0000 (UTC) To: 13032@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Dec 04 08:05:58 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 1TfmZp-0008Hu-Vw for geb-bug-gnu-emacs@m.gmane.org; Tue, 04 Dec 2012 08:05:58 +0100 Original-Received: from localhost ([::1]:60482 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TfmZe-0003Qz-5Q for geb-bug-gnu-emacs@m.gmane.org; Tue, 04 Dec 2012 02:05:46 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:53650) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TfmZa-0003Ql-Sw for bug-gnu-emacs@gnu.org; Tue, 04 Dec 2012 02:05:44 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TfmZU-0001mS-J7 for bug-gnu-emacs@gnu.org; Tue, 04 Dec 2012 02:05:42 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:42141) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TfmZU-0001mM-FM for bug-gnu-emacs@gnu.org; Tue, 04 Dec 2012 02:05:36 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1Tfmbq-0008IU-Cq for bug-gnu-emacs@gnu.org; Tue, 04 Dec 2012 02:08:02 -0500 X-Loop: help-debbugs@gnu.org In-Reply-To: Resent-From: Thierry Volpiatto Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 04 Dec 2012 07:08:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 13032 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.135460484131847 (code B ref -1); Tue, 04 Dec 2012 07:08:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 4 Dec 2012 07:07:21 +0000 Original-Received: from localhost ([127.0.0.1]:52392 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TfmbA-0008Hc-Uc for submit@debbugs.gnu.org; Tue, 04 Dec 2012 02:07:21 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:54932) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Tfmb8-0008HV-4g for submit@debbugs.gnu.org; Tue, 04 Dec 2012 02:07:19 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TfmYf-0001UC-Gr for submit@debbugs.gnu.org; Tue, 04 Dec 2012 02:04:51 -0500 Original-Received: from lists.gnu.org ([208.118.235.17]:41799) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TfmYf-0001Tz-D0 for submit@debbugs.gnu.org; Tue, 04 Dec 2012 02:04:45 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:43698) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TfmYY-0003HD-UK for bug-gnu-emacs@gnu.org; Tue, 04 Dec 2012 02:04:45 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TfmYT-0001Pl-ON for bug-gnu-emacs@gnu.org; Tue, 04 Dec 2012 02:04:38 -0500 Original-Received: from plane.gmane.org ([80.91.229.3]:59366) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TfmYT-0001PO-Ii for bug-gnu-emacs@gnu.org; Tue, 04 Dec 2012 02:04:33 -0500 Original-Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1TfmYa-0006Wq-Gf for bug-gnu-emacs@gnu.org; Tue, 04 Dec 2012 08:04:40 +0100 Original-Received: from lbe83-2-78-243-104-167.fbx.proxad.net ([78.243.104.167]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 04 Dec 2012 08:04:40 +0100 Original-Received: from thierry.volpiatto by lbe83-2-78-243-104-167.fbx.proxad.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 04 Dec 2012 08:04:40 +0100 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 40 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: lbe83-2-78-243-104-167.fbx.proxad.net User-Agent: Gnus/5.130006 (Ma Gnus v0.6) Emacs/24.3.50 (gnu/linux) Cancel-Lock: sha1:pIPs9cu0k1GuE0L2gtwhsM/wuIw= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. 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.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x 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:67887 Archived-At: Hi, just for info, here a simple and fast version. Dani Moncayo writes: >> This is what I currently use to delete duplicate lines: >> >> C-u M-| awk -- '!a[$0]++' RET >> >> Do you intend to create a Lisp function with the same result? > > I don't know awk, but I've tried that command and seems to do what I > want: remove all duplicate lines in the region. Although it don't > inform about the number of lines deleted, which is important to me. --8<---------------cut here---------------start------------->8--- (defun delete-duplicate-lines (beg end) "Delete duplicate lines in region." (interactive "r") (save-excursion (save-restriction (narrow-to-region beg end) (let ((lines (helm-fast-remove-dups (split-string (buffer-string) "\n" t) :test 'equal))) (delete-region (point-min) (point-max)) (loop for l in lines do (insert (concat l "\n"))))))) --8<---------------cut here---------------end--------------->8--- helm-fast-remove-dups is a function in helm: https://github.com/emacs-helm/helm/blob/master/helm-utils.el line 342 For the number of lines removed it is easy to modify the function to do so. -- Thierry Get my Gnupg key: gpg --keyserver pgp.mit.edu --recv-keys 59F29997