home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 5 Edit
/
05-Edit.zip
/
ME22-OS2.ZIP
/
MACROS.ZIP
/
COMMENTS.M
< prev
next >
Wrap
Text File
|
1987-01-26
|
3KB
|
108 lines
/********************************************************************/
/* COMMENTS - macro for the ME text editor to handle comments */
/* when programming in C. */
/* */
/* Written 1/23/87 by Marc Adler of Magma Software Systems */
/* 138 - 23 Hoover Ave. */
/* Jamaica, NY 11435 */
/* */
/********************************************************************/
#define ALT_A 158
#define ALT_C 174
int CommentColumn;
init()
{
CommentColumn = 55;
assign_key("align_file", ALT_A);
assign_key("do_comment", ALT_C);
}
/* align_file - aligns all comments in a file */
align_file()
{
int lastln, i;
int startcol;
lastln = lastlinenum();
gobof();
for (i = 1; i <= lastln; i = i + 1)
{
if ((startcol = index(currline(), "/*")) > 1 && /* has a cmnt already */
/* If the comment is the only thing on the line, then don't touch it. */
!is_line_blank(substr(currline(), 1, startcol - 1)))
do_comment();
gobol();
down();
}
}
/* do_comment - inserts a comment if none already in a line */
/* or else aligns the comment at CommentColumn */
do_comment()
{
string cl;
int startcol, textcol;
if ((startcol = index(currline(), "/*")) > 0) /* has a cmnt already */
{
setcol(startcol); /* move to the comment */
if (startcol < CommentColumn)
/* slide the comment over till it hits the comment column */
insert(repstr(" ", CommentColumn - startcol));
else
{
/* slide the comment leftwards */
save_position();
/* move the cursor left until we reach a non-blank column */
left();
while (currchar() == ' ' && !isbol())
left();
textcol = currcol(); /* save the column # of the last char */
restore_position();
/* Delete leftwards until we reach the starting column */
while (startcol > textcol + 3 && startcol > CurrentColumn)
{
backspace();
startcol--;
}
} /* if startcol < CommentCol */
} /* if startcol = index() */
else /* No comment in the line yet, so insert one */
{
cl = currline(); /* make a copy of the current line*/
if (substr(cl, strlen(cl), 1) == " ")
{
rtrim(cl); /* get rid of the trailing blanks */
gobol(); /* on the current line */
deleol();
insert(cl);
}
if (currcol() < CommentColumn) /* move to the comment column */
setcol(CommentColumn);
insert("/* */"); /* put the comment at the end of the ln */
left(); left(); left(); /* move to just after the open comment */
}
}
is_line_blank(str)
string str;
{
int i;
int len;
len = strlen(str);
for (i = 1; i <= len; i++)
if (substr(str, i, 1) != " ")
return 0;
return 1;
}