home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of Shareware - Software Farm 2
/
wosw_2.zip
/
wosw_2
/
QBAS
/
QBNWS204.ZIP
/
BRIEF.ZIP
/
LINENUM.CB
< prev
next >
Wrap
Text File
|
1991-12-07
|
3KB
|
135 lines
/* */
/* LINENUM.CB 4-23-91 Matt Hart */
/* */
/* Add or remove line numbers */
/* */
void add_numbers();
void remove_numbers();
void line_number_select()
{
int chr;
message("A = Add numbers / R = Remove numbers");
while (! inq_kbd_char());
chr = 0xff & read_char();
if (chr == 65 || chr == 97)
add_numbers();
else
{
if (chr == 82 || chr == 114)
remove_numbers();
else
{
beep();
error("Invalid key");
}
}
}
void add_numbers()
{
string this_line,
ins_string;
int marked,
start_line,
end_line,
cur_line,
dum,
mover,
type_flag = 0,
under_flag = 0,
select_flag = 0,
line_num = 10;
message("Adding line numbers");
save_position();
marked = inq_marked(start_line,dum,end_line);
if (marked == 0)
{
start_line = 1;
end_of_buffer();
inq_position(end_line);
top_of_buffer();
}
else
if (marked != 3)
{
error ("Mark type must be a line mark 'Alt-L'");
restore_position();
return;
}
end_line++;
move_abs (start_line,1);
cur_line = start_line;
while (cur_line < end_line)
{
this_line = trim(read());
if (ltrim(this_line) != "" && substr(ltrim(this_line),1,1) != "'")
{
if (type_flag == 0 && under_flag == 0 && select_flag == 0)
{
sprintf(ins_string,"%d",line_num);
ins_string = ltrim(trim(ins_string))+" ";
insert(ins_string);
move_abs(0,1);
message ("Adding line number %d",line_num);
line_num = line_num + 10;
}
if (upper(substr(ltrim(this_line),1,5)) == "TYPE ")
type_flag = 1;
else
{
if (type_flag == 1)
{
if (upper(substr(ltrim(this_line),1,8)) == "END TYPE")
type_flag = 0;
}
}
if (substr(this_line,strlen(this_line),1) == "_")
under_flag = 1;
else
under_flag = 0;
if (upper(substr(ltrim(this_line),1,7)) == "SELECT ")
select_flag = 1;
else
{
if (select_flag == 1)
{
if (upper(substr(ltrim(this_line),1,5)) == "CASE ")
select_flag = 0;
}
}
}
mover = move_rel(1);
if (mover == 0)
break;
inq_position(cur_line);
}
restore_position();
message("Add line numbers finished");
}
void remove_numbers()
{
int cur_line1,cur_line2,count = 0;
message("Removing all line numbers");
save_position();
top_of_buffer();
while (search_fwd ("<[1-9]"))
{
drop_anchor();
inq_position(cur_line1);
message("Removing line numbers %d",count++);
search_fwd (" ");
inq_position(cur_line2);
if (cur_line1 == cur_line2)
delete_block();
}
restore_position();
message("Remove all line numbers finished");
}