MicroEmacs / Macros-Autocompletion

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.