At 3:02 PM -0700 9/23/04, Jose Cuthberto wrote:
jose@Aumara.zzn.com (Jose Cuthberto)
wrote in message
news:<cf2523f3.0409221705.73716a7d@posting.google.com>...
> An example would clarify the problem:
>
> Suppose you want to paste a single killed line (in kill buffer
using two C-k's)
> you can trivially do it like this:
>
> C-u 2 C-y
>
This does not do the same thing as typing "C-y" twice,
which is what you imply it does.
> In this case you had to enter the
numbers.
>
> I have a file like this:
>
> 5
> line1
> 6
> line2
>
> Now I must convert it to a file with 5 line1's and 6 line2's and
so on.
> It is a long file.
>
> How do I pick 5 and put it into C-u so that it is done 5
times.
>
You can't.
> I can write macros. and I can also
write single line lisp functions.
> Unfortunately there is no yank cammand that can take the argument
5.
> nor do i know the lisp function that can take the count and pass
it to
> lisp function yank. I would want to avoid writing a loops, and
vars etc.
>
Too bad.
> Thanks to the star who can
help!!!
>
> jose
still waiting for a solution
You should seriously consider learning how to do a bit more than
just write macros and "single line lisp functions."
You would get a lot more help if you at least made a good-faith effort
to write your own function, presented the best you could come up with
to the forum, and asked for tips on making it better.
Here's a fish. Study it and try to learn something.
Execute it using M-x or bind it to a keystroke.
(defun expand-file (from-file to-file
&optional replace)
"Expand alternating count and text lines from FROM-FILE to
TO-FILE.
Interactively prompts for file names.
If REPLACE (command prefix), replaces previous contents of
TO-FILE,
otherwise appends to its end.
If FROM-FILE is already in a buffer when command is invoked,
expansion
starts from the current position of point. Otherwise it starts
from
the top of the file.
When done, selects TO-FILE for the current window but does not
automatically save it."
(interactive "fExpand from file: \nFto file:
\nP")
(let (from-buf to_buf count line)
(setq from-buf (find-file-noselect from-file)
to-buf
(find-file-noselect to-file) )
(set-buffer to-buf)
(if replace
(erase-buffer)
(end-of-buffer) )
(set-buffer from-buf)
(while (looking-at "[0-9]+$")
(setq count (read
(current-buffer)))
(forward-line 1)
(setq line
(buffer-substring-no-properties
(point) (1+
(line-end-position))))
(forward-line 1)
(set-buffer to-buf)
(while (> count 0)
(insert line)
(setq count (1- count))
)
(set-buffer from-buf) )
(find-file to-file)
(set-buffer from-buf)
(save-excursion
(skip-chars-forward "
\t\n")
(if (not (eobp))
(progn
(message "Warning: non-integer line count in %s. Expansion
stops."
from-file)
(switch-to-buffer-other-window from-buf) ) ) ) ))
--Greg