From e48c3e4f03336732dc83b575c8911f916a1ca0c2 Mon Sep 17 00:00:00 2001
From: Daniel Borchmann
Date: Thu, 19 Dec 2019 10:53:43 +0100
Subject: [PATCH] Merge Abrams' workshop on Emacs macros into main notes file
---
doc/emacs-notes.org | 307 +++++++++++++++++++++++++++++++++++++++
doc/keyboard-macros.org | 308 ----------------------------------------
2 files changed, 307 insertions(+), 308 deletions(-)
delete mode 100644 doc/keyboard-macros.org
diff --git a/doc/emacs-notes.org b/doc/emacs-notes.org
index dda468c..41d7c1f 100644
--- a/doc/emacs-notes.org
+++ b/doc/emacs-notes.org
@@ -3,6 +3,313 @@
#+options: toc:t
+* Workshop for Emacs Macros
+
+(By [[https://www.howardism.org/][Howard Abrams]], 2015 Nov 24)
+
+Basic idea of this file is to be both a *guide* and a *practice pad*
+for leveling up on Emacs’ keyboard macro system.
+
+To use, just [[https://github.com/howardabrams/pdx-emacs-hackers/raw/master/workshops/keyboard-macros.org][download this file]] to your system, and edit it in Emacs.
+Then just follow along... If you are not familiar with org-mode files,
+here are the basics for this workshop:
+
+ - Hit a tab on the header expands or collapses it
+ - Narrow to show just one section with: C-x n s
+ - Return by widening normally with: C-x n w
+ - Hyperlinks can be clicked on to view the Emacs Manual
+
+Pretty much treat the rest of this document as a text file.
+
+** Basic Usage
+
+ Let’s begin with something simple to try out this project.
+ In the /block area/ below, hit: C-c ' (yes, the apostrophe).
+ When done with the tasks, hit: C-x C-s to close and return here.
+
+ #+BEGIN_SRC org
+ - This foobar should be Interesting
+ - Nulla foobar Posuere
+ - Nullam foobar Tempus
+ - Etiam foobar laoreet quam sed Arcu
+ - Donec foobar hendrerit tempor Tellus
+ - Mauris foobar mollis tincidunt Felis
+ - etiam laoreet quam sed arcu
+ - nullam rutrum
+ - sed diam
+ - lorem ipsum dolor sit amet, consectetuer adipiscing elit
+ - mauris ac felis vel velit tristique imperdiet
+ - fusce suscipit, wisi nec facilisis facilisis, est dui fermentum leo, quis tempor ligula erat quis odio
+ - donec hendrerit tempor tellus
+ #+END_SRC
+
+ Notice that the frame is split with this document still visible?
+
+ Good, let’s play around. Let’s capitalize the first letter of each line.
+ Position point at the beginning of the first line, and then:
+
+ - F3
+ - M-c
+ - C-n
+ - C-a
+ - F4
+
+ Press F4 repeatedly to capitalize the first word on each line.
+ Don’t capitalize /every/ line... leave a few alone for a moment.
+ Now you have the basics.
+
+ Let’s make a new macro to capitalize the /last/ word on each line.
+ Pop back up to the top of the list, and:
+
+ - F3
+ - C-e
+ - M-b
+ - M-c
+ - C-n
+ - F4
+
+ Once again, leave a few lines alone.
+ Just one more macro, as I want to show you something interesting.
+ Jump back to the beginning, and:
+
+ - F3
+ - C-a
+ - M-f
+ - Space
+ - foobar (or type any single word you find amusing)
+ - C-n
+ - F4
+
+ Type: C-x C-k C-k
+
+ Notice it behaves the same as F4, but you can keep typing C-k to
+ execute your macro.
+
+ Start typing C-n and/or C-p and notice the minibuffer. It alternates
+ between the following:
+
+ - M-c C-n C-a
+ - C-e M-b M-c C-n
+ - C-a M-f SPC f 2*o b a r C-n
+
+ Typing C-k at any point will execute that macro. You’ve now see the
+ Emacs Macro Ring, and can manipulate it. You are now at Level 2.
+
+ Type C-c ' (apostrophe) to close that side window.
+
+** Naming Macros
+
+ While that =foobar= macro may be quite handy, looping around the
+ keyboard macro ring to select it may be inefficient. Name it!
+
+ C-x C-k n
+
+ Give it a name of foobar, and now, you can: M-x foobar
+ to have the macro run.
+
+ Perhaps it may be more useful to bind that macro to some un-used
+ key, like C-c k or F2 ... type:
+
+ C-x C-k b
+
+ And then type your binding, e.g. C-c k
+
+ You know that C-c followed by a single letter is supposed to be free
+ of usage and available for your nefarious reasons, right?
+
+ Read the [[info:emacs#Save%20Keyboard%20Macro][the Emacs Manual]] for details. If you actually tried this
+ example, then you have earned enough experience points to be level 3.
+
+** What do you mean On Every Line?
+
+ Keyboard macros are slick, and while we /could/ prefix the F4 with
+ the numbering prefix to run it multiple times at once, e.g. C-9 F4,
+ a typical use case is to run it on every line in a region.
+
+ Position the cursor in the block, and type: C-c ‘
+
+ #+BEGIN_SRC org
+ I will not take out the trash
+ I should not stop swearing
+ I may not stop to smell the roses
+ I do not want to go shopping
+ I could not care less
+ #+END_SRC
+
+ With the point on the first line, type:
+
+ - F3
+ - C-a
+ - M-f
+ - M-f
+ - Space
+ - not (type the word, =not=)
+ - F4
+
+ Now select the remaining 4 lines any way you like, and type:
+
+ - C-x C-k r
+
+ Read [[info:emacs#Basic%20Keyboard%20Macro][the Emacs Manual]] for complete details, and welcome to level 4.
+
+** Numbering
+
+ Numbering things seems to be important to people. Let’s see if we
+ can easily number the worst song ever inflicted on humanity.
+
+ Once again, position the point inside the block, and type: C-c '
+
+ #+BEGIN_SRC org
+ 1 Drummers Drumming
+ 2 Pipers Piping
+ 3 Lords a Leaping
+ 4 Ladies Dancing
+ 5 Maids a Milking
+ 6 Swans a Swimming
+ 7 Geese a Laying
+ 8 Golden Rings
+ 9 Calling Birds
+ 10 French Hens
+ 11 Turtle Doves
+ 12 Partridge in a Pear Tree
+ #+END_SRC
+
+ Follow along at home. First, position the point at the end (on the
+ line with the partridge), and:
+
+ - C-x C-k C-c
+ - 1
+ - Return (to set a counter to 1)
+ - F3
+ - C-a
+ - F3
+ - Spacebar
+ - C-n
+ - F4
+
+ Yes, hitting the F3 key twice (once to start the macro, and again to
+ insert the value of the counter) is a bit odd. You can also use the
+ binding: C-x C-k C-i
+
+ Each time you hit F4, you increment the counter that is inserted.
+
+ By the way, if you didn’t do the whole =C-x C-k C-c= to set the
+ counter to 1, the first value would be 0. Read [[info:emacs#Keyboard%20Macro%20Counter][the manual]] for
+ details.
+
+** Fixing Macros
+
+ Now that you are a Level 5 Elf Keyboard Macro-er, and you can now
+ sling macros everywhere, you may notice that sometimes, in the
+ middle of a long macro, you flub it.
+
+ If you hit F4 too soon (it happens), hit: C-u C-u F3 to pick up
+ where you left off and enter the rest of the macro. Hit F4 when you
+ are really finished.
+
+ If you need to fix a keyboard macro with more finesse, type:
+
+ C-x C-k C-e
+
+ And behold the glory. Tis a simple language that should be pretty
+ obvious to a skilled Macro-er as yourself. Type C-h m once in that
+ buffer to display details of how to edit the macro. When you are
+ finished editing, type: C-c C-c
+
+ I’ll let you play around with your own example for this one.
+ Read [[info:emacs#Edit%20Keyboard%20Macro][the manual]] for complete details.
+
+** Variations on a Theme
+
+ To gain the Level 7 Keyboard Macro-er title, one should know how to
+ customize a macro /while/ running it. The following section of HTML
+ code needs some textual changes. We want to add one of the following
+ phrases to the /end/ of every paragraph that has a =class= of =change=:
+
+ * Because I said so. Got it?
+ * Because I'm the boss. Got it?
+ * You heard me. Got it?
+ * Just do it. Got it?
+
+ To begin, first move to the following block (hint: C-c M-f) and hit
+ TAB to collapse the block (you gotta see all the instructions,
+ right?) Next, issue a C-c ' on this block to show it in a new
+ window. If you have trouble with your HTML mode, change the =html=
+ to =text=.
+
+ #+BEGIN_SRC html
+
+
+
+
+ Proin neque massa, cursus ut, gravida ut, lobortis eget, lacus.
+ Praesent augue. Sed diam. Nunc eleifend leo vitae magna. Nunc
+ rutrum turpis sed pede.
+
+
+ Nullam rutrum. Nunc rutrum turpis sed pede.
+
+
+ Phasellus at dui in ligula mollis ultricies. Curabitur lacinia
+ pulvinar nibh. Donec pretium posuere tellus. Praesent
+ fermentum tempor tellus. Proin quam nisl, tincidunt et, mattis
+ eget, convallis nec, purus.
+
+
+ Fusce sagittis, libero non molestie mollis, magna orci ultrices
+ dolor, at vulputate neque nulla lacinia eros. Sed diam. Nam
+ vestibulum accumsan nisl.
+
+
+ Aliquam feugiat tellus ut neque. Nam vestibulum accumsan
+ nisl. Praesent fermentum tempor tellus.
+
+
+ Vivamus id enim. Suspendisse potenti. Curabitur lacinia
+ pulvinar nibh. Mauris ac felis vel velit tristique imperdiet.
+
+
+ Donec vitae dolor. Mauris ac felis vel velit tristique
+ imperdiet. Nunc aliquet, augue nec adipiscing interdum, lacus
+ tellus malesuada massa, quis varius mi purus non odio. Proin
+ quam nisl, tincidunt et, mattis eget, convallis nec, purus. Nam
+ euismod tellus id erat.
+
+
+ Nullam rutrum.
+
+
+
+ #+END_SRC
+
+ Type the following:
+
+ - F3
+ - C-s
+ - Type: class="change"
+ - C-e
+ - C-s
+ - Type:
+ - C-p
+ - C-e
+ - C-x q
+ - Type: Got it?
+ - C-n
+ - F4
+
+ In this particular case, we actually didn't do anything special, so
+ move to the beginning of the buffer, and hit F4, and the cursor will
+ go to the end of every paragraph that needs changing, and stop with
+ a prompt:
+
+ Proceed with macro? (Y, N, RET, C-l, C-r)
+
+ Type C-r and begin typing one of our phrases, and when you are done,
+ type: C-M-c
+
+ The prompt will be re-displayed, so finish the macro with 'Y'.
+ Check out [[info:emacs#Keyboard%20Macro%20Query][the manual]] for details on this =C-x q= business.
+
* Emacs Calc Tutorials :NOTE:
By Andrew Hyatt, found here: https://github.com/ahyatt/emacs-calc-tutorials.
diff --git a/doc/keyboard-macros.org b/doc/keyboard-macros.org
deleted file mode 100644
index 6461013..0000000
--- a/doc/keyboard-macros.org
+++ /dev/null
@@ -1,308 +0,0 @@
-#+TITLE: Workshop for Emacs Macros
-#+AUTHOR: Howard Abrams
-#+DATE: 2015 Nov 24
-#+TAGS: emacs workshop
-#+STARTUP: hideblocks
-
-Basic idea of this file is to be both a *guide* and a *practice pad*
-for leveling up on Emacs’ keyboard macro system.
-
-To use, just [[https://github.com/howardabrams/pdx-emacs-hackers/raw/master/workshops/keyboard-macros.org][download this file]] to your system, and edit it in Emacs.
-Then just follow along... If you are not familiar with org-mode files,
-here are the basics for this workshop:
-
- - Hit a tab on the header expands or collapses it
- - Narrow to show just one section with: C-x n s
- - Return by widening normally with: C-x n w
- - Hyperlinks can be clicked on to view the Emacs Manual
-
-Pretty much treat the rest of this document as a text file.
-
-* Basic Usage
-
- Let’s begin with something simple to try out this project.
- In the /block area/ below, hit: C-c ' (yes, the apostrophe).
- When done with the tasks, hit: C-x C-s to close and return here.
-
- #+BEGIN_SRC org
- - This foobar should be Interesting
- - Nulla foobar Posuere
- - Nullam foobar Tempus
- - Etiam foobar laoreet quam sed Arcu
- - Donec foobar hendrerit tempor Tellus
- - Mauris foobar mollis tincidunt Felis
- - etiam laoreet quam sed arcu
- - nullam rutrum
- - sed diam
- - lorem ipsum dolor sit amet, consectetuer adipiscing elit
- - mauris ac felis vel velit tristique imperdiet
- - fusce suscipit, wisi nec facilisis facilisis, est dui fermentum leo, quis tempor ligula erat quis odio
- - donec hendrerit tempor tellus
- #+END_SRC
-
- Notice that the frame is split with this document still visible?
-
- Good, let’s play around. Let’s capitalize the first letter of each line.
- Position point at the beginning of the first line, and then:
-
- - F3
- - M-c
- - C-n
- - C-a
- - F4
-
- Press F4 repeatedly to capitalize the first word on each line.
- Don’t capitalize /every/ line... leave a few alone for a moment.
- Now you have the basics.
-
- Let’s make a new macro to capitalize the /last/ word on each line.
- Pop back up to the top of the list, and:
-
- - F3
- - C-e
- - M-b
- - M-c
- - C-n
- - F4
-
- Once again, leave a few lines alone.
- Just one more macro, as I want to show you something interesting.
- Jump back to the beginning, and:
-
- - F3
- - C-a
- - M-f
- - Space
- - foobar (or type any single word you find amusing)
- - C-n
- - F4
-
- Type: C-x C-k C-k
-
- Notice it behaves the same as F4, but you can keep typing C-k to
- execute your macro.
-
- Start typing C-n and/or C-p and notice the minibuffer. It alternates
- between the following:
-
- - M-c C-n C-a
- - C-e M-b M-c C-n
- - C-a M-f SPC f 2*o b a r C-n
-
- Typing C-k at any point will execute that macro. You’ve now see the
- Emacs Macro Ring, and can manipulate it. You are now at Level 2.
-
- Type C-c ' (apostrophe) to close that side window.
-
-* Naming Macros
-
- While that =foobar= macro may be quite handy, looping around the
- keyboard macro ring to select it may be inefficient. Name it!
-
- C-x C-k n
-
- Give it a name of foobar, and now, you can: M-x foobar
- to have the macro run.
-
- Perhaps it may be more useful to bind that macro to some un-used
- key, like C-c k or F2 ... type:
-
- C-x C-k b
-
- And then type your binding, e.g. C-c k
-
- You know that C-c followed by a single letter is supposed to be free
- of usage and available for your nefarious reasons, right?
-
- Read the [[info:emacs#Save%20Keyboard%20Macro][the Emacs Manual]] for details. If you actually tried this
- example, then you have earned enough experience points to be level 3.
-
-* What do you mean On Every Line?
-
- Keyboard macros are slick, and while we /could/ prefix the F4 with
- the numbering prefix to run it multiple times at once, e.g. C-9 F4,
- a typical use case is to run it on every line in a region.
-
- Position the cursor in the block, and type: C-c ‘
-
- #+BEGIN_SRC org
- I will not take out the trash
- I should not stop swearing
- I may not stop to smell the roses
- I do not want to go shopping
- I could not care less
- #+END_SRC
-
- With the point on the first line, type:
-
- - F3
- - C-a
- - M-f
- - M-f
- - Space
- - not (type the word, =not=)
- - F4
-
- Now select the remaining 4 lines any way you like, and type:
-
- - C-x C-k r
-
- Read [[info:emacs#Basic%20Keyboard%20Macro][the Emacs Manual]] for complete details, and welcome to level 4.
-
-* Numbering
-
- Numbering things seems to be important to people. Let’s see if we
- can easily number the worst song ever inflicted on humanity.
-
- Once again, position the point inside the block, and type: C-c '
-
- #+BEGIN_SRC org
- 1 Drummers Drumming
- 2 Pipers Piping
- 3 Lords a Leaping
- 4 Ladies Dancing
- 5 Maids a Milking
- 6 Swans a Swimming
- 7 Geese a Laying
- 8 Golden Rings
- 9 Calling Birds
- 10 French Hens
- 11 Turtle Doves
- 12 Partridge in a Pear Tree
- #+END_SRC
-
- Follow along at home. First, position the point at the end (on the
- line with the partridge), and:
-
- - C-x C-k C-c
- - 1
- - Return (to set a counter to 1)
- - F3
- - C-a
- - F3
- - Spacebar
- - C-n
- - F4
-
- Yes, hitting the F3 key twice (once to start the macro, and again to
- insert the value of the counter) is a bit odd. You can also use the
- binding: C-x C-k C-i
-
- Each time you hit F4, you increment the counter that is inserted.
-
- By the way, if you didn’t do the whole =C-x C-k C-c= to set the
- counter to 1, the first value would be 0. Read [[info:emacs#Keyboard%20Macro%20Counter][the manual]] for
- details.
-
-* Fixing Macros
-
- Now that you are a Level 5 Elf Keyboard Macro-er, and you can now
- sling macros everywhere, you may notice that sometimes, in the
- middle of a long macro, you flub it.
-
- If you hit F4 too soon (it happens), hit: C-u C-u F3 to pick up
- where you left off and enter the rest of the macro. Hit F4 when you
- are really finished.
-
- If you need to fix a keyboard macro with more finesse, type:
-
- C-x C-k C-e
-
- And behold the glory. Tis a simple language that should be pretty
- obvious to a skilled Macro-er as yourself. Type C-h m once in that
- buffer to display details of how to edit the macro. When you are
- finished editing, type: C-c C-c
-
- I’ll let you play around with your own example for this one.
- Read [[info:emacs#Edit%20Keyboard%20Macro][the manual]] for complete details.
-
-* Variations on a Theme
-
- To gain the Level 7 Keyboard Macro-er title, one should know how to
- customize a macro /while/ running it. The following section of HTML
- code needs some textual changes. We want to add one of the following
- phrases to the /end/ of every paragraph that has a =class= of =change=:
-
- * Because I said so. Got it?
- * Because I'm the boss. Got it?
- * You heard me. Got it?
- * Just do it. Got it?
-
- To begin, first move to the following block (hint: C-c M-f) and hit
- TAB to collapse the block (you gotta see all the instructions,
- right?) Next, issue a C-c ' on this block to show it in a new
- window. If you have trouble with your HTML mode, change the =html=
- to =text=.
-
- #+BEGIN_SRC html
-
-
-
-
- Proin neque massa, cursus ut, gravida ut, lobortis eget, lacus.
- Praesent augue. Sed diam. Nunc eleifend leo vitae magna. Nunc
- rutrum turpis sed pede.
-
-
- Nullam rutrum. Nunc rutrum turpis sed pede.
-
-
- Phasellus at dui in ligula mollis ultricies. Curabitur lacinia
- pulvinar nibh. Donec pretium posuere tellus. Praesent
- fermentum tempor tellus. Proin quam nisl, tincidunt et, mattis
- eget, convallis nec, purus.
-
-
- Fusce sagittis, libero non molestie mollis, magna orci ultrices
- dolor, at vulputate neque nulla lacinia eros. Sed diam. Nam
- vestibulum accumsan nisl.
-
-
- Aliquam feugiat tellus ut neque. Nam vestibulum accumsan
- nisl. Praesent fermentum tempor tellus.
-
-
- Vivamus id enim. Suspendisse potenti. Curabitur lacinia
- pulvinar nibh. Mauris ac felis vel velit tristique imperdiet.
-
-
- Donec vitae dolor. Mauris ac felis vel velit tristique
- imperdiet. Nunc aliquet, augue nec adipiscing interdum, lacus
- tellus malesuada massa, quis varius mi purus non odio. Proin
- quam nisl, tincidunt et, mattis eget, convallis nec, purus. Nam
- euismod tellus id erat.
-
-
- Nullam rutrum.
-
-
-
- #+END_SRC
-
- Type the following:
-
- - F3
- - C-s
- - Type: class="change"
- - C-e
- - C-s
- - Type:
- - C-p
- - C-e
- - C-x q
- - Type: Got it?
- - C-n
- - F4
-
- In this particular case, we actually didn't do anything special, so
- move to the beginning of the buffer, and hit F4, and the cursor will
- go to the end of every paragraph that needs changing, and stop with
- a prompt:
-
- Proceed with macro? (Y, N, RET, C-l, C-r)
-
- Type C-r and begin typing one of our phrases, and when you are done,
- type: C-M-c
-
- The prompt will be re-displayed, so finish the macro with 'Y'.
- Check out [[info:emacs#Keyboard%20Macro%20Query][the manual]] for details on this =C-x q= business.