From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Reuben Thomas Newsgroups: gmane.emacs.bugs Subject: bug#9429: 24.0.50; Extended count-words Date: Sat, 03 Sep 2011 17:41:03 +0100 Message-ID: <87pqjhfujk.fsf@sc3d.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Trace: dough.gmane.org 1315068107 29676 80.91.229.12 (3 Sep 2011 16:41:47 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sat, 3 Sep 2011 16:41:47 +0000 (UTC) To: 9429@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Sep 03 18:41:43 2011 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1QztHm-0000V9-28 for geb-bug-gnu-emacs@m.gmane.org; Sat, 03 Sep 2011 18:41:39 +0200 Original-Received: from localhost ([::1]:59873 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QztHl-0004BX-FO for geb-bug-gnu-emacs@m.gmane.org; Sat, 03 Sep 2011 12:41:37 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:35855) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QztHi-0004B0-1f for bug-gnu-emacs@gnu.org; Sat, 03 Sep 2011 12:41:35 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QztHg-0007RE-K2 for bug-gnu-emacs@gnu.org; Sat, 03 Sep 2011 12:41:34 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:53357) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QztHg-0007RA-IJ for bug-gnu-emacs@gnu.org; Sat, 03 Sep 2011 12:41:32 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.69) (envelope-from ) id 1QztL5-00044q-2w; Sat, 03 Sep 2011 12:45:03 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Reuben Thomas Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 03 Sep 2011 16:45:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 9429 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.131506829215632 (code B ref -1); Sat, 03 Sep 2011 16:45:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 3 Sep 2011 16:44:52 +0000 Original-Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QztKt-000445-EX for submit@debbugs.gnu.org; Sat, 03 Sep 2011 12:44:51 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QztKo-00043u-69 for submit@debbugs.gnu.org; Sat, 03 Sep 2011 12:44:47 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QztHN-0007Pr-T4 for submit@debbugs.gnu.org; Sat, 03 Sep 2011 12:41:15 -0400 Original-Received: from lists.gnu.org ([140.186.70.17]:49338) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QztHN-0007Pn-Ra for submit@debbugs.gnu.org; Sat, 03 Sep 2011 12:41:13 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:35825) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QztHM-00049O-D5 for bug-gnu-emacs@gnu.org; Sat, 03 Sep 2011 12:41:13 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QztHK-0007PK-6p for bug-gnu-emacs@gnu.org; Sat, 03 Sep 2011 12:41:12 -0400 Original-Received: from exprod7og113.obsmtp.com ([64.18.2.179]:59058) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1QztHJ-0007Ox-Tm for bug-gnu-emacs@gnu.org; Sat, 03 Sep 2011 12:41:10 -0400 Original-Received: from mail-ww0-f45.google.com ([74.125.82.45]) (using TLSv1) by exprod7ob113.postini.com ([64.18.6.12]) with SMTP ID DSNKTmJYo+95J3fuGxe0iuh27L0BNnzh995m@postini.com; Sat, 03 Sep 2011 09:41:09 PDT Original-Received: by mail-ww0-f45.google.com with SMTP id 9so3158692wwg.2 for ; Sat, 03 Sep 2011 09:41:07 -0700 (PDT) Original-Received: by 10.216.168.70 with SMTP id j48mr700947wel.86.1315068066933; Sat, 03 Sep 2011 09:41:06 -0700 (PDT) Original-Received: from skwd (87-194-87-241.bethere.co.uk [87.194.87.241]) by mx.google.com with ESMTPS id gd6sm2518828wbb.1.2011.09.03.09.41.05 (version=TLSv1/SSLv3 cipher=OTHER); Sat, 03 Sep 2011 09:41:05 -0700 (PDT) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list Resent-Date: Sat, 03 Sep 2011 12:45:03 -0400 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 1) 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:50568 Archived-At: I noticed the function count-words-region recently, which is similar to a function =E2=80=98wc=E2=80=99 which I=E2=80=99ve been using for some time. I noticed that it was possible to combine the two functions without disturbing either. I offer the following superset function, which has the convenient name =E2=80=9Cwc=E2=80=9D, for use as an unbound command, i.= e. M-x wc RET. The implementation below is intended to replace count-words-region for users, since it behaves like count-words-region, but with some additional features: it counts the whole buffer if there is no region, and allows the word count to be inserted in the buffer when called interactively, by use of a prefix argument. However, for the moment it does this by calling count-words-region, rather than reimplementing it. It seems to me that it could, however, replace count-words-region (ideally, from my point of view, with a =E2=80=9Cwc=E2=80=9D convenience al= ias), and I=E2=80=99d be happy to supply such a definition. I have an Emacs copyright assignment on file, and I=E2=80=99d be delighted = if this function were adopted in Emacs. (defun wc (start end) "Print the number of words in the region or buffer. When called interactively, the word count is printed in echo area, unless a prefix argument is given." (interactive "r") (if (called-interactively-p 'interactive) (if (use-region-p) (setq start (region-beginning) end (region-end)) (setq start (point-min) end (point-max)))) (let ((matches (count-words-region start end))) (if (or (not (called-interactively-p 'interactive)) current-prefix-arg) (insert-string (number-to-string matches)) (message "%s has %d words" (if (use-region-p) "Region" "Buffer") matches)))) In GNU Emacs 24.0.50.2 (x86_64-unknown-linux-gnu, GTK+ Version 2.24.4) of 2011-09-03 on skwd Windowing system distributor `The X.Org Foundation', version 11.0.11001000 Important settings: value of $LC_ALL: nil value of $LC_COLLATE: nil value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: en_GB.UTF-8 value of $XMODIFIERS: nil locale-coding-system: utf-8-unix default enable-multibyte-characters: t Major mode: Emacs-Lisp Minor modes in effect: recentf-mode: t show-paren-mode: t server-mode: t savehist-mode: t minibuffer-electric-default-mode: t iswitchb-mode: t icomplete-mode: t global-whitespace-mode: t global-auto-revert-mode: t desktop-save-mode: t tooltip-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: t Recent input: M-> M-< M-x M-x r e p o r t - e m a c s - b u g Recent messages: Loading vc-git...done Wrote /home/rrt/.emacs.desktop.lock Desktop: 4 buffers restored, 40 to restore lazily. For information about GNU Emacs and the GNU system, type C-h C-a. Mark set [2 times] Loading cperl-mode...done Loading make-mode...done Loading /home/rrt/local/share/emacs/site-lisp/lua-mode.el (source)... prefix key set to "C-c" Loading /home/rrt/local/share/emacs/site-lisp/lua-mode.el (source)...done Load-path shadows: /home/rrt/.emacs.d/elpa/dictionary-1.8.7/dictionary-init hides /usr/local/s= hare/emacs/24.0.50/site-lisp/dictionary-el/dictionary-init /home/rrt/.emacs.d/elpa/dictionary-1.8.7/dictionary hides /usr/local/share/= emacs/24.0.50/site-lisp/dictionary-el/dictionary /home/rrt/.emacs.d/elpa/dictionary-1.8.7/link hides /usr/local/share/emacs/= 24.0.50/site-lisp/dictionary-el/link /home/rrt/.emacs.d/elpa/dictionary-1.8.7/connection hides /usr/local/share/= emacs/24.0.50/site-lisp/dictionary-el/connection /home/rrt/local/share/emacs/site-lisp/dict hides /usr/local/share/emacs/24.= 0.50/site-lisp/emacs-goodies-el/dict /usr/share/emacs-snapshot/site-lisp/ruby1.8-elisp/ruby-mode hides /usr/loca= l/share/emacs/24.0.50/lisp/progmodes/ruby-mode /usr/local/share/emacs/24.0.50/site-lisp/auctex/tex-style hides /usr/share/= emacs/site-lisp/auctex/tex-style /usr/local/share/emacs/24.0.50/site-lisp/auctex/tex-mik hides /usr/share/em= acs/site-lisp/auctex/tex-mik /usr/local/share/emacs/24.0.50/site-lisp/auctex/multi-prompt hides /usr/sha= re/emacs/site-lisp/auctex/multi-prompt /usr/local/share/emacs/24.0.50/site-lisp/auctex/tex-jp hides /usr/share/ema= cs/site-lisp/auctex/tex-jp /usr/local/share/emacs/24.0.50/site-lisp/auctex/tex-info hides /usr/share/e= macs/site-lisp/auctex/tex-info /usr/local/share/emacs/24.0.50/site-lisp/auctex/latex hides /usr/share/emac= s/site-lisp/auctex/latex /usr/local/share/emacs/24.0.50/site-lisp/auctex/tex hides /usr/share/emacs/= site-lisp/auctex/tex /usr/local/share/emacs/24.0.50/site-lisp/auctex/texmathp hides /usr/share/e= macs/site-lisp/auctex/texmathp /usr/local/share/emacs/24.0.50/site-lisp/auctex/context-nl hides /usr/share= /emacs/site-lisp/auctex/context-nl /usr/local/share/emacs/24.0.50/site-lisp/auctex/tex-font hides /usr/share/e= macs/site-lisp/auctex/tex-font /usr/local/share/emacs/24.0.50/site-lisp/auctex/toolbar-x hides /usr/share/= emacs/site-lisp/auctex/toolbar-x /usr/local/share/emacs/24.0.50/site-lisp/auctex/tex-buf hides /usr/share/em= acs/site-lisp/auctex/tex-buf /usr/local/share/emacs/24.0.50/site-lisp/auctex/tex-fptex hides /usr/share/= emacs/site-lisp/auctex/tex-fptex /usr/local/share/emacs/24.0.50/site-lisp/auctex/bib-cite hides /usr/share/e= macs/site-lisp/auctex/bib-cite /usr/local/share/emacs/24.0.50/site-lisp/auctex/context-en hides /usr/share= /emacs/site-lisp/auctex/context-en /usr/local/share/emacs/24.0.50/site-lisp/auctex/tex-fold hides /usr/share/e= macs/site-lisp/auctex/tex-fold /usr/local/share/emacs/24.0.50/site-lisp/auctex/tex-bar hides /usr/share/em= acs/site-lisp/auctex/tex-bar /usr/local/share/emacs/24.0.50/site-lisp/auctex/context hides /usr/share/em= acs/site-lisp/auctex/context /usr/local/share/emacs/24.0.50/site-lisp/auctex/font-latex hides /usr/share= /emacs/site-lisp/auctex/font-latex /usr/local/share/emacs/24.0.50/site-lisp/psgml/psgml-sysdep hides /usr/shar= e/emacs/site-lisp/psgml/psgml-sysdep /usr/local/share/emacs/24.0.50/site-lisp/psgml/psgml-init hides /usr/share/= emacs/site-lisp/psgml/psgml-init /usr/local/share/emacs/24.0.50/site-lisp/psgml/psgml-other hides /usr/share= /emacs/site-lisp/psgml/psgml-other /usr/local/share/emacs/24.0.50/site-lisp/psgml/psgml-html hides /usr/share/= emacs/site-lisp/psgml/psgml-html /usr/local/share/emacs/24.0.50/site-lisp/psgml/psgml hides /usr/share/emacs= /site-lisp/psgml/psgml Features: (shadow sort gnus-util mail-extr message format-spec rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mailabbrev mail-utils gmm-utils mailheader emacsbug inform-mode lua-mode make-mode cperl-mode vc-git cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs flymake compile comint ring face-remap regexp-opt flyspell smart-quotes auto-dictionary-autoloads c-eldoc-autoloads dictionary-autoloads diff-git-autoloads dired-isearch-autoloads full-ack-autoloads guess-style-autoloads kill-ring-search-autoloads magit-autoloads mv-shell-autoloads tumble-autoloads http-post-simple-autoloads package tabulated-list completing-help recentf tree-widget wid-edit uniquify paren server savehist minibuf-eldef iswitchb icomplete whitespace autorevert desktop cus-start cus-load ropemacs pymacs go-mode-load ffap ispell advice advice-preload yasnippet help-fns derived edmacro kmacro easymenu assoc cl psgml-init muse-autoloads emacs-goodies-el emacs-goodies-custom emacs-goodies-loaddefs easy-mmode preview-latex tex-site auto-loads user-site-loaddefs time-date tooltip ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer loaddefs button faces cus-face files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process dbusbind dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs) --=20 http://rrt.sc3d.org/