Hello everybody.
Having downloading the source of MC mc-4.6.0-src.tar.gz I am trying to
tune this software for my needs. One of them is displaying directories
size (some of them, not all as implemented now in MC). I changed the
src/cmd.c in order to show directory size under cursor (if no one
directories selected by <Insert> key or by any other methods) and selected
only directories (if any selected) when pressing F3 (does anybody use F3
to go into directories?). For example see attachment my-mc.png. The changed
code in do_view_cmd function. Here new code
/*
* Run viewer (internal or external) on the currently selected file.
* If normal is 1, force internal viewer and raw mode (used for F13).
*/
static void
do_view_cmd (int normal)
{
int dir, file_idx;
if (S_ISDIR (selection (cpanel)->buf.st_mode)
|| link_isdir (selection (cpanel)))
{
WPanel *panel = cpanel;
int i;
off_t marked;
double total;
for (i = 0; i < panel->count; i++)
if (S_ISDIR (panel->dir.list [i].buf.st_mode) && strcmp (panel->dir.list [i].fname, "..") != 0)
{
if (!panel->dir.list[i].f.marked && panel->dirs_marked)
continue; /* Skip the unmarked ones */
if(!panel->dirs_marked && strcmp (panel->dir.list [i].fname, selection (cpanel)->fname ) )
continue;
total = 0.0l;
compute_dir_size (panel->dir.list [i].fname, &marked, &total);
panel->dir.list [i].buf.st_size = (off_t) total;
panel->dir.list [i].f.dir_size_computed = 1;
}
recalculate_panel_summary (panel);
paint_panel (panel);
return;
}
file_idx = cpanel->selected;
while (1) {
char *filename;
filename = cpanel->dir.list[file_idx].fname;
dir = view_file (filename, normal, use_internal_view);
if (dir == 0)
break;
file_idx = scan_for_file (cpanel, file_idx, dir);
}
}
All changes are done in the first if(… . I take this code from
src/cmd.c function dirsizes_cmd.
Some other changes I've done in MC:
1) current time in right upper corner of MC (see attacment my-mc.png);
2) in view and edit Shift+F8 switches the code page "on the fly";
3) Shift + F1 and Shift + F2 launches quick directory change (directories
and it's labels are stored in ~/.mc/folders (see my-mc.png in attachment):
A: Floppy
/mnt/floppy/
C: Root
/
D: CD-ROM
/mnt/cdrom/
E: Windows
/mnt/windows/
F: C-docs
/usr/X11R6/man/man3/
G: Icons
/usr/local/icons/
1: net Music
/mnt/igor-music/
2: net Films
/mnt/igor-films/
3: net Home
/mnt/igor-srv-home/
Unfortunately I can't insert separator to menu (two empty lines are
rather fiction than real separator).
I know the similar feature is implemented on Ctrl+\ key combination,
but due to my long working with Far I formed some habits.
4) Ctrl + L shows info (as in Far).
It seems to be all. I hope someone find this useful.
Now I'd like to ask some questions:
1) Can I make nested (or embedded - I don't know how is correct)
user menu on F2?
2) Can I change the behavior of MC on Ctrl+C key in mcedit? I want
to use Ctrl+C to copy selected text into clipboard, not to abort
actions.
Thanks in advance
VyacheslavAttachment:
my-mc.png
Description: PNG image
Scanned by evaluation version of Dr.Web antivirus Daemon http://drweb.ru/unix/