* how to reverse a region of several words?
@ 2008-07-28 8:11 sunway
2008-07-28 9:03 ` Thierry Volpiatto
` (3 more replies)
0 siblings, 4 replies; 11+ messages in thread
From: sunway @ 2008-07-28 8:11 UTC (permalink / raw)
To: help-gnu-emacs
e.g. the region contains words like "aaa bbb ccc ddd",I want to
reverse it to "ddd ccc bbb aaa"
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: how to reverse a region of several words?
2008-07-28 8:11 how to reverse a region of several words? sunway
@ 2008-07-28 9:03 ` Thierry Volpiatto
2008-07-28 15:00 ` tyler
` (2 subsequent siblings)
3 siblings, 0 replies; 11+ messages in thread
From: Thierry Volpiatto @ 2008-07-28 9:03 UTC (permalink / raw)
To: sunway; +Cc: help-gnu-emacs
sunway <sunwayforever@gmail.com> writes:
> e.g. the region contains words like "aaa bbb ccc ddd",I want to
> reverse it to "ddd ccc bbb aaa"
>
kill your region with some kill func (check elisp man)
and store it (A)
Be sure to remember the position of your text.
,----
| ELISP> (setq A "aaa bbb ccc ddd")
| "aaa bbb ccc ddd"
| ELISP> (setq A (split-string A))
| ("aaa" "bbb" "ccc" "ddd")
|
| ELISP> (setq A (reverse A))
| ("ddd" "ccc" "bbb" "aaa")
|
| ELISP> (mapconcat #'(lambda (x) x) A " ")
| "ddd ccc bbb aaa"
`----
And now insert the new text at the saved position.
--
A + Thierry Volpiatto
Location: Saint-Cyr-Sur-Mer - France
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: how to reverse a region of several words?
2008-07-28 8:11 how to reverse a region of several words? sunway
2008-07-28 9:03 ` Thierry Volpiatto
@ 2008-07-28 15:00 ` tyler
2008-07-28 17:44 ` Pascal J. Bourguignon
[not found] ` <mailman.15498.1217257259.18990.help-gnu-emacs@gnu.org>
3 siblings, 0 replies; 11+ messages in thread
From: tyler @ 2008-07-28 15:00 UTC (permalink / raw)
To: help-gnu-emacs
sunway <sunwayforever@gmail.com> writes:
> e.g. the region contains words like "aaa bbb ccc ddd",I want to
> reverse it to "ddd ccc bbb aaa"
>
I think you probably want the words themselves to stay in the original
order, i.e., one two => two one? If not, if you want to completely
reverse the text, i.e., one two => owt eno, I use the following
function:
(defun reverse-string (beg1 end2)
"Reverse the order of characters in a region.
From a program takes two point or marker arguments, BEG1 and END2."
(interactive "r")
(if (> beg1 end2)
(let (mid) (setq mid end2 end2 beg1 beg1 mid)))
(while (< beg1 (1- end2))
(let ((end1 (1+ beg1))
(beg2 (1- end2)))
(transpose-regions beg1 end1 beg2 end2))
(incf beg1)
(decf end2)))
Cheers,
Tyler
--
Philosophy of science is about as useful to scientists as ornithology is to
birds. --Richard Feynman
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: how to reverse a region of several words?
2008-07-28 8:11 how to reverse a region of several words? sunway
2008-07-28 9:03 ` Thierry Volpiatto
2008-07-28 15:00 ` tyler
@ 2008-07-28 17:44 ` Pascal J. Bourguignon
2008-07-28 18:51 ` tyler
[not found] ` <mailman.15498.1217257259.18990.help-gnu-emacs@gnu.org>
3 siblings, 1 reply; 11+ messages in thread
From: Pascal J. Bourguignon @ 2008-07-28 17:44 UTC (permalink / raw)
To: help-gnu-emacs
sunway <sunwayforever@gmail.com> writes:
> e.g. the region contains words like "aaa bbb ccc ddd",I want to
> reverse it to "ddd ccc bbb aaa"
Select it and M-x reverse-line RET
--
__Pascal Bourguignon__ http://www.informatimago.com/
Until real software engineering is developed, the next best practice
is to develop with a dynamic system that has extreme late binding in
all aspects. The first system to really do this in an important way
is Lisp. -- Alan Kay
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: how to reverse a region of several words?
2008-07-28 17:44 ` Pascal J. Bourguignon
@ 2008-07-28 18:51 ` tyler
0 siblings, 0 replies; 11+ messages in thread
From: tyler @ 2008-07-28 18:51 UTC (permalink / raw)
To: help-gnu-emacs
pjb@informatimago.com (Pascal J. Bourguignon) writes:
> sunway <sunwayforever@gmail.com> writes:
>
>> e.g. the region contains words like "aaa bbb ccc ddd",I want to
>> reverse it to "ddd ccc bbb aaa"
>
> Select it and M-x reverse-line RET
What version are you running? 23.0.60.1 doesn't have reverse-line...
Tyler
--
Tired of spyware? Try Firefox:
www.firefox.com
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: how to reverse a region of several words?
[not found] ` <mailman.15498.1217257259.18990.help-gnu-emacs@gnu.org>
@ 2008-07-29 3:13 ` sunway
2008-07-29 5:35 ` Thierry Volpiatto
2008-07-29 5:46 ` Pascal J. Bourguignon
0 siblings, 2 replies; 11+ messages in thread
From: sunway @ 2008-07-29 3:13 UTC (permalink / raw)
To: help-gnu-emacs
I want to transpose "one two" to " two one"
On Jul 28, 11:00 pm, tyler <tyler.sm...@mail.mcgill.ca> wrote:
> sunway <sunwayfore...@gmail.com> writes:
> > e.g. the region contains words like "aaa bbb ccc ddd",I want to
> > reverse it to "ddd ccc bbb aaa"
>
> I think you probably want the words themselves to stay in the original
> order, i.e., one two => two one? If not, if you want to completely
> reverse the text, i.e., one two => owt eno, I use the following
> function:
>
> (defun reverse-string (beg1 end2)
> "Reverse the order of characters in a region.
> From a program takes two point or marker arguments, BEG1 and END2."
> (interactive "r")
> (if (> beg1 end2)
> (let (mid) (setq mid end2 end2 beg1 beg1 mid)))
> (while (< beg1 (1- end2))
> (let ((end1 (1+ beg1))
> (beg2 (1- end2)))
> (transpose-regions beg1 end1 beg2 end2))
> (incf beg1)
> (decf end2)))
>
> Cheers,
>
> Tyler
> --
> Philosophy of science is about as useful to scientists as ornithology is to
> birds. --Richard Feynman
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: how to reverse a region of several words?
2008-07-29 3:13 ` sunway
@ 2008-07-29 5:35 ` Thierry Volpiatto
2008-07-29 5:46 ` Pascal J. Bourguignon
1 sibling, 0 replies; 11+ messages in thread
From: Thierry Volpiatto @ 2008-07-29 5:35 UTC (permalink / raw)
To: sunway; +Cc: help-gnu-emacs
sunway <sunwayforever@gmail.com> writes:
> I want to transpose "one two" to " two one"
Put the point on two and hit M-t.
,----[ C-h k M-t ]
| M-t runs the command transpose-words, which is an interactive compiled
| Lisp function in `simple.el'.
|
| It is bound to M-t.
|
| (transpose-words arg)
|
| Interchange words around point, leaving point at end of them.
| With prefix arg arg, effect is to take word before or around point
| and drag it forward past arg other words (backward if arg negative).
| If arg is zero, the words around or after point and around or after mark
| are interchanged.
|
| [back]
`----
> On Jul 28, 11:00 pm, tyler <tyler.sm...@mail.mcgill.ca> wrote:
>> sunway <sunwayfore...@gmail.com> writes:
>> > e.g. the region contains words like "aaa bbb ccc ddd",I want to
>> > reverse it to "ddd ccc bbb aaa"
>>
>> I think you probably want the words themselves to stay in the original
>> order, i.e., one two => two one? If not, if you want to completely
>> reverse the text, i.e., one two => owt eno, I use the following
>> function:
>>
>> (defun reverse-string (beg1 end2)
>> "Reverse the order of characters in a region.
>> From a program takes two point or marker arguments, BEG1 and END2."
>> (interactive "r")
>> (if (> beg1 end2)
>> (let (mid) (setq mid end2 end2 beg1 beg1 mid)))
>> (while (< beg1 (1- end2))
>> (let ((end1 (1+ beg1))
>> (beg2 (1- end2)))
>> (transpose-regions beg1 end1 beg2 end2))
>> (incf beg1)
>> (decf end2)))
>>
>> Cheers,
>>
>> Tyler
>> --
>> Philosophy of science is about as useful to scientists as ornithology is to
>> birds. --Richard Feynman
>
--
A + Thierry Volpiatto
Location: Saint-Cyr-Sur-Mer - France
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: how to reverse a region of several words?
2008-07-29 3:13 ` sunway
2008-07-29 5:35 ` Thierry Volpiatto
@ 2008-07-29 5:46 ` Pascal J. Bourguignon
2008-07-30 6:27 ` sunway
1 sibling, 1 reply; 11+ messages in thread
From: Pascal J. Bourguignon @ 2008-07-29 5:46 UTC (permalink / raw)
To: help-gnu-emacs
sunway <sunwayforever@gmail.com> writes:
> I want to transpose "one two" to " two one"
put the cursor between one and two and type:
M-x transpose-words RET or M-t
--
__Pascal Bourguignon__ http://www.informatimago.com/
NOTE: The most fundamental particles in this product are held
together by a "gluing" force about which little is currently known
and whose adhesive power can therefore not be permanently
guaranteed.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: how to reverse a region of several words?
2008-07-29 5:46 ` Pascal J. Bourguignon
@ 2008-07-30 6:27 ` sunway
2008-07-30 7:00 ` Pascal J. Bourguignon
2008-07-30 7:43 ` Thierry Volpiatto
0 siblings, 2 replies; 11+ messages in thread
From: sunway @ 2008-07-30 6:27 UTC (permalink / raw)
To: help-gnu-emacs
no, I want to transpose "one two three four" to "four three two one"
On Jul 29, 1:46 pm, p...@informatimago.com (Pascal J. Bourguignon)
wrote:
> sunway <sunwayfore...@gmail.com> writes:
> > I want to transpose "one two" to " two one"
>
> put the cursor between one and two and type:
> M-x transpose-words RET or M-t
>
> --
> __Pascal Bourguignon__ http://www.informatimago.com/
>
> NOTE: The most fundamental particles in this product are held
> together by a "gluing" force about which little is currently known
> and whose adhesive power can therefore not be permanently
> guaranteed.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: how to reverse a region of several words?
2008-07-30 6:27 ` sunway
@ 2008-07-30 7:00 ` Pascal J. Bourguignon
2008-07-30 7:43 ` Thierry Volpiatto
1 sibling, 0 replies; 11+ messages in thread
From: Pascal J. Bourguignon @ 2008-07-30 7:00 UTC (permalink / raw)
To: help-gnu-emacs
sunway <sunwayforever@gmail.com> writes:
>
> On Jul 29, 1:46 pm, p...@informatimago.com (Pascal J. Bourguignon)
> wrote:
>> sunway <sunwayfore...@gmail.com> writes:
>> > I want to transpose "one two" to " two one"
>>
>> put the cursor between one and two and type:
>> M-x transpose-words RET or M-t
>
> no, I want to transpose "one two three four" to "four three two one"
(defun reverse-words (start end)
(interactive "r")
(let ((words (reverse (split-string (buffer-substring start end)))))
(delete-region start end)
(dolist (word words)
(insert word " "))
(backward-char 1)
(delete-char 1)))
--
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?
----------> http://www.netmeister.org/news/learn2quote.html <-----------
---> http://homepage.ntlworld.com/g.mccaughan/g/remarks/uquote.html <---
__Pascal Bourguignon__ http://www.informatimago.com/
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: how to reverse a region of several words?
2008-07-30 6:27 ` sunway
2008-07-30 7:00 ` Pascal J. Bourguignon
@ 2008-07-30 7:43 ` Thierry Volpiatto
1 sibling, 0 replies; 11+ messages in thread
From: Thierry Volpiatto @ 2008-07-30 7:43 UTC (permalink / raw)
To: sunway; +Cc: help-gnu-emacs
sunway <sunwayforever@gmail.com> writes:
> no, I want to transpose "one two three four" to "four three two one"
,----
| (defun reverse-sentence-region (&optional separator)
| (interactive "P")
| (let ((beg (point))
| (sentence)
| (separator))
| (when current-prefix-arg
| (setq separator (read-string "Separator: ")))
| (kill-region beg (mark))
| (setq sentence (nth 0 kill-ring))
| (setq sentence (split-string sentence (if separator
| separator)))
| (setq sentence (reverse sentence))
| (setq sentence (mapconcat #'(lambda (x) x)
| sentence
| (if separator
| separator
| " ")))
| (insert sentence)))
`----
1) Mark region
2) Run M-x reverse-sentence-region
or C-u M-x reverse-sentence-region
if the words in region are separated with something else than " "
> On Jul 29, 1:46 pm, p...@informatimago.com (Pascal J. Bourguignon)
> wrote:
>> sunway <sunwayfore...@gmail.com> writes:
>> > I want to transpose "one two" to " two one"
>>
>> put the cursor between one and two and type:
>> M-x transpose-words RET or M-t
>>
>> --
>> __Pascal Bourguignon__ http://www.informatimago.com/
>>
>> NOTE: The most fundamental particles in this product are held
>> together by a "gluing" force about which little is currently known
>> and whose adhesive power can therefore not be permanently
>> guaranteed.
>
--
A + Thierry Volpiatto
Location: Saint-Cyr-Sur-Mer - France
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2008-07-30 7:43 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-07-28 8:11 how to reverse a region of several words? sunway
2008-07-28 9:03 ` Thierry Volpiatto
2008-07-28 15:00 ` tyler
2008-07-28 17:44 ` Pascal J. Bourguignon
2008-07-28 18:51 ` tyler
[not found] ` <mailman.15498.1217257259.18990.help-gnu-emacs@gnu.org>
2008-07-29 3:13 ` sunway
2008-07-29 5:35 ` Thierry Volpiatto
2008-07-29 5:46 ` Pascal J. Bourguignon
2008-07-30 6:27 ` sunway
2008-07-30 7:00 ` Pascal J. Bourguignon
2008-07-30 7:43 ` Thierry Volpiatto
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).