unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* putting double quotes efficiently
@ 2013-06-03  5:43 C K Kashyap
  2013-06-03  7:26 ` Andreas Röhler
  0 siblings, 1 reply; 11+ messages in thread
From: C K Kashyap @ 2013-06-03  5:43 UTC (permalink / raw)
  To: help-gnu-emacs

Hi,
I am looking for a way to transform

print line1
print line two
print line3

into

print "line1";
print "line two";
print "line3";

most efficiently. For the first quote of each line I place the cursor
before line1 and I set the mark and then move all the way down to just
before line3 and then do a C-x-r-t " <RET>
Then I do a regexp replace to change $ to ";

I'd like to do better. While at it, can I please also know how I can use
the line range in the mark set mode in user defined function?

Regards,
Kashyap


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

* Re: putting double quotes efficiently
  2013-06-03  5:43 C K Kashyap
@ 2013-06-03  7:26 ` Andreas Röhler
  2013-06-03  7:55   ` Andreas Röhler
  0 siblings, 1 reply; 11+ messages in thread
From: Andreas Röhler @ 2013-06-03  7:26 UTC (permalink / raw)
  To: help-gnu-emacs@gnu.org List

Am 03.06.2013 07:43, schrieb C K Kashyap:
> Hi,
> I am looking for a way to transform
>
> print line1
> print line two
> print line3
>
> into
>
> print "line1";
> print "line two";
> print "line3";
>
> most efficiently. For the first quote of each line I place the cursor
> before line1 and I set the mark and then move all the way down to just
> before line3 and then do a C-x-r-t " <RET>
> Then I do a regexp replace to change $ to ";
>
> I'd like to do better. While at it, can I please also know how I can use
> the line range in the mark set mode in user defined function?
>
> Regards,
> Kashyap
>

M-x query-replace-regexp

^\([^ ]+\) \(.+\)
RET
\1 "\2;
RET



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

* Re: putting double quotes efficiently
  2013-06-03  7:26 ` Andreas Röhler
@ 2013-06-03  7:55   ` Andreas Röhler
  2013-06-03  8:03     ` C K Kashyap
  0 siblings, 1 reply; 11+ messages in thread
From: Andreas Röhler @ 2013-06-03  7:55 UTC (permalink / raw)
  To: help-gnu-emacs

Am 03.06.2013 09:26, schrieb Andreas Röhler:
> Am 03.06.2013 07:43, schrieb C K Kashyap:
>> Hi,
>> I am looking for a way to transform
>>
>> print line1
>> print line two
>> print line3
>>
>> into
>>
>> print "line1";
>> print "line two";
>> print "line3";
>>
>> most efficiently. For the first quote of each line I place the cursor
>> before line1 and I set the mark and then move all the way down to just
>> before line3 and then do a C-x-r-t " <RET>
>> Then I do a regexp replace to change $ to ";
>>
>> I'd like to do better. While at it, can I please also know how I can use
>> the line range in the mark set mode in user defined function?
>>
>> Regards,
>> Kashyap
>>
>
> M-x query-replace-regexp
>
> ^\([^ ]+\) \(.+\)
> RET
> \1 "\2;
> RET
>
>

resp. with missing " in replace expression

  \1 "\2";



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

* Re: putting double quotes efficiently
  2013-06-03  7:55   ` Andreas Röhler
@ 2013-06-03  8:03     ` C K Kashyap
  2013-06-03  9:10       ` Andreas Röhler
  0 siblings, 1 reply; 11+ messages in thread
From: C K Kashyap @ 2013-06-03  8:03 UTC (permalink / raw)
  To: Andreas Röhler; +Cc: help-gnu-emacs

Thanks Andreas,
This works.
Although I'd still like to know how to write custom function that work over
a marked region.
Regards,
Kashyap


On Mon, Jun 3, 2013 at 1:25 PM, Andreas Röhler <
andreas.roehler@easy-emacs.de> wrote:

> Am 03.06.2013 09:26, schrieb Andreas Röhler:
>
>  Am 03.06.2013 07:43, schrieb C K Kashyap:
>>
>>> Hi,
>>> I am looking for a way to transform
>>>
>>> print line1
>>> print line two
>>> print line3
>>>
>>> into
>>>
>>> print "line1";
>>> print "line two";
>>> print "line3";
>>>
>>> most efficiently. For the first quote of each line I place the cursor
>>> before line1 and I set the mark and then move all the way down to just
>>> before line3 and then do a C-x-r-t " <RET>
>>> Then I do a regexp replace to change $ to ";
>>>
>>> I'd like to do better. While at it, can I please also know how I can use
>>> the line range in the mark set mode in user defined function?
>>>
>>> Regards,
>>> Kashyap
>>>
>>>
>> M-x query-replace-regexp
>>
>> ^\([^ ]+\) \(.+\)
>> RET
>> \1 "\2;
>> RET
>>
>>
>>
> resp. with missing " in replace expression
>
>  \1 "\2";
>
>


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

* Re: putting double quotes efficiently
  2013-06-03  8:03     ` C K Kashyap
@ 2013-06-03  9:10       ` Andreas Röhler
  2013-06-03 11:52         ` C K Kashyap
  0 siblings, 1 reply; 11+ messages in thread
From: Andreas Röhler @ 2013-06-03  9:10 UTC (permalink / raw)
  To: C K Kashyap; +Cc: help-gnu-emacs

Am 03.06.2013 10:03, schrieb C K Kashyap:
> Thanks Andreas,
> This works.
> Although I'd still like to know how to write custom function that work over
> a marked region.

For example that way:

(defun my-New-Command (beg end)
   (interactive "r*")
   (save-excursion
     (save-restriction
       (narrow-to-region beg end)
       (goto-char beg)
       (DO-What-I-Want...

Recommend a walk through Info section Elisp, you will find plenty of useful stuff.

Cheers,

Andreas



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

* Re: putting double quotes efficiently
  2013-06-03  9:10       ` Andreas Röhler
@ 2013-06-03 11:52         ` C K Kashyap
  0 siblings, 0 replies; 11+ messages in thread
From: C K Kashyap @ 2013-06-03 11:52 UTC (permalink / raw)
  To: Andreas Röhler; +Cc: help-gnu-emacs

Thanks Andreas,

This is exactly what I was looking for -

(defun kash-util-quotes (beg end st en)
  (interactive "r*\nsStart Pattern: \nsEnd Pattern: \n")
  (save-excursion
    (save-restriction
      (string-rectangle beg end st)
;      (narrow-to-region beg end)
      (goto-char beg)
      (replace-regexp "$" en)
      )))


Thanks,
Kashyap


On Mon, Jun 3, 2013 at 2:40 PM, Andreas Röhler <
andreas.roehler@easy-emacs.de> wrote:

> Am 03.06.2013 10:03, schrieb C K Kashyap:
>
>  Thanks Andreas,
>> This works.
>> Although I'd still like to know how to write custom function that work
>> over
>> a marked region.
>>
>
> For example that way:
>
> (defun my-New-Command (beg end)
>   (interactive "r*")
>   (save-excursion
>     (save-restriction
>       (narrow-to-region beg end)
>       (goto-char beg)
>       (DO-What-I-Want...
>
> Recommend a walk through Info section Elisp, you will find plenty of
> useful stuff.
>
> Cheers,
>
> Andreas
>


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

* Re: putting double quotes efficiently
       [not found] <mailman.910.1370238187.22516.help-gnu-emacs@gnu.org>
@ 2013-06-03 15:50 ` Udyant Wig
  2013-06-04 14:52   ` Kevin Rodgers
  2013-06-03 17:39 ` Joost Kremers
  1 sibling, 1 reply; 11+ messages in thread
From: Udyant Wig @ 2013-06-03 15:50 UTC (permalink / raw)
  To: help-gnu-emacs

You might also try keyboard macros.

Here's how I'd do it:

0.  Move point to the first line (anywhere will do).

        print _!_line1
        print linetwo
        print line3

1.  Press C-x ( to begin recording a keyboard macro

2.  Press C-a to move to the beginning of the line

        _!_print line1
        print linetwo
        print line3

3.  Press M-f to move forward a word 

        print _!_line1
        print linetwo
        print line3
        
4.  Press " to insert one double-qoutes

        print "_!_line1
        print linetwo
        print line3

5.  There are two options here, any of which work fine:

    5.0.  Either, M-f again to move forward,
    5.1.  Or, C-e to move to the end of the line

        print "line1_!_
        print linetwo
        print line3

6.  Press " to insert the second double-quotes

        print "line1"_!_
        print linetwo
        print line3

7.  Press ; to insert the semi-colon

        print "line1";_!_
        print linetwo
        print line3

8.  Press C-n to move down a line

        print "line1";
        print linetwo_!_
        print line3

9.  Press C-x ) to finish recording the keyboard macro

10.  Press C-x e to repeat the keyboard macro

        print "line1";
        print "linetwo";
        print line3_!_

11.  You can now simply press `e' to repeat

        print "line1";
        print "linetwo";
        print "line3";

The above goes very quickly when actually typing.        
        
The Info node (emacs)Keyboard Macros is the authoritative reference.


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

* Re: putting double quotes efficiently
       [not found] <mailman.910.1370238187.22516.help-gnu-emacs@gnu.org>
  2013-06-03 15:50 ` putting double quotes efficiently Udyant Wig
@ 2013-06-03 17:39 ` Joost Kremers
  2013-06-04 12:21   ` C K Kashyap
  1 sibling, 1 reply; 11+ messages in thread
From: Joost Kremers @ 2013-06-03 17:39 UTC (permalink / raw)
  To: help-gnu-emacs

C K Kashyap wrote:
> Hi,
> I am looking for a way to transform
>
> print line1
> print line two
> print line3
>
> into
>
> print "line1";
> print "line two";
> print "line3";
>
> most efficiently.

Personally, I'd use Magnar Sveen's nifty multiple-cursors library for
this. Put the cursor on the l of `line1', activate the mark (C-SPC),
move down to the l of `line3', hit C-S-c C-S-c, then type `"', then C-e,
then `";' and done.



-- 
Joost Kremers                                   joostkremers@fastmail.fm
Selbst in die Unterwelt dringt durch Spalten Licht
EN:SiS(9)


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

* Re: putting double quotes efficiently
  2013-06-03 17:39 ` Joost Kremers
@ 2013-06-04 12:21   ` C K Kashyap
  2013-06-04 12:21     ` C K Kashyap
  0 siblings, 1 reply; 11+ messages in thread
From: C K Kashyap @ 2013-06-04 12:21 UTC (permalink / raw)
  To: Joost Kremers; +Cc: help-gnu-emacs

Thanks Udyant,

Regards,
Kashyap


On Mon, Jun 3, 2013 at 11:09 PM, Joost Kremers <joostkremers@yahoo.com>wrote:

> C K Kashyap wrote:
> > Hi,
> > I am looking for a way to transform
> >
> > print line1
> > print line two
> > print line3
> >
> > into
> >
> > print "line1";
> > print "line two";
> > print "line3";
> >
> > most efficiently.
>
> Personally, I'd use Magnar Sveen's nifty multiple-cursors library for
> this. Put the cursor on the l of `line1', activate the mark (C-SPC),
> move down to the l of `line3', hit C-S-c C-S-c, then type `"', then C-e,
> then `";' and done.
>
>
>
> --
> Joost Kremers                                   joostkremers@fastmail.fm
> Selbst in die Unterwelt dringt durch Spalten Licht
> EN:SiS(9)
>


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

* Re: putting double quotes efficiently
  2013-06-04 12:21   ` C K Kashyap
@ 2013-06-04 12:21     ` C K Kashyap
  0 siblings, 0 replies; 11+ messages in thread
From: C K Kashyap @ 2013-06-04 12:21 UTC (permalink / raw)
  To: Joost Kremers; +Cc: help-gnu-emacs

And Joost :)


On Tue, Jun 4, 2013 at 5:51 PM, C K Kashyap <ckkashyap@gmail.com> wrote:

> Thanks Udyant,
>
> Regards,
> Kashyap
>
>
> On Mon, Jun 3, 2013 at 11:09 PM, Joost Kremers <joostkremers@yahoo.com>wrote:
>
>> C K Kashyap wrote:
>> > Hi,
>> > I am looking for a way to transform
>> >
>> > print line1
>> > print line two
>> > print line3
>> >
>> > into
>> >
>> > print "line1";
>> > print "line two";
>> > print "line3";
>> >
>> > most efficiently.
>>
>> Personally, I'd use Magnar Sveen's nifty multiple-cursors library for
>> this. Put the cursor on the l of `line1', activate the mark (C-SPC),
>> move down to the l of `line3', hit C-S-c C-S-c, then type `"', then C-e,
>> then `";' and done.
>>
>>
>>
>> --
>> Joost Kremers                                   joostkremers@fastmail.fm
>> Selbst in die Unterwelt dringt durch Spalten Licht
>> EN:SiS(9)
>>
>
>


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

* Re: putting double quotes efficiently
  2013-06-03 15:50 ` putting double quotes efficiently Udyant Wig
@ 2013-06-04 14:52   ` Kevin Rodgers
  0 siblings, 0 replies; 11+ messages in thread
From: Kevin Rodgers @ 2013-06-04 14:52 UTC (permalink / raw)
  To: help-gnu-emacs

On 6/3/13 9:50 AM, Udyant Wig wrote:
> You might also try keyboard macros.
>
> Here's how I'd do it:
>
> 0.  Move point to the first line (anywhere will do).
>
>          print _!_line1
>          print linetwo
>          print line3
>
> 1.  Press C-x ( to begin recording a keyboard macro
>
> 2.  Press C-a to move to the beginning of the line
>
>          _!_print line1
>          print linetwo
>          print line3
>
...
> 9.  Press C-x ) to finish recording the keyboard macro
>
> 10.  Press C-x e to repeat the keyboard macro
>
>          print "line1";
>          print "linetwo";
>          print line3_!_
>
> 11.  You can now simply press `e' to repeat
>
>          print "line1";
>          print "linetwo";
>          print "line3";

Or: Mark the remaining lines you want to change and `C-x C-k r' 
(apply-macro-to-region-lines).

If you plan on doing that, you can move point to the beginning of the line
before starting the keyboard macro definition and leave C-a out of the macro
(because `C-x C-k r' will move to the beginning of each line automatically).

-- 
Kevin Rodgers
Denver, Colorado, USA




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

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

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <mailman.910.1370238187.22516.help-gnu-emacs@gnu.org>
2013-06-03 15:50 ` putting double quotes efficiently Udyant Wig
2013-06-04 14:52   ` Kevin Rodgers
2013-06-03 17:39 ` Joost Kremers
2013-06-04 12:21   ` C K Kashyap
2013-06-04 12:21     ` C K Kashyap
2013-06-03  5:43 C K Kashyap
2013-06-03  7:26 ` Andreas Röhler
2013-06-03  7:55   ` Andreas Röhler
2013-06-03  8:03     ` C K Kashyap
2013-06-03  9:10       ` Andreas Röhler
2013-06-03 11:52         ` C K Kashyap

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