From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Andreas Politz Newsgroups: gmane.emacs.help Subject: Re: something like un-camelcase region Date: Mon, 26 Jul 2010 20:46:03 +0200 Organization: FH-Trier Message-ID: <87sk36ytck.fsf@fh-trier.de> References: <88OdnflNLbAk49HRnZ2dnUVZ_r-dnZ2d@sysmatrix.net> <87y6czqs1r.fsf@fh-trier.de> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: dough.gmane.org 1291851810 12668 80.91.229.12 (8 Dec 2010 23:43:30 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 8 Dec 2010 23:43:30 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Thu Dec 09 00:43:26 2010 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1PQTfF-0000yt-Iy for geh-help-gnu-emacs@m.gmane.org; Thu, 09 Dec 2010 00:43:13 +0100 Original-Received: from localhost ([127.0.0.1]:55442 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PQTTO-0003e5-Fn for geh-help-gnu-emacs@m.gmane.org; Wed, 08 Dec 2010 18:30:58 -0500 Original-Path: usenet.stanford.edu!newsserver.news.garr.it!kanaga.switch.ch!switch.ch!news.belwue.de!news.uni-kl.de!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 44 Original-NNTP-Posting-Host: 143-93-54-11.arno.fh-trier.de Original-X-Trace: news.uni-kl.de 1280169963 29782 143.93.54.11 (26 Jul 2010 18:46:03 GMT) Original-X-Complaints-To: usenet@news.uni-kl.de Original-NNTP-Posting-Date: Mon, 26 Jul 2010 18:46:03 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) Cancel-Lock: sha1:+X4IohhWuIyg4j4OkfqPi2CQkvk= Cache-Post-Path: arno.fh-trier.de!unknown@dslb-084-059-197-008.pools.arcor-ip.net X-Cache: nntpcache 3.0.1 (see http://www.nntpcache.org/) Original-Xref: usenet.stanford.edu gnu.emacs.help:180077 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:76229 Archived-At: "B. T. Raven" writes: > Andreas Politz wrote: >> "B. T. Raven" writes: >> >>> I am looking for a regular expression that finds capital letters within >>> words (i.e. not at beginning of word or line)so that I can downcase >>> these caps only. I have a couple of non-functional functions that might >>> illustrate the general problem. >>> >> >> (while (re-search-forward "\\b\\w\\(\\w+\\)") >> (replace-match (downcase (match-string 1)) t t nil 1)) >> >> Downcases all but the first character in all words. > > Can't get this to work in ver. 22.3 > Where does match-string come from if re-search-forward returns only the > buffer position? How would your (while) function above be wrapped in an > interactive function? Or doesn't that make sense here? It works if I > just evaluate it at beginning of file of interest. Does it have to be > wrapped in a lamba to make it interactive? > re-search-forward and some other functions store informations about the matched entities (e.g. 1st parentheses-group) and functions like match-string access this data. See (info "(elisp) Match Data") . Here is one way of wrapping it up. Of course it (and therefore the regexp) depends on your idea of a camel-cased word. (defun uncamelcase-region (beg end) (interactive (if (and transient-mark-mode mark-active) (list (region-beginning) (region-end)) (list (point) (point-max)))) (goto-char beg) (while (re-search-forward "\\b\\w\\(\\w+\\)" end 'move) (downcase-region (match-beginning 1) (match-end 1)) ;;(replace-match (downcase (match-string 1)) t t nil 1) )) -ap