Motivation
If you are writing a document, or a program you are writing the same words again and again. Often if you are a programmer you have to remember the name of a certain function you just were creating. In my cases most of compiler-error-messages are coming from misspelled function or variable names. To minimise such trouble you can use the following macro.
autocomplet-word
Start writing the word the first two, three, four or five letters and execute the macro, it will search backward for these letters and fill the word with the first possible word it was founding. So these letters should match the proper word beginning correctly. This is especially useful if you see the other word still on the screen. Normally you would thy the function or macro-name: what-for-a-wonderful-macro again, or you try to copy and past it, very borrowing. I simple write "what-" and press "C-1" and the name is completed: what-for-a-wonderful-macro.
define-macro autocomplete-word ; remember position set-alpha-mark "t" set-mark backward-word exchange-point-and-mark copy-region ; copy clip to variable set-variable #l0 @y ; how many letters ? set-variable #l1 &len #l0 ; empty clipboard -1 yank backward-word ; search clip and extract rest of the word search-backward #l0 #l1 forward-char set-mark forward-word exchange-point-and-mark copy-region goto-alpha-mark "t" yank -1 yank !emacro global-bind-key "autocomplete-word" "C-1"
Repeat the previous line
The following macro works well together with the previos one. It repeats the previous line, beginning from the actual cursor button. This helps if you have to rewrite almost the same code in the next line just replacing a small amount of letters. Imagine you have to write the following java-code:
(:source lang=java:)// java example code Button b1 = new Button("Red"); Button b2 = new Button("Green"); Button b3 = new Button("Blue");
Much of this code is redundant. So with the aid of the previous an the following macro you can save time:
define-macro repeat-line backward-line set-mark end-of-line exchange-point-and-mark copy-region forward-line yank -1 yank !emacro global-bind-key "repeat-line" "C-2"
Concerning the JAVA-example you simple write the following:
Button b1 = new Button("Red"); B(C-1) b2(C-2)(C-left)
and you rewrite the name of the second button.