###############################################################################
# check Env
###############################################################################
if ENV['PAGER'] == nil || ENV['PAGER'] == "" then
    puts "mfiler: $PAGER is null. please set $PAGER"
    exit(1)
end

if ENV['EDITOR'] == nil || ENV['EDITOR'] == "" then
    puts "mfiler: $EDITOR is null. please set $EDITOR"
    exit(1)
end

if ENV['SHELL'] == nil || ENV['SHELL'] == "" then
    puts "mfiler: $SHELL is null. set $SHELL"
    exit(1)
end

###############################################################################
# key settings
###############################################################################
keycommand NOMETA, KEY_UP,           "*",        "cursor_move(-1)"
keycommand NOMETA, KEY_DOWN,         "*",        "cursor_move(1)"
keycommand NOMETA, KEY_LEFT,         "*",        "if is_adir_left() then dir_move('..'); else cursor_left(); end"
keycommand NOMETA, KEY_RIGHT,        "*",        "if is_adir_right() then dir_move('..'); else cursor_right(); end"
keycommand NOMETA, KEY_PAGEUP,       "*",        "cursor_move(-5)"
keycommand NOMETA, KEY_PAGEDOWN,     "*",        "cursor_move(5)"
keycommand NOMETA, KEY_CTRL_P,       "*",        "cursor_move(-1)"
keycommand NOMETA, KEY_CTRL_N,       "*",        "cursor_move(1)"
keycommand NOMETA, KEY_CTRL_B,       "*",        "cursor_left()"
keycommand NOMETA, KEY_CTRL_F,       "*",        "cursor_right()"
keycommand NOMETA, KEY_CTRL_D,       "*",        "cursor_move(5)"
keycommand NOMETA, KEY_CTRL_U,       "*",        "cursor_move(-5)"
keycommand NOMETA, KEY_CTRL_A,       "*",        "cursor_move(-9999)"
keycommand NOMETA, KEY_CTRL_E,       "*",        "cursor_move(9999)"
keycommand NOMETA, KEY_LSS,          "*",        "cursor_move(-9999)"
keycommand NOMETA, KEY_GTR,          "*",        "cursor_move(9999)"
keycommand NOMETA, KEY_CTRL_H,       "*",        "dir_move('..')"
keycommand NOMETA, KEY_BACKSPACE,    "*",        "dir_move('..')"
keycommand NOMETA, 127,              "*",        "dir_move('..')"
keycommand NOMETA, KEY_DELETE,       "*",        "dir_move('..')"
keycommand META,   KEY_LEFT,         "*",        "dir_back()"
keycommand NOMETA, KEY_BACKSLASH,    "*",        "dir_move('/')"
keycommand NOMETA, KEY_TILDA,        "*",        "dir_move(\"#{ENV['HOME']}\")"
keycommand NOMETA, KEY_SPACE,        "*",        "mark()"
keycommand NOMETA, KEY_HOME,         "*",        "mark_all_files()"
keycommand NOMETA, KEY_END,          "*",        "mark_all()"
keycommand NOMETA, KEY_CTRL_L,       "*",        "refresh()"
keycommand NOMETA, KEY_CTRL_I,       "*",        "dir_up()"
keycommand NOMETA, KEY_CTRL_T,       "*",        "dir_new()"
keycommand NOMETA, KEY_CTRL_W,       "*",        "dir_close()"
keycommand NOMETA, KEY_SLASH,        "*",        "isearch()"
keycommand NOMETA, KEY_QMARK,        "*",        "help()"

keycommand NOMETA, KEY_c,      "*",     "cmdline('%Q%r copy(adir_path(), adir_mark(), %D2)', -2)"
keycommand NOMETA, KEY_m,      "*",     "cmdline('%Q%r move(adir_path(), adir_mark(), %D2)', -2)"
keycommand NOMETA, KEY_d,      "*",     "trashbox(adir_path(), adir_mark())"
keycommand NOMETA, KEY_e,      "*",     "shell('%q $EDITOR %f', '%f')"
keycommand NOMETA, KEY_v,      "*",     "shell('%q $PAGER %f', '%f')"
keycommand NOMETA, KEY_r,      "*",     "cmdline('%Q mv %f %f', -1)"
keycommand NOMETA, KEY_b,      "*",     "cmdline('%Q cp -Rpdi %f %f', -1)"
keycommand NOMETA, KEY_p,      "*",     "cmdline('tar cvfz %X.tgz %m1', -9)"
keycommand NOMETA, KEY_k,      "*",     "cmdline(\"%Q mkdir ''\", -1)"
keycommand NOMETA, KEY_n,      "*",     "cmdline(\"%Q touch ''\", -1)"
keycommand NOMETA, KEY_g,      "*",     "cmdline(\"%q grep '' * -n 2> /dev/null | $PAGER\", 10)"
keycommand NOMETA, KEY_f,      "*",     "cmdline(\"%Q%r set_mask('*')\", -2)"
keycommand NOMETA, KEY_w,      "*",     "dir_move(sdir_path() + '/')"
keycommand NOMETA, KEY_i,      ".dir",  "cmdline('du -sk %f', 7)"
keycommand NOMETA, KEY_i,      "*",     "cmdline('file %f', 0)"
keycommand NOMETA, KEY_o,      "*",     "tmp = adir_path(); dir_move(sdir_path() + '/'); sdir_move(tmp + '/')"
keycommand NOMETA, KEY_q,      "*",     "mf_exit()"

defmenu("jump",
   "(1) $HOME/prog/mfiler2", KEY_1, "dir_move(\"#{ENV['HOME']}/prog/mfiler2\")",
   "(2) $HOME/mp3", KEY_2, "dir_move(\"#{ENV['HOME']}/mp3\")",
   "(3) $HOME/song", KEY_3, "dir_move(\"#{ENV['HOME']}/song\")",
   "(4) $HOME/public_html/geocities", KEY_4, "dir_move(\"#{ENV['HOME']}/public_html/geocities\")"
);

defmenu("sort",
   "sort (n)ame", KEY_n, "sort_name()",
   "sort (N)ame reverse", KEY_N, "sort_name_reverse()",
   "sort (e)xtension", KEY_e, "sort_ext()",
   "sort (E)xtension reverse", KEY_E, "sort_ext_reverse()",
   "sort (s)ize", KEY_s, "sort_size()",
   "sort (S)ize reverse", KEY_S, "sort_size_reverse()",
   "sort (t)ime", KEY_t, "sort_time()",
   "sort (T)ime reverse", KEY_T, "sort_time_reverse()",
   "toggle (d)ir up", KEY_d, "sort_toggle_dir_up()",
   "view (a)ll", KEY_a, "view_all()",
   "view name(o)nly", KEY_o, "view_nameonly()",
   "view (1)dir", KEY_1, "view_onedir()"
);

defmenu("file_attr",
   "ch(m)od", KEY_m, "cmdline('%q chmod -R  %m1', 13)",
   "ch(o)wn", KEY_o, "cmdline('%q chown -R  %m1', 13)",
   "ch(g)rp", KEY_g, "cmdline('%q chgrp -R  %m1', 13)",
   "m(a)ttr (permission and date)", KEY_a, "shell('%q mattr %m1', 'mattr')"
);

defmenu("context-menu",
   "(e)macs on window",  KEY_e, "shell('%q emacs %f &', '%f')",
   "s(h)ell on xterm",  KEY_h, "cmdline('%t ', 0)",
   "run shell on xterm(:)",  KEY_COLON, "shell('%t%q cd %D1; echo \"-+- %D1 -+-\"; ls -aFG; $SHELL', \"#{ENV['SHELL']}\")",
   "(d)elete", KEY_d, "remove(adir_path(), adir_mark())",
    "(f)ind", KEY_f, "cmdline(\"%q find . -name '' 2> /dev/null | $PAGER\", 18)", 
   "new symbolic (l)ink", KEY_l, "cmdline('%Q ln -s %F %D2', 0)",   
   "new (s)hell script", KEY_s, "cmdline(\"%Q echo '#!/bin/sh' > /tmp/sscript; chmod 755 /tmp/sscript; mv /tmp/sscript '.sh'\", -4)",
   "(c)p",  KEY_c, "cmdline('cp -Rpf %m1 %D1', -1)",
   "(m)v",  KEY_m, "cmdline('mv -f %m1 %D1', -1)",
   "(r)m",  KEY_r, "cmdline('rm -R %m1', 0)",
   "m(a)rk_all_files", KEY_a, "mark_all_files()",
   "mar(k)_all", KEY_k, "mark_all()",
   "(b)ack to previous direcotry", KEY_b, "dir_back()"
);

keycommand NOMETA, KEY_j,      "*",     "menu('jump')"
keycommand NOMETA, KEY_s,      "*",     "menu('sort')"
keycommand NOMETA, KEY_a,      "*",     "menu('file_attr')"
keycommand NOMETA, KEY_ATMARK, "*",     "menu('context-menu')"

keycommand NOMETA, KEY_h,            "*",        "cmdline('', 0)"
keycommand NOMETA, KEY_x,            ".mark",    "cmdline('for i in %m1; do  ./$i; done', 18)"
keycommand NOMETA, KEY_x,            "*",        "cmdline(' ./%f', 1)"
keycommand NOMETA, KEY_COLON,        "*",        "shell('%q cd %D1; echo \"-+- %D1 -+-\"; ls -aF --color; $SHELL', \"#{ENV['SHELL']}\")"

keycommand NOMETA, KEY_CTRL_C,       "*",        "copy2()"
keycommand NOMETA, KEY_CTRL_X,       "*",        "cut()"
keycommand NOMETA, KEY_CTRL_V,       "*",        "past()"

keycommand NOMETA, KEY_0,            "*",        "restore_pty(select_pty('select pty'))"
keycommand NOMETA, KEY_MINUS,        "*",        "kill_pty(select_pty('kill pty'))"
keycommand NOMETA, KEY_1,            "*",        "restore_pty(1)"
keycommand NOMETA, KEY_2,            "*",        "restore_pty(2)"
keycommand NOMETA, KEY_3,            "*",        "restore_pty(3)"
keycommand NOMETA, KEY_4,            "*",        "restore_pty(4)"
keycommand NOMETA, KEY_5,            "*",        "restore_pty(5)"
keycommand NOMETA, KEY_6,            "*",        "restore_pty(6)"
keycommand NOMETA, KEY_7,            "*",        "restore_pty(7)"
keycommand NOMETA, KEY_8,            "*",        "restore_pty(8)"
keycommand NOMETA, KEY_9,            "*",        "restore_pty(9)"

###############################################################################
# extension settings
###############################################################################
defmenu("mp3-menu",
   "(m)pg123", KEY_m, "shell('mpg123 %f', '%f')",
   "m(p)layer", KEY_p, "shell('%q mplayer -zoom -framedrop %f', '%f')"
);

defmenu("gz-menu",
    "(t)ar xvfz", KEY_t, "shell('tar xvfz %f', '%f')",
    "(g)zip -d", KEY_g, "shell('gzip -d %f', '%f')"
);

defmenu("bz2-menu",
    "(t)ar xvfj", KEY_t, "shell('tar xvfj %f', '%f')",
    "(b)zip2 -d", KEY_b, "shell('bzip2d -d %f', '%f')"
);

keycommand NOMETA, KEY_CTRL_M, ".txt",     "shell('%q $PAGER %f', '%f')"
keycommand NOMETA, KEY_CTRL_M, ".html",    "shell('%q w3m %f', '%f')"
keycommand NOMETA, KEY_CTRL_M, ".gz",      "menu('gz-menu')"
keycommand NOMETA, KEY_CTRL_M, ".bz2",     "menu('bz2-menu')"
keycommand NOMETA, KEY_CTRL_M, ".tar",     "cmdline('tar xvf %f', 0)"
keycommand NOMETA, KEY_CTRL_M, ".tgz",     "cmdline('tar xvfz %f', 0)"
keycommand NOMETA, KEY_CTRL_M, ".lzh",     "cmdline('lha x %f', 0)"
keycommand NOMETA, KEY_CTRL_M, ".zip",     "cmdline('unzip %f', 0)"
keycommand NOMETA, KEY_CTRL_M, ".jpg",     "shell('%q display %f &', '%f')"
keycommand NOMETA, KEY_CTRL_M, ".jpeg",    "shell('%q display %f &', '%f')"
keycommand NOMETA, KEY_CTRL_M, ".gif",     "shell('%q display %f &', '%f')"
keycommand NOMETA, KEY_CTRL_M, ".bmp",     "shell('%q display %f &', '%f')"
keycommand NOMETA, KEY_CTRL_M, ".pnm",     "shell('%q display %f &', '%f')"
keycommand NOMETA, KEY_CTRL_M, ".png",     "shell('%q display %f &', '%f')"
keycommand NOMETA, KEY_CTRL_M, ".tif",     "shell('%q display %f &', '%f')"
keycommand NOMETA, KEY_CTRL_M, ".eps",     "shell('%q display %f &', '%f')"
keycommand NOMETA, KEY_CTRL_M, ".mp3",     "menu('mp3-menu')"
keycommand NOMETA, KEY_CTRL_M, ".wav",     "shell('%q esdplay %f', '%f')"
keycommand NOMETA, KEY_CTRL_M, ".WAV",     "shell('%q esdplay %f', '%f')"
keycommand NOMETA, KEY_CTRL_M, ".mid",     "shell('timidity %f', '%f')"
keycommand NOMETA, KEY_CTRL_M, ".mpg",     "shell('%q mplayer -zoom -framedrop %f', '%f')"
keycommand NOMETA, KEY_CTRL_M, ".mpeg",    "shell('%q mplayer -zoom -framedrop %f', '%f')"
keycommand NOMETA, KEY_CTRL_M, ".avi",     "shell('%q mplayer -zoom -framedrop %f', '%f')"
keycommand NOMETA, KEY_CTRL_M, ".MID",     "shell('timidity %f', '%f')"
keycommand NOMETA, KEY_CTRL_M, ".sh",      "cmdline('./%f', 0)"
keycommand NOMETA, KEY_CTRL_M, ".pl",      "cmdline('perl %f', 0)"
keycommand NOMETA, KEY_CTRL_M, ".py",      "cmdline('python %f', 0)"
keycommand NOMETA, KEY_CTRL_M, ".rb",      "cmdline('ruby %f', 0)"
keycommand NOMETA, KEY_CTRL_M, ".java",    "cmdline('%q javac %f 2>&1 | $PAGER', 0)"
keycommand NOMETA, KEY_CTRL_M, ".class",   "cmdline('java %X', 0)"
keycommand NOMETA, KEY_CTRL_M, ".c",       "cmdline('gcc -o %X %f; ./%X; rm -f %X', 0)"
keycommand NOMETA, KEY_CTRL_M, ".cpp",     "cmdline('g++ -o %X %f; ./%X; rm -f %X', 0)"
keycommand NOMETA, KEY_CTRL_M, ".asm",     "cmdline('%q nasm -f elf %f 2>&1 | $PAGER', 0)"
keycommand NOMETA, KEY_CTRL_M, "makefile", "cmdline('%q make -f %f  2>&1| $PAGER', -13)"
keycommand NOMETA, KEY_CTRL_M, "Makefile", "cmdline('%q make -f %f  2>&1| $PAGER', -13)"
keycommand NOMETA, KEY_CTRL_M, ".pdf",     "cmdline('%q acroread %f &', 0)"
keycommand NOMETA, KEY_CTRL_M, ".tex",     "cmdline('%q platex %f 2>&1 | $PAGER', 0)"
keycommand NOMETA, KEY_CTRL_M, ".dvi",     "cmdline('xdvi %f &', 0)"
keycommand NOMETA, KEY_CTRL_M, ".ps",      "cmdline('%q lpr %f -P', 0)"
keycommand NOMETA, KEY_CTRL_M, ".diff",    "cmdline('patch < %f', 0)"
keycommand NOMETA, KEY_CTRL_M, ".deb",     "cmdline('dpkg -i %f', 0)"
keycommand NOMETA, KEY_CTRL_M, ".nb",      "cmdline('mathematica %f &', 0)"
keycommand NOMETA, KEY_CTRL_M, ".s",       "cmdline('%q as -o %X.o %f | $PAGER', 0)"
keycommand NOMETA, KEY_CTRL_M, ".a",       "cmdline('%q nm %f 2>&1 | $PAGER', 0)"
keycommand NOMETA, KEY_CTRL_M, ".so",      "cmdline('%q nm -D %f 2>&1 | $PAGER', 0)"
keycommand NOMETA, KEY_CTRL_M, ".o",       "cmdline('%q nm %f 2>&1 | $PAGER', 0)"
keycommand NOMETA, KEY_CTRL_M, "core",     "cmdline('%Q rm %f', 0)"

keycommand NOMETA, KEY_CTRL_M, ".dir",     "dir_move(cursor_name())"
keycommand NOMETA, KEY_CTRL_M, ".exe",     "cmdline('./%f ', 0)"
keycommand NOMETA, KEY_CTRL_M, "*",        "shell('%q $PAGER %f', '%f')"

###############################################################################
# alias
###############################################################################

malias "HOME", 0, "%r%Q dir_move(ENV['HOME'])"
malias "L", 0, "| less"
malias "CD", 1, "%r%Q dir_move('#0')"
malias "&", 0, "& %s"
malias "PSG", 1, "ps aux | grep #0 | grep -v grep"

###############################################################################
# option settings
###############################################################################
sort_name
#sort_name_reverse
#sort_ext
#sort_ext_reverse
#sort_size
#sort_size_reverse
#sort_time
#sort_time_reverse

view_all
#view_onedir
#view_nameonly

option_color false
option_individual_cursor true
option_enter_decision false
option_check_delete_file true
option_check_copy_file false
option_check_exit true
option_shift_isearch true
option_trashbox_name "mtrashbox"
option_gnu_screen false
option_pty false
option_remain_cursor true
option_auto_rehash false

option_bold_exe true
option_bold_dir true
option_color_mark RED
option_color_dir BLUE
option_color_exe GREEN
option_color_link CYAN

# WHITE, BLUE, CYAN, GREEN, YELLOW, MAGENTA, RED

option_kanjicode "euc"
# option_kanjicode "sjis"
# option_kanjicode "utf"

option_xterm false
set_xterm("xterm", "-T", "-e", "")

#set_xterm("Eterm", "-T", "-e", "--mencoding eucj --scrollbar false -F 7x14 -M k14 --cmod 100 --trans")

###############################################################################
# user definition
###############################################################################
defmenu("iso-menu",
   "d(v)d", KEY_v, "cmdline('growisofs -Z /dev/dvd=%f', 0)",
   "dvd (v)ideo", KEY_v, "cmdline('growisofs -dvd-compat -Z /dev/dvd=%f', 0)",
   "(c)d", KEY_c, "cmdline('cdrecord -v dev=0,0,0 speed=8 -pad -dao %f', 0)"
);

keycommand NOMETA, KEY_CTRL_M, ".iso",     "menu('iso-menu')"

defmenu("user_commands",
   "mk(i)sofs", KEY_i, "cmdline('mkisofs -R -J -o %f.iso %f', 0)",
   "(c)dparanoia", KEY_c, "cmdline('cdparanoia -B 1-; for i in *; do gogo $i; done; rm *wav', 0)",
   "(r)eadcd to iso", KEY_r, "cmdline('readcd dev=0,0 f=', 0)",
   "dvd (b)ackup", KEY_b, "cmdline('dvdbackup -M -i/dev/dvd -o', 0)",
   "(f)tp", KEY_f, "cmdline(\"cd /home/daisuke/public_html/geocities; lftp -u daisuke530221jp ftp.geocities.jp -e 'mirror -R .'\", 0)",
   "(m)ail", KEY_m, "cmdline('cat %f | nkf -j | mail -s ', 0)",
   "c(d)rom mount", KEY_d, "cmdline('mount -t iso9660 /dev/sr0 %f', 0)",
   "/var/(l)og/message", KEY_l, "cmdline('tail -f /var/log/messages', 0)",
   "(k)abegami", KEY_k, "cmdline('Esetroot -scale %f', 0)"
);

keycommand NOMETA, KEY_u, "*", "menu('user_commands')"

