all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* A valid example of kbd macros - take that, Emanuel! ;-)
@ 2015-07-28  8:42 Marcin Borkowski
  2015-07-29  2:04 ` Emanuel Berg
  0 siblings, 1 reply; 4+ messages in thread
From: Marcin Borkowski @ 2015-07-28  8:42 UTC (permalink / raw)
  To: Help Gnu Emacs mailing list

Hi all,
hi Emanuel!

The last exchange about F3 and macros reminded me that you wanted an
example of valid kbd macro usage, not easily accomplished by writing
Elisp.  So here you are.  Some time ago I had to send 15 emails to 15
different people.  (You can imagine 150 instead of 15.)  I had their
addresses in an Org table, and in another column I had some data which
should be present in the emails.  (See
https://en.wikipedia.org/wiki/Mail_merge.)  You could find the Elisp
functions related to Org and mu4e (or Gnus, or whatever you use), but it
was *a lot* faster to record a kbd macro copying some fragments from the
table, starting mu4e, inserting the letter template, yanking the data in
right positions and stopping for me to review the email (I had to
manually change a few of them).  It took me 5 minutes (including
preparing the template and recording the macro!) to send
(semi-)personalized messages to 15 people.  It would be even faster if
I didn't want to review each email and edit some of them, of course.
Take that! :-)

Best,

-- 
Marcin Borkowski
http://octd.wmi.amu.edu.pl/en/Marcin_Borkowski
Faculty of Mathematics and Computer Science
Adam Mickiewicz University



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

* Re: A valid example of kbd macros - take that, Emanuel! ;-)
  2015-07-28  8:42 A valid example of kbd macros - take that, Emanuel! ;-) Marcin Borkowski
@ 2015-07-29  2:04 ` Emanuel Berg
  2015-07-29  7:12   ` Marcin Borkowski
  0 siblings, 1 reply; 4+ messages in thread
From: Emanuel Berg @ 2015-07-29  2:04 UTC (permalink / raw)
  To: help-gnu-emacs

Marcin Borkowski <mbork@mbork.pl> writes:

> The last exchange ... reminded me that you wanted an
> example of valid kbd macro usage, not easily
> accomplished by writing Elisp. ... Some time ago
> I had to send 15 emails to 15 different people. (You
> can imagine 150 instead of 15.) ... You could find
> the Elisp functions related to ... Gnus

You better believe it.

(require 'cl-macs)
(require 'gnus-msg)
(require 'message)

(cl-dolist (to '("Emanuel Berg <embe8573@student.uu.se>"
                 "Manny <embe8573@student.uu.se>") )
    (gnus-post-news 'post "")
    (message-goto-to)          (insert to)
    (message-goto-subject)     (insert "Get ready for a surprise")
    (message-goto-body)        (insert "You are not you. You are me!")
    (message-send-and-exit) )

So better luck next time. However, the master is
pleased that you take this so seriously.

:)

-- 
underground experts united
http://user.it.uu.se/~embe8573




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

* Re: A valid example of kbd macros - take that, Emanuel! ;-)
  2015-07-29  2:04 ` Emanuel Berg
@ 2015-07-29  7:12   ` Marcin Borkowski
  2015-07-29 22:34     ` Emanuel Berg
  0 siblings, 1 reply; 4+ messages in thread
From: Marcin Borkowski @ 2015-07-29  7:12 UTC (permalink / raw)
  To: help-gnu-emacs


On 2015-07-29, at 04:04, Emanuel Berg <embe8573@student.uu.se> wrote:

> Marcin Borkowski <mbork@mbork.pl> writes:
>
>> The last exchange ... reminded me that you wanted an
>> example of valid kbd macro usage, not easily
>> accomplished by writing Elisp. ... Some time ago
>> I had to send 15 emails to 15 different people. (You
>> can imagine 150 instead of 15.) ... You could find
>> the Elisp functions related to ... Gnus
>
> You better believe it.
>
> (require 'cl-macs)
> (require 'gnus-msg)
> (require 'message)
>
> (cl-dolist (to '("Emanuel Berg <embe8573@student.uu.se>"
>                  "Manny <embe8573@student.uu.se>") )
>     (gnus-post-news 'post "")
>     (message-goto-to)          (insert to)
>     (message-goto-subject)     (insert "Get ready for a surprise")
>     (message-goto-body)        (insert "You are not you. You are me!")
>     (message-send-and-exit) )
>
> So better luck next time. However, the master is
> pleased that you take this so seriously.
>
> :)

:-) :-) :-)

Well, I /know/ it can be done, obviously.  The question is: how much
time does it take to find all these Elisp functions?  (Unless you /know/
them already.  (And you cheated a bit: I didn't have my data in a Lisp
list, but in an Org table.  Next level of function-searching.)  And more
importantly: /why/ do it if you don't have to?  ("Fun", "learning" and
"this I may need in the future" are legitimiate responses, of course,
but "No need to" is, too.)

Best,

-- 
Marcin Borkowski
http://octd.wmi.amu.edu.pl/en/Marcin_Borkowski
Faculty of Mathematics and Computer Science
Adam Mickiewicz University



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

* Re: A valid example of kbd macros - take that, Emanuel! ;-)
  2015-07-29  7:12   ` Marcin Borkowski
@ 2015-07-29 22:34     ` Emanuel Berg
  0 siblings, 0 replies; 4+ messages in thread
From: Emanuel Berg @ 2015-07-29 22:34 UTC (permalink / raw)
  To: help-gnu-emacs

Marcin Borkowski <mbork@mbork.pl> writes:

> Well, I know it can be done, obviously. The question
> is: how much time does it take to find all these
> Elisp functions? (Unless you know them already.)

I always do things, or try to do them, the *right*
way. Sometimes the inferior way is indeed faster.

If you are in a cabin and you need to hit a nail into
a wall, but you don't have a hammer, instead of using
the back side of the ax, I go to the other cabin and
get the hammer. It is more enjoyable, more precise,
and even tho in that particular case the ax solution
would be more quick, in the end the right way (get the
hammer) will be even quicker because then I will
realize I need a hammer in *both* cabins!

Correspondingly, now I have

    (require 'gnus-msg)
    (require 'cl-macs)
    (require 'message)

    (defun mail-to-many (to subject body)
      (cl-dolist (this-to to)
        (gnus-post-news 'post "")
        (message-goto-to)          (insert this-to)
        (message-goto-subject)     (insert subject)
        (message-goto-body)        (insert body)
        (message-send-and-exit) ))

so the next time I want it (or someone on this list
wants it) I can use/share it in one second.

And even if I never use or share it again, I may
encounter a situation that is similar - then I'll
bring up the code, be reminded of say those
message-goto's, and I'll be able to solve the
other problem - faster, and better.

So no - I don't focus on speed per se, but still, in
time speed will enter through the back door.

(In this case I actually think using a "To:" header
with commas is the right way to send the same mail to
several persons, but nevermind.)

> (And you cheated a bit: I didn't have my data in
> a Lisp list, but in an Org table. Next level of
> function-searching.)

I don't use Org but if there isn't a way already to
extract data into a list then it is terribly
disorganized despite its name. But I don't think it
is: more likely the data is already in a list!

> And more importantly: /why/ do it if you don't have
> to? ("Fun", "learning" and "this I may need in the
> future" are legitimiate responses, of course, but
> "No need to" is, too.)

What you mention, yes. But also enjoyment, and how to
deal with the outcome, be it good or bad. If I hit the
nail with the ax and the nail bends, or the ax breaks,
I'll be angry and disappointed at myself. If that
happens with the hammer: so what? Even the master
carpenter breaks his tools when they are worn out!

On the other hand, with the ax, say every thing works
perfectly, and then some guys come my way and say this
cabin looks amazing. Then I don't want to look down
the floor knowing I actually used an ax for all the
nails, hoping they won't notice!

With mechanics, cabin work, etc. sometimes the right
tools are too expensive, too big and heavy, lost, or
whatever. But with Emacs and Elisp programming that is
never a problem. So I'm in a real good place to have
this attitude. But even with computers, you have to be
well-organized yourself even tho it is much easier
than in the workshop or forest :)

-- 
underground experts united
http://user.it.uu.se/~embe8573




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

end of thread, other threads:[~2015-07-29 22:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-28  8:42 A valid example of kbd macros - take that, Emanuel! ;-) Marcin Borkowski
2015-07-29  2:04 ` Emanuel Berg
2015-07-29  7:12   ` Marcin Borkowski
2015-07-29 22:34     ` Emanuel Berg

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.