Thanks to Thorsten Ole, Richard Stanton, Dale Smith for supplying bug fixes, and Wlodek Drabent for getting me to fix counted character movement and deletion. To apply this patch, load this file (called "patch1.min") into Freemacs. Press C-c C-c. Then run M-x save-all-libs Name:F:backward-char Move the point back by one character [*] #(sp,#(Floop,#(Fsignum,(arg1),<,>),#(Fmodulus,(arg1))))[*] Name:F:backward-kill-word [*] #(Fkill-do,F:backward-word,(arg1),backward-) [*] Name:F:delete-backward-char Delete the character before the point. [*] #(==,arg1,,(#(dm,<)),( #(Fkill-do,F:backward-char,(arg1),backward-) ))[*] Name:F:delete-char The character to the right of the point is deleted. [*] #(==,arg1,,(#(dm,>)),( #(Fkill-do,F:forward-char,(arg1)) ))[*] Name:F:forward-char Move forward one character [*] #(sp,#(Floop,#(Fsignum,(arg1),>,<),#(Fmodulus,(arg1))))[*] Name:Fkill-do Arg1 is the function to move over the text, and arg2 is the count. Arg3 is either "backward-" or it is null. [*] #(pm,1) #(arg1,(arg2)) #(Farg3kill,0)#(pm) [*] The original buffer-not-modified would remove read-only status from a file Name:F:buffer-not-modified Makes the current buffer think that it hasn't been modified (unless read-only) [*]#(==,##(lv,mb),1,(#(sv,mb,0)))[*] A little nit.. C-Q Esc would put ^] into the buffer instead of ^[. Name:Fquoted-char Prompt the user for a control character, and return the character. [*]#(an,Enter control character (\ for octal) ?) #(ds,temp,#(g)) #(an) #(==,##(gn,temp,1),\,( #(ds,value) #(Freadline,Octal code:,foo) #(bc,#(value),o,a) ),( #(rs,temp) #(==,##(gn,temp,2),C-,( ##(bc,##(--,##(bc,#(si,Fxlat-upper,##(gs,temp))),64),d,a) ),( #(rs,temp) #(Fcase,##(temp), (Return,(##(bc,13,d,a))), (LPar,(##(bc,40,d,a))), (RPar,(##(bc,41,d,a))), (Comma,((,))), (Tab,(( ))), (Escape,(##(bc,27,d,a))), (Del,(##(bc,127,d,a))), (#(==,##(nc,##(temp)),1,(##(temp)),(#(bl)))) ) )) ))[*]