home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 5 Edit
/
05-Edit.zip
/
ME22-OS2.ZIP
/
MACROS.ZIP
/
DIRED2.M
< prev
next >
Wrap
Text File
|
1988-01-01
|
3KB
|
129 lines
/***********************************************************************\
|* *|
|* DIRED - a very simple directory editor *|
|* *|
|* You can invoke this from the editor by loading in the DIRED macro *|
|* and pressing <ALT> D. A directory listing will appear in another *|
|* window. Move the highlight to a file and press ENTER. The selected *|
|* file will replace the directory listing in the new window. You may *|
|* also delete the selected file by pressing 'D' or the DEL key. *|
|* *|
|* Feel free to add your own enhancements. *|
|* *|
|* (C) Copyright 1987 Marc Adler Magma Software Systems *|
\***********************************************************************/
#define ALT_D 160
#define UPKEY 200
#define DOWNKEY 208
#define DEL 211
#define ESC 27
init()
{
assign_key("dired", ALT_D);
}
dired()
{
string path;
string dirtmpfile;
int dirbuf, orig_buf;
int c;
dirtmpfile = "$$$DIR$$.$$";
/* Prompt the user for the file spec */
path = get_tty_str("Path : (default *.*)");
os_command(sprintf("DIR %s > %s", path, dirtmpfile));
orig_buf = currbuf();
dirbuf = setcurrbuf(create_buffer(dirtmpfile));
/* Get rid of the first 4 lines of the DIR listing - they contain nada */
for (i = 1; i <= 4; i++)
delline();
/* We want to get rid of all the subdirectory listings */
while (fsearch("<DIR>"))
delline();
/* Get rid of the file total & disk free info */
goeof();
delline();
gobof();
/* Display the directory listing in a full-screen window */
show_buffer(dirbuf);
explode_window();
markline(); /* highlite the first entry */
kid = keyboard_push();
assign_key("up_entry", UPKEY);
assign_key("down_entry", DOWNKEY);
assign_key("del_entry", 'd');
assign_key("del_entry", 'D');
assign_key("del_entry", DEL);
while ((c = get_tty_char()) != ESC && c != '\n')
command(c);
keyboard_pop(1);
/* Get rid of all highlighting and delete the directory listing */
clear_mark();
unexplode_window();
if (c == '\n')
fname = get_filename();
delete_buffer(dirbuf);
if (c == ESC) /* we didn't choose a file */
show_buffer(orig_buf);
else /* we chose a file to edit */
show_buffer(create_buffer(fname));
}
up_entry()
{
if (currlinenum() > 1)
{
clear_mark();
up();
markline();
}
}
down_entry()
{
if (currlinenum() < lastlinenum())
{
clear_mark();
down();
markline();
}
}
del_entry()
{
choice = get_tty_str("Are you sure? (Y/N)");
if (choice == "Y" || choice == "y")
{
os_command(strcat("del ", get_filename()));
delline();
markline();
}
}
/* get_filename - extracts the file name from the current line */
get_filename()
{
string root, extension;
root = rtrim(substr(currline(), 1, 8));
extension = substr(currline(), 10, 3);
if (extension != " ")
root = sprintf("%s.%s", root, rtrim(extension));
return root;
}