[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: capitalize-dwim
From: |
joakim |
Subject: |
Re: capitalize-dwim |
Date: |
Fri, 14 Aug 2009 18:33:41 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.1.50 (gnu/linux) |
Xah Lee <address@hidden> writes:
> On Fri, Aug 14, 2009 at 8:26 AM, Stefan Monnier <address@hidden> wrote:
>
> >> case changing. Some work on word, some on region... with
> >> transient-mark-mode on now, the region versions could be merged.
>
> It's worth a try, indeed.
>
> >> The lower case and upper case and cap first versions can also be
> >> merged, i think, into one dwim version that just cycles.
>
> I doubt this would work: I very often use M-u, or M-c repeatedly to
> apply the change to a bunch of words: assuming the first word is
> all-lowercase, what should your new command do on the second invocation:
> apply the same change to the second word or cycle the capitalization
> style on the first word?
>
>
> the code i've been using cycle the case of the first letter, on current word,
> or region if there's one.
>
> here's the code i've been using for about 2 years.
> Andreas Politz and Nikolaj Schumacher had helped in the code.
>
> (defun toggle-letter-case ()
> "Toggle the letter case of current word or text selection.
> Toggles from 3 cases: UPPER CASE, lower case, Title Case,
Maybe it could also toggle the case of the character under cursor? I
find it useful when working with misspelled CamelCase identifiers.
> in that cyclic order."
> (interactive)
> (let (pos1 pos2 (deactivate-mark nil) (case-fold-search nil))
> (if (and transient-mark-mode mark-active)
> (setq pos1 (region-beginning)
> pos2 (region-end))
> (setq pos1 (car (bounds-of-thing-at-point 'word))
> pos2 (cdr (bounds-of-thing-at-point 'word))))
>
> (when (not (eq last-command this-command))
> (save-excursion
> (goto-char pos1)
> (cond
> ((looking-at "[[:lower:]][[:lower:]]") (put this-command 'state "all
> lower"))
> ((looking-at "[[:upper:]][[:upper:]]") (put this-command 'state "all
> caps") )
> ((looking-at "[[:upper:]][[:lower:]]") (put this-command 'state "init
> caps") )
> (t (put this-command 'state "all lower") )
> )
> )
> )
>
> (cond
> ((string= "all lower" (get this-command 'state))
> (upcase-initials-region pos1 pos2) (put this-command 'state "init caps"))
> ((string= "init caps" (get this-command 'state))
> (upcase-region pos1 pos2) (put this-command 'state "all caps"))
> ((string= "all caps" (get this-command 'state))
> (downcase-region pos1 pos2) (put this-command 'state "all lower"))
> )
> )
> )
>
> some logic on why i find this useful i wrote about here:
> http://xahlee.org/emacs/modernization_upcase-word.html
>
> Xah
>
--
Joakim Verona
- Re: Patch to change just-one-space, (continued)
- Re: Patch to change just-one-space, Deniz Dogan, 2009/08/13
- Re: Patch to change just-one-space, Daniel Colascione, 2009/08/13
- Re: Patch to change just-one-space, Deniz Dogan, 2009/08/13
- Re: Patch to change just-one-space, Robert J. Chassell, 2009/08/14
- Re: Patch to change just-one-space, Deniz Dogan, 2009/08/13
- Re: Patch to change just-one-space, Teemu Likonen, 2009/08/14
- Re: Patch to change just-one-space, Xah Lee, 2009/08/13
- Re: Patch to change just-one-space, Deniz Dogan, 2009/08/14
- capitalize-dwim (was: Patch to change just-one-space), Stefan Monnier, 2009/08/14
- Re: capitalize-dwim (was: Patch to change just-one-space), Xah Lee, 2009/08/14
- Re: capitalize-dwim,
joakim <=
- Re: capitalize-dwim, Richard Stallman, 2009/08/14
- Re: Patch to change just-one-space, David Kastrup, 2009/08/14
Re: Patch to change just-one-space, Juri Linkov, 2009/08/13