unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* elisp how to insert text at end of each line
@ 2013-04-10 17:28 acomber
  2013-04-10 17:36 ` Steven Degutis
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: acomber @ 2013-04-10 17:28 UTC (permalink / raw)
  To: Help-gnu-emacs

I tried:

  (while (search-forward "\n")
     (insert "My text to insert")
  )

and tried using $ symbol.

Neither worked.

Is there a way to do this in elisp?



--
View this message in context: http://emacs.1067599.n5.nabble.com/elisp-how-to-insert-text-at-end-of-each-line-tp283410.html
Sent from the Emacs - Help mailing list archive at Nabble.com.



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: elisp how to insert text at end of each line
  2013-04-10 17:28 elisp how to insert text at end of each line acomber
@ 2013-04-10 17:36 ` Steven Degutis
  2013-04-10 17:39 ` Teemu Likonen
  2013-04-10 18:13 ` Thorsten Jolitz
  2 siblings, 0 replies; 11+ messages in thread
From: Steven Degutis @ 2013-04-10 17:36 UTC (permalink / raw)
  To: acomber; +Cc: help-gnu-emacs@gnu.org

[-- Attachment #1: Type: text/plain, Size: 630 bytes --]

If you want to do it interactively as a user, I would use
multiple-cursors.el (in MELPA,
https://github.com/magnars/multiple-cursors.el/).

Otherwise, don't know.

-Steven


On Wed, Apr 10, 2013 at 12:28 PM, acomber <deedexy@gmail.com> wrote:

> I tried:
>
>   (while (search-forward "\n")
>      (insert "My text to insert")
>   )
>
> and tried using $ symbol.
>
> Neither worked.
>
> Is there a way to do this in elisp?
>
>
>
> --
> View this message in context:
> http://emacs.1067599.n5.nabble.com/elisp-how-to-insert-text-at-end-of-each-line-tp283410.html
> Sent from the Emacs - Help mailing list archive at Nabble.com.
>
>

[-- Attachment #2: Type: text/html, Size: 1265 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: elisp how to insert text at end of each line
  2013-04-10 17:28 elisp how to insert text at end of each line acomber
  2013-04-10 17:36 ` Steven Degutis
@ 2013-04-10 17:39 ` Teemu Likonen
  2013-04-10 17:42   ` Teemu Likonen
  2013-04-10 18:13 ` Thorsten Jolitz
  2 siblings, 1 reply; 11+ messages in thread
From: Teemu Likonen @ 2013-04-10 17:39 UTC (permalink / raw)
  To: acomber; +Cc: Help-gnu-emacs

[-- Attachment #1: Type: text/plain, Size: 247 bytes --]

acomber [2013-04-10 10:28:29 -07:00] wrote:

> I tried:
>
>   (while (search-forward "\n")
>      (insert "My text to insert")
>   )

Try this instead:

    (while (re-search-forward "$" nil t)
      (insert "foo")
      (goto-char (1+ (point))))

[-- Attachment #2: Type: application/pgp-signature, Size: 835 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: elisp how to insert text at end of each line
  2013-04-10 17:39 ` Teemu Likonen
@ 2013-04-10 17:42   ` Teemu Likonen
  0 siblings, 0 replies; 11+ messages in thread
From: Teemu Likonen @ 2013-04-10 17:42 UTC (permalink / raw)
  To: acomber; +Cc: Help-gnu-emacs

[-- Attachment #1: Type: text/plain, Size: 258 bytes --]

Teemu Likonen [2013-04-10 20:39:43 +03:00] wrote:

> Try this instead:
>
>     (while (re-search-forward "$" nil t)
>       (insert "foo")
>       (goto-char (1+ (point))))

Sorry, don't do that. It goes to infinite loop. I'll go studying it more
closely...

[-- Attachment #2: Type: application/pgp-signature, Size: 835 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: elisp how to insert text at end of each line
       [not found] <mailman.23893.1365614915.855.help-gnu-emacs@gnu.org>
@ 2013-04-10 18:07 ` Michael Heerdegen
  0 siblings, 0 replies; 11+ messages in thread
From: Michael Heerdegen @ 2013-04-10 18:07 UTC (permalink / raw)
  To: help-gnu-emacs; +Cc: Help-gnu-emacs

acomber <deedexy@gmail.com> writes:

> I tried:
>
>   (while (search-forward "\n")
>      (insert "My text to insert")
>   )
>
> and tried using $ symbol.

From LISP: You want `search-forward-regexp'.  Or better, use
`end-of-line'.

Interactively:

C-M-%           (query-replace-regexp)
$ RET
some text RET

Or indeed, multiple-cursors.el also does things like that very well.


Regards,

Michael.



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: elisp how to insert text at end of each line
  2013-04-10 17:28 elisp how to insert text at end of each line acomber
  2013-04-10 17:36 ` Steven Degutis
  2013-04-10 17:39 ` Teemu Likonen
@ 2013-04-10 18:13 ` Thorsten Jolitz
  2013-04-11 10:23   ` acomber
  2 siblings, 1 reply; 11+ messages in thread
From: Thorsten Jolitz @ 2013-04-10 18:13 UTC (permalink / raw)
  To: help-gnu-emacs

acomber <deedexy@gmail.com> writes:

> I tried:
>
>   (while (search-forward "\n")
>      (insert "My text to insert")
>   )

maybe:

#begin_src emacs-lisp
(defun insert-at-end-of-line (text)
  (goto-char (point-min))
  (while (not (eobp))
    (end-of-line)
    (insert text)
    (next-line)))
#+end_src

-- 
cheers,
Thorsten




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: elisp how to insert text at end of each line
  2013-04-10 18:13 ` Thorsten Jolitz
@ 2013-04-11 10:23   ` acomber
  2013-04-11 10:50     ` Andreas Röhler
                       ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: acomber @ 2013-04-11 10:23 UTC (permalink / raw)
  To: Help-gnu-emacs

That works, thanks.  I implemented as a function which inserted literal text.

But I like the idea of being able to pass parameters to the function.  so I
tried this:

(defun insert-at-end-of-line (text) 
  "convert word tbl to html tbl"
  (interactive)
  (goto-char (point-min)) 
  (while (not (eobp)) 
    (end-of-line) 
    (insert text) 
    (next-line)
  )
) 

But then in emacs how do I pass the text parameter?

I keep getting:

call-interactively: Wrong number of arguments: (lambda (text) "convert word
tbl to html tbl" (interactive) (goto-char (point-min)) (while (not (eobp))
(end-of-line) (insert text) (next-line))), 0

Do I have to specify somewhere that function takes parameters???



--
View this message in context: http://emacs.1067599.n5.nabble.com/elisp-how-to-insert-text-at-end-of-each-line-tp283410p283460.html
Sent from the Emacs - Help mailing list archive at Nabble.com.



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: elisp how to insert text at end of each line
  2013-04-11 10:23   ` acomber
@ 2013-04-11 10:50     ` Andreas Röhler
  2013-04-11 11:01     ` Andreas Röhler
  2013-04-11 11:32     ` Thorsten Jolitz
  2 siblings, 0 replies; 11+ messages in thread
From: Andreas Röhler @ 2013-04-11 10:50 UTC (permalink / raw)
  To: help-gnu-emacs

Am 11.04.2013 12:23, schrieb acomber:
> That works, thanks.  I implemented as a function which inserted literal text.
>
> But I like the idea of being able to pass parameters to the function.  so I
> tried this:
>
> (defun insert-at-end-of-line (text)
>    "convert word tbl to html tbl"
>    (interactive)
>    (goto-char (point-min))
>    (while (not (eobp))
>      (end-of-line)
>      (insert text)
>      (next-line)
>    )
> )
>
> But then in emacs how do I pass the text parameter?
>
> I keep getting:
>
> call-interactively: Wrong number of arguments: (lambda (text) "convert word
> tbl to html tbl" (interactive) (goto-char (point-min)) (while (not (eobp))
> (end-of-line) (insert text) (next-line))), 0
>
> Do I have to specify somewhere that function takes parameters???
>
>
>
> --
> View this message in context: http://emacs.1067599.n5.nabble.com/elisp-how-to-insert-text-at-end-of-each-line-tp283410p283460.html
> Sent from the Emacs - Help mailing list archive at Nabble.com.
>
>

that's probably not the best way to do it, just to play on,
fill the text at the (invisible) prompt in the minibuffer

(defun insert-at-end-of-line (text)
   "convert word tbl to html tbl"
   (interactive "*M")
   (goto-char (point-min))
   (while (not (eobp))
     (end-of-line)
     (insert text)
     (forward-line 1)))

BTW use forward-line in programs, as next-line is designed for interactive use.



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: elisp how to insert text at end of each line
  2013-04-11 10:23   ` acomber
  2013-04-11 10:50     ` Andreas Röhler
@ 2013-04-11 11:01     ` Andreas Röhler
  2013-04-11 11:32     ` Thorsten Jolitz
  2 siblings, 0 replies; 11+ messages in thread
From: Andreas Röhler @ 2013-04-11 11:01 UTC (permalink / raw)
  To: help-gnu-emacs@gnu.org List

Am 11.04.2013 12:23, schrieb acomber:
> That works, thanks.  I implemented as a function which inserted literal text.
>

Interactively just do

M-x query-replace-regexp RET $ RET YOUR-INSERT-TEXT RET

Andreas




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: elisp how to insert text at end of each line
  2013-04-11 10:23   ` acomber
  2013-04-11 10:50     ` Andreas Röhler
  2013-04-11 11:01     ` Andreas Röhler
@ 2013-04-11 11:32     ` Thorsten Jolitz
  2013-04-11 14:02       ` acomber
  2 siblings, 1 reply; 11+ messages in thread
From: Thorsten Jolitz @ 2013-04-11 11:32 UTC (permalink / raw)
  To: help-gnu-emacs

acomber <deedexy@gmail.com> writes:

> (defun insert-at-end-of-line (text) 
>   "convert word tbl to html tbl"
>   (interactive)
>   (goto-char (point-min)) 
>   (while (not (eobp)) 
>     (end-of-line) 
>     (insert text) 
>     (next-line)
>   )
> ) 
>
> But then in emacs how do I pass the text parameter?

Yes, sorry, I used it with (setq text "hello world") in the scratch
buffer and forgot to account for user input.

-- 
cheers,
Thorsten




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: elisp how to insert text at end of each line
  2013-04-11 11:32     ` Thorsten Jolitz
@ 2013-04-11 14:02       ` acomber
  0 siblings, 0 replies; 11+ messages in thread
From: acomber @ 2013-04-11 14:02 UTC (permalink / raw)
  To: Help-gnu-emacs

Don't know if its useful but as a result of learning from this forum, I
implemented like this:

(defun do-cols (text) 
  (goto-char (point-min)) 
     (while (search-forward "\t" nil t)
        (replace-match text)
     )
)

(defun do-rows (text) 
  "convert word tbl to html tbl"
  (interactive)
  (goto-char (point-min)) 
  (while (not (eobp)) 
    (end-of-line) 
    (insert text) 
    (forward-line)
  )
)

(defun do-table ()
  "convert word tbl to html tbl"
  (interactive)
  (goto-char (point-min))
  (insert "
")
  (insert "
")
  (insert "	")  
  (do-cols "	") 
  (do-rows "
")
  (insert "")
  (insert "")
  (insert "
")   
)

It’s probably the naffest lisp function ever, but it works for me.

It requires the only text in the buffer to be the table data and only works
on a single table.



--
View this message in context: http://emacs.1067599.n5.nabble.com/elisp-how-to-insert-text-at-end-of-each-line-tp283410p283483.html
Sent from the Emacs - Help mailing list archive at Nabble.com.



^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2013-04-11 14:02 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-10 17:28 elisp how to insert text at end of each line acomber
2013-04-10 17:36 ` Steven Degutis
2013-04-10 17:39 ` Teemu Likonen
2013-04-10 17:42   ` Teemu Likonen
2013-04-10 18:13 ` Thorsten Jolitz
2013-04-11 10:23   ` acomber
2013-04-11 10:50     ` Andreas Röhler
2013-04-11 11:01     ` Andreas Röhler
2013-04-11 11:32     ` Thorsten Jolitz
2013-04-11 14:02       ` acomber
     [not found] <mailman.23893.1365614915.855.help-gnu-emacs@gnu.org>
2013-04-10 18:07 ` Michael Heerdegen

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).