summary followup: Vi macros for C programming
Mitchell Wyle
wyle at inf.ethz.ch
Sat Nov 25 02:51:49 AEST 1989
The replies to my original posting were underwhelming :-(
No one sent me a single macro :-( 8-(. How do you write a usenet article
which gets replies?
Undaunted, I started to write my own set of C programming macros.
Check these out:
map ;cc :r /usr/local/lib/vi/C_template^M1Gdd
map ;in i#include <file.h>^M^[kwwwcw
map ;de i#define const val^M^M^[kkwwcw
map ;ty itypedef struct newtype {^M int i;^M} newtype;^M^[kkkwwcw
map ;wh iwhile ( cond ) {^M st;^M}^M^[kkkwwcw
map ;fo ifor ( i = 0; i < max; i++ ) {^M st;^M}^[kkwwcw
map ;if iif ( cond ) {^M st;^M}^[kkwwcw
map ;ie iif ( cond ) {^M st;^M} else {^M st;^M}^[kkkkwwcw
map! ;QGF f(x,y)^Mnode *x;^Mint y;^M{^M int i;^M} /* end f */^M^[6kwcw
map ;fv ivoid ;QGF
map ;fi iint ;QGF
map ;ff ifloat ;QGF
So what do they do? Well, ;cc reads in a template file which, at the
moment, looks like this:
-------------------------------------------------------------------------
/*
%Z%%M% %I% %E% %U%
coder date what
----- ------- ---------------------------------------------------------
ynh 00jan90 what
*/
/* includes */
#include <stdio.h>
#include <string.h>
/* constants */
#define MaxLineLen 127 /* max line length for buffer */
/* macros */
#define err(a) { fputs(a,stderr); fputs(" Punting.\n",stderr); exit(-1); }
/* global variables */
FILE *f; /* file pointer */
char line[MaxLineLen]; /* line buffer for reading the file */
short i,j,k; /* loop indices */
main() {
} /* end program */
----------------------------------------------------------------------------
Then ;in creates a cpp include statement, ;de creates a define.
;ty creates a typedef construct. ;wh a while and ;fo a for statement.
These macros are very similar to the electric-Modula-2 set.
Of course there is ;if for an if statement, ;ie for an if-then-else.
The ;QGF is an insert mode helper-macro for declaring functions. ;fv
declares a void function, ;fi an integer and ;ff a float.
All macros leave you in change-word mode at the first logical place that you
should add text.
I haven't started using them in "production" yet, but intend to do so next
week. I'll let y'all know what changes I decide to make.
Here are the macros packaged in compressed, uuencoded form:
begin 654 exrc.Z
M'YV0(D"4T%*B1),2(!(*3((P88DB"$M4*:% 1$401=B4&4-'3IHQ+88D3.,&
MA)TT(-J$@9,RS!@Y;^: $)('1!,7((S at O))'(X at A;^#D\7@T0*(:D !$C
M1PX8+)@ZA5'QHIDT<N8<?5DF#)TR(,* ^-H&#ANO8.' /",G3!L09F"^O8/F
M(YJQ;UJN 3L&31 at W9\K,<4&XJDJ6.\:, :%##H at 7=>;(><'FS9 at P;"BG$?/B
MY(LA7\B:1=L at QA$R9!0<!K&#)(@T(TB.85.'#%@>5S6Z0..CP88U=X*/N:-Z
M)6O;KT?8ONJ&[QLW6DUB;N![#? [PXLCIE,S#7<X99:#T"JG#D<0S>]\![NG
MP4 at W1]/L:- '?1GU><#/_VU=./'5.]#U&EUI^(0""&,\1P8(2[67D%;S]5%=
M?]C]9]P.9N251H:.'8A2#R# L,-K(/#0$AXCIK'""@R"X.!X=$3(GW_:L;;A
M:S<>F* ;"S;H'HPR4I@=@&F E4:.""K8XHL0T@="&6S,P=Z/3?;!GY 6PA$"
M:U$<801<*.#!0AXI-.#&&\BI@&(#)!V5QWPOMOE:A(^I\"2/<(&@P at N^V0#<
CD!>:8<=K=KR1QH([=&E$C1BB="1\7'K)J!EFO&9&95Y%NBB/
end
#
Could some kind soul please please send me the vi map macros for
editing C code and/or the C-template files posted to comp.sources.misc?
Also, I am *STILL* interested in vi map macro code which you find
useful.
Finally, does someone have a compiled set of statistics for which
keystrokes in which order C-coders type at vi? I wrote some code a while
back which generates macros from keystroke sequences and could probably
change the code generator from EDT to vi pretty quickly.
Thanks,
-Mitchell F. Wyle
Institut fuer Informationssysteme wyle at inf.ethz.ch
ETH Zentrum / 8092 Zurich, Switzerland +41 1 256 5237
More information about the Comp.lang.c
mailing list