Patch for MC



Hello, MC developers team ;-)
First of all, thanks for your product)

I have pretty patch for the MC, written by X-Stranger(x linux by), but for MC-4.6.1. I rewrite this patch for mc-4.7.0_pre2.
This patch adds files color highlighting by it`s type.
So maybe include it into the distribution?

PS. Sorry for my english, I am Russian ;-)
PPS. Here is screenshot  of patched mc.


---
Best regards, Alexey Kaminsky
diff -urN mc-4.7.0-pre2-orig/doc/man/mc.1.in mc-4.7.0-pre2/doc/man/mc.1.in
--- mc-4.7.0-pre2-orig/doc/man/mc.1.in	2009-08-28 21:31:32.000000000 +0300
+++ mc-4.7.0-pre2/doc/man/mc.1.in	2009-08-31 15:37:04.000000000 +0300
@@ -3058,7 +3058,9 @@
 dhotnormal, dhotfocus.  Help colors are: helpnormal, helpitalic,
 helpbold, helplink, helpslink.  Viewer color is: viewunderline.  Special
 highlighting colors are: executable, directory, link, stalelink, device,
-special, core.  Editor colors are: editnormal, editbold, editmarked.
+special, core. Filetype highlighting colors are: hidden, temp, doc,
+archive, source, media, graph, database.  Editor colors are: editnormal,
+editbold, editmarked.
 .PP
 .I input
 determines the color of input lines used in query dialogs.
@@ -3116,6 +3118,25 @@
 .I core
 is for core files.
 .PP
+Also filetype highlight colors determine how files displayed depending
+on file type such as (below are colors named as filetypes):
+.I hidden
+is used for hidden files and directories that begin with dot;
+.I temp
+is used for temporary files;
+.I doc
+is used for document and text files;
+.I archive
+is used for archive files;
+.I source
+is used for files with source codes;
+.I media
+is used for multimedia files;
+.I graph
+is used for files with graphic data;
+.I database
+is used for database files.
+.PP
 The possible colors are: black, gray, red, brightred, green,
 brightgreen, brown, yellow, blue, brightblue, magenta, brightmagenta,
 cyan, brightcyan, lightgray and white. And there is a special keyword
diff -urN mc-4.7.0-pre2-orig/doc/man/ru/mc.1.in mc-4.7.0-pre2/doc/man/ru/mc.1.in
--- mc-4.7.0-pre2-orig/doc/man/ru/mc.1.in	2009-08-28 21:31:32.000000000 +0300
+++ mc-4.7.0-pre2/doc/man/ru/mc.1.in	2009-08-31 15:36:05.000000000 +0300
@@ -3406,8 +3406,9 @@
 dnormal, dfocus, dhotnormal, dhotfocus; ЦвеÑ?а в окне подÑ?казки:
 helpnormal, helpitalic, helpbold, helplink, helpslink; в окне пÑ?огÑ?аммÑ?
 пÑ?оÑ?моÑ?Ñ?а:  viewunderline; Ñ?пеÑ?иалÑ?нÑ?е подÑ?веÑ?ки: executable, directory,
-link, device, special, core; в окне Ñ?едакÑ?оÑ?а: editnormal, editbold,
-editmarked.
+link, device, special, core; подÑ?веÑ?ка Ñ?айлов по Ñ?ипам: hidden, temp,
+doc, archive, source, media, graph, database; в окне Ñ?едакÑ?оÑ?а:
+editnormal, editbold, editmarked.
 .PP
 ЦвеÑ?а задаваÑ?Ñ? не обÑ?заÑ?елÑ?но. ЦвеÑ? какого именно полÑ? опÑ?еделÑ?еÑ?Ñ?Ñ?
 каждÑ?м клÑ?Ñ?евÑ?м Ñ?ловом, можно понÑ?Ñ?Ñ? из пеÑ?евода Ñ?Ñ?ого клÑ?Ñ?евого Ñ?лова.
@@ -3471,6 +3472,25 @@
 .I core
 \- длÑ? Ñ?айлов Ñ? дампами (core).
 .PP
+Ð?налогиÑ?но подÑ?веÑ?ка Ñ?айлов по Ñ?ипам иÑ?полÑ?зÑ?еÑ?Ñ?Ñ? длÑ? подÑ?веÑ?ки Ñ?айлов
+в завиÑ?имоÑ?Ñ?и оÑ? иÑ? Ñ?аÑ?Ñ?иÑ?ениÑ?:
+.I hidden
+иÑ?полÑ?зÑ?еÑ?Ñ?Ñ? длÑ? Ñ?кÑ?Ñ?Ñ?Ñ?Ñ? Ñ?айлов и каÑ?алогов, коÑ?оÑ?Ñ?е наÑ?инаÑ?Ñ?Ñ?Ñ? Ñ? Ñ?оÑ?ки;
+.I temp
+\- длÑ? вÑ?еменнÑ?Ñ? Ñ?айлов;
+.I doc
+\- длÑ? Ñ?айлов докÑ?менÑ?ов;
+.I archive
+\- длÑ? Ñ?айлов аÑ?Ñ?ивов;
+.I source
+\- длÑ? Ñ?айлов иÑ?Ñ?однÑ?Ñ? Ñ?екÑ?Ñ?ов;
+.I media
+\- длÑ? мÑ?лÑ?Ñ?имедиа-Ñ?айлов;
+.I graph
+\- длÑ? гÑ?аÑ?иÑ?еÑ?киÑ? Ñ?айлов;
+.I database
+\- длÑ? Ñ?айлов баз даннÑ?Ñ?.
+.PP
 Ð?озможнÑ?е Ñ?веÑ?а: black, gray, red, brightred, green, brightgreen, brown,
 yellow, blue, brightblue, magenta, brightmagenta, cyan, brightcyan,
 lightgray и white.
diff -urN mc-4.7.0-pre2-orig/po/mc.pot mc-4.7.0-pre2/po/mc.pot
--- mc-4.7.0-pre2-orig/po/mc.pot	2009-08-28 23:31:11.000000000 +0300
+++ mc-4.7.0-pre2/po/mc.pot	2009-08-31 15:42:00.000000000 +0300
@@ -1213,6 +1213,42 @@
 msgid "&Select"
 msgstr ""
 
+#: src/boxes.c:681
+msgid "&Ok"
+msgstr ""
+
+#: src/boxes.c:683
+msgid "Databases"
+msgstr ""
+
+#: src/boxes.c:685
+msgid "Graphics"
+msgstr ""
+
+#: src/boxes.c:687
+msgid "Multimedia"
+msgstr ""
+
+#: src/boxes.c:689
+msgid "Sources"
+msgstr ""
+
+#: src/boxes.c:691
+msgid "Archives"
+msgstr ""
+
+#: src/boxes.c:693
+msgid "Text/Doc Files"
+msgstr ""
+
+#: src/boxes.c:695
+msgid "Temp Files"
+msgstr ""
+
+#: src/boxes.c:700
+msgid " File highlighting "
+msgstr ""
+
 #: src/boxes.c:746
 msgid "Use passive mode over pro&xy"
 msgstr ""
@@ -2948,6 +2984,10 @@
 msgid "&Display bits..."
 msgstr ""
 
+#: src/main.c:920
+msgid "file &Highlighting..."
+msgstr ""
+
 #: src/main.c:784
 msgid "learn &Keys..."
 msgstr ""
@@ -3070,8 +3110,9 @@
 #: src/main.c:1863
 msgid ""
 "   Help:         helpnormal, helpitalic, helpbold, helplink, helpslink\n"
-"   File types:   directory, executable, link, stalelink, device, special, "
-"core\n"
+"   File types:   directory, executable, link, stalelink, device, special,\n"
+"                 core, hidden, temp, doc, archive, source, media, graph,\n"
+"                 database\n"
 "\n"
 "Colors:\n"
 "   black, gray, red, brightred, green, brightgreen, brown,\n"
diff -urN mc-4.7.0-pre2-orig/po/ru.po mc-4.7.0-pre2/po/ru.po
--- mc-4.7.0-pre2-orig/po/ru.po	2009-08-28 23:31:16.000000000 +0300
+++ mc-4.7.0-pre2/po/ru.po	2009-08-31 15:44:02.000000000 +0300
@@ -919,6 +919,33 @@
 msgid "&Select"
 msgstr "Ð?Ñ?бÑ?аÑ?Ñ?"
 
+msgid "&Ok"
+msgstr "&Ð?алÑ?Ñ?е"
+
+msgid "Databases"
+msgstr "ФайлÑ? баз даннÑ?Ñ?"
+
+msgid "Graphics"
+msgstr "Ð?Ñ?аÑ?иÑ?еÑ?кие Ñ?айлÑ?"
+
+msgid "Multimedia"
+msgstr "Ð?Ñ?лÑ?Ñ?имедиа Ñ?айлÑ?"
+
+msgid "Sources"
+msgstr "ФайлÑ? иÑ?Ñ?однÑ?Ñ? Ñ?екÑ?Ñ?ов"
+
+msgid "Archives"
+msgstr "ФайлÑ? аÑ?Ñ?ивов"
+
+msgid "Text/Doc Files"
+msgstr "ТекÑ?Ñ?овÑ?е Ñ?айлÑ? и Ñ?айлÑ? докÑ?менÑ?ов"
+
+msgid "Temp Files"
+msgstr "Ð?Ñ?еменнÑ?е Ñ?айлÑ?"
+
+msgid " File highlighting "
+msgstr " Ð?одÑ?веÑ?ка Ñ?айлов "
+
 msgid "Use passive mode over pro&xy"
 msgstr "Ð?Ñ?полÑ?зоваÑ?Ñ? паÑ?Ñ?ивнÑ?й Ñ?ежим Ñ?еÑ?ез пÑ?окÑ?и"
 
@@ -2379,6 +2406,9 @@
 msgid "&Display bits..."
 msgstr "&Ð?иÑ?Ñ? Ñ?имволов..."
 
+msgid "file &Highlighting..."
+msgstr "Ð?&одÑ?веÑ?ка Ñ?айлов..."
+
 msgid "learn &Keys..."
 msgstr "&РаÑ?познавание клавиÑ?..."
 
@@ -2504,8 +2534,9 @@
 
 msgid ""
 "   Help:         helpnormal, helpitalic, helpbold, helplink, helpslink\n"
-"   File types:   directory, executable, link, stalelink, device, special, "
-"core\n"
+"   File types:   directory, executable, link, stalelink, device, special,\n"
+"                 core, hidden, temp, doc, archive, source, media, graph,\n"
+"                 database\n"
 "\n"
 "Colors:\n"
 "   black, gray, red, brightred, green, brightgreen, brown,\n"
diff -urN mc-4.7.0-pre2-orig/src/boxes.c mc-4.7.0-pre2/src/boxes.c
--- mc-4.7.0-pre2-orig/src/boxes.c	2009-08-13 00:05:16.000000000 +0300
+++ mc-4.7.0-pre2/src/boxes.c	2009-08-31 14:53:19.000000000 +0300
@@ -662,6 +662,71 @@
 
 #endif /* HAVE_CHARSET */
 
+/*
+* File highlighting setup dialog
+*/
+#define FILEHLY 20
+#define FILEHLX 56
+
+static char *ret_ftmp;
+static char *ret_fdoc;
+static char *ret_farch;
+static char *ret_fsrc;
+static char *ret_fmedia;
+static char *ret_fgraph;
+static char *ret_fdbase;
+
+static QuickWidget filehl_widgets [] = {
+{ quick_button,   30, FILEHLX, FILEHLY - 3, FILEHLY, N_("&Cancel"), 0, B_CANCEL, 0, 0, "button-cancel" },
+{ quick_button,   12, FILEHLX, FILEHLY - 3, FILEHLY, N_("&Ok"), 0, B_ENTER, 0, 0, "button-ok" },
+{ quick_input,     4, FILEHLX, 15,  FILEHLY, "", 48, 0, 0, &ret_fdbase, "input-ft-dbase"},
+{ quick_label,     4, FILEHLX, 14,  FILEHLY, N_("Databases"), 0, 0, 0, 0, "label-ft-dbase" },
+{ quick_input,     4, FILEHLX, 13,  FILEHLY, "", 48, 0, 0, &ret_fgraph, "input-ft-graph"},
+{ quick_label,     4, FILEHLX, 12,  FILEHLY, N_("Graphics"), 0, 0, 0, 0, "label-ft-graph" },
+{ quick_input,     4, FILEHLX, 11,  FILEHLY, "", 48, 0, 0, &ret_fmedia, "input-ft-media" },
+{ quick_label,     4, FILEHLX, 10,  FILEHLY, N_("Multimedia"), 0, 0, 0, 0, "label-ft-media" },
+{ quick_input,     4, FILEHLX,  9,  FILEHLY, "", 48, 0, 0, &ret_fsrc, "input-ft-src" },
+{ quick_label,     4, FILEHLX,  8,  FILEHLY, N_("Sources"),  0, 0, 0, 0, "label-ft-src" },
+{ quick_input,     4, FILEHLX,  7,  FILEHLY, "", 48, 0, 0, &ret_farch, "input-ft-arch" },
+{ quick_label,     4, FILEHLX,  6,  FILEHLY, N_("Archives"),  0, 0, 0, 0, "label-ft-arch" },
+{ quick_input,     4, FILEHLX,  5,  FILEHLY, "", 48, 0, 0, &ret_fdoc, "input-ft-doc" },
+{ quick_label,     4, FILEHLX,  4,  FILEHLY, N_("Text/Doc Files"),  0, 0, 0, 0, "label-ft-doc" },
+{ quick_input,     4, FILEHLX,  3,  FILEHLY, "", 48, 0, 0, &ret_ftmp, "input-ft-tmp" },
+{ quick_label,     4, FILEHLX,  2,  FILEHLY, N_("Temp Files"),  0, 0, 0, 0, "label-ft-tmp" },
+{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } 
+};
+
+static QuickDialog filehl_dlg =
+{ FILEHLX, FILEHLY, -1, -1, N_(" File highlighting "), "[File highlighting]",  filehl_widgets, 0 };
+
+void file_highlighting_box (void)
+{
+    filehl_widgets [2].text = file_types.fdbase;
+    filehl_widgets [4].text = file_types.fgraph;
+    filehl_widgets [6].text = file_types.fmedia;
+    filehl_widgets [8].text = file_types.fsrc;
+    filehl_widgets [10].text = file_types.farch;
+    filehl_widgets [12].text = file_types.fdoc;
+    filehl_widgets [14].text = file_types.ftmp;
+
+    if (quick_dialog (&filehl_dlg) != B_CANCEL) {
+        g_free(file_types.ftmp);
+        file_types.ftmp = ret_ftmp;
+        g_free(file_types.fdoc);
+        file_types.fdoc = ret_fdoc;
+        g_free(file_types.farch);
+        file_types.farch = ret_farch;
+        g_free(file_types.fsrc);
+        file_types.fsrc = ret_fsrc;
+        g_free(file_types.fmedia);
+        file_types.fmedia = ret_fmedia;
+        g_free(file_types.fgraph);
+        file_types.fgraph = ret_fgraph;
+        g_free(file_types.fdbase);
+        file_types.fdbase = ret_fdbase;
+    }
+}
+//end File highlighting setup dialog
 
 #define TREE_Y 20
 #define TREE_X 60
diff -urN mc-4.7.0-pre2-orig/src/boxes.h mc-4.7.0-pre2/src/boxes.h
--- mc-4.7.0-pre2-orig/src/boxes.h	2009-06-16 00:18:21.000000000 +0300
+++ mc-4.7.0-pre2/src/boxes.h	2009-08-31 14:54:04.000000000 +0300
@@ -15,6 +15,7 @@
 			  int *case_sensitive, int *exec_first);
 void    confirm_box      (void);
 void    display_bits_box (void);
+void    file_highlighting_box (void);
 void    configure_vfs    (void);
 void    jobs_cmd         (void);
 char   *cd_dialog        (void);
diff -urN mc-4.7.0-pre2-orig/src/main.c mc-4.7.0-pre2/src/main.c
--- mc-4.7.0-pre2-orig/src/main.c	2009-08-25 21:51:56.000000000 +0300
+++ mc-4.7.0-pre2/src/main.c	2009-08-31 15:09:32.000000000 +0300
@@ -782,6 +782,7 @@
     {' ', N_("c&Onfirmation..."), NULL_HOTKEY, confirm_box},
     {' ', N_("&Display bits..."), NULL_HOTKEY, display_bits_box},
     {' ', N_("learn &Keys..."), NULL_HOTKEY, learn_keys},
+    {' ', N_("file &Highlighting..."), NULL_HOTKEY, file_highlighting_box},
 #ifdef USE_VFS
     {' ', N_("&Virtual FS..."), NULL_HOTKEY, configure_vfs},
 #endif				/* !USE_VFS */
@@ -1379,6 +1380,15 @@
     }
     done_screen ();
     vfs_add_current_stamps ();
+
+    /* Free file highlighting variables */
+    g_free(file_types.ftmp);
+    g_free(file_types.fdoc);
+    g_free(file_types.farch);
+    g_free(file_types.fsrc);
+    g_free(file_types.fmedia);
+    g_free(file_types.fgraph);
+    g_free(file_types.fdbase);
 }
 
 /* This should be called after destroy_dlg since panel widgets
@@ -1861,7 +1871,9 @@
     fputs (_
 	   (
 	    "   Help:         helpnormal, helpitalic, helpbold, helplink, helpslink\n"
-	    "   File types:   directory, executable, link, stalelink, device, special, core\n"
+	    "   File types:   directory, executable, link, stalelink, device, special,\n"
+	    "                 core, hidden, temp, doc, archive, source, media, graph,\n"
+	    "                 database\n"
 	    "\n" "Colors:\n"
 	    "   black, gray, red, brightred, green, brightgreen, brown,\n"
 	    "   yellow, blue, brightblue, magenta, brightmagenta, cyan,\n"
diff -urN mc-4.7.0-pre2-orig/src/screen.c mc-4.7.0-pre2/src/screen.c
--- mc-4.7.0-pre2-orig/src/screen.c	2009-08-23 23:17:14.000000000 +0300
+++ mc-4.7.0-pre2/src/screen.c	2009-08-31 15:27:18.000000000 +0300
@@ -104,6 +104,9 @@
 /* The hook list for the select file function */
 Hook *select_file_hook = 0;
 
+/* File Types for file highlighting */
+struct file_types_t file_types;
+
 static cb_ret_t panel_callback (Widget *, widget_msg_t msg, int parm);
 static int panel_event (Gpm_Event *event, void *);
 static void paint_frame (WPanel *panel);
@@ -453,24 +456,71 @@
 };
 
 static int
+is_file_type(char *extension, char *file_type)
+{
+    char *ft;
+    char *buf;
+    char *ext;
+
+/* skip empty file types */
+    if (!file_type || !*file_type)
+        return 0;
+
+    buf = ft = g_strdup(file_type);
+    while (buf)
+    {
+        ext =
+#if defined(SUNOS) || defined(SOLARIS) || defined(SUNOS41x) ||  defined(SUNOS5x)
+       sunos_get_token(&buf, ",");
+#else
+        strsep(&buf, ",");
+#endif
+        if (!strcasecmp(extension, ext))
+        {
+            g_free(ft);
+            return 1;
+        }
+    }
+    g_free(ft);
+    return 0;
+}
+
+static int
 file_compute_color (int attr, file_entry *fe)
 {
+    int color;
+
     switch (attr) {
     case SELECTED:
-	return (SELECTED_COLOR);
+        color = SELECTED_COLOR;
+        break;
     case MARKED:
-	return (MARKED_COLOR);
+        color = MARKED_COLOR;
+        break;
     case MARKED_SELECTED:
-	return (MARKED_SELECTED_COLOR);
+        color = MARKED_SELECTED_COLOR;
+        break;
     case STATUS:
-	return (NORMAL_COLOR);
+        color = NORMAL_COLOR;
+        break;
     case NORMAL:
     default:
-	if (!filetype_mode)
-	    return (NORMAL_COLOR);
+	color = file_entry_color(fe);
     }
+    return color;
+}
+
+int
+file_entry_color (file_entry *fe)
+{
+    char *ext = extension(fe->fname);
 
+  if (filetype_mode)
+  {
     /* if filetype_mode == true  */
+    if (fe->fname[0]=='.' && strcmp(fe->fname, ".."))
+        return (HIDDEN_COLOR);
+    else
     if (S_ISDIR (fe->st.st_mode))
 	return (DIRECTORY_COLOR);
     else if (S_ISLNK (fe->st.st_mode)) {
@@ -499,10 +549,44 @@
     else if (fe->fname && (!strcmp (fe->fname, "core")
 			   || !strcmp (extension (fe->fname), "core")))
 	return (CORE_COLOR);
-
+    else
+    { /* file-extentions groups colorizing */
+	int tmpi;
+	char *new_ext = g_malloc(strlen(ext)+3);
+	for(tmpi=0;tmpi <= strlen(ext);tmpi++)
+	    new_ext[tmpi] = tolower(ext[tmpi]);
+	    
+        if (is_file_type(new_ext, file_types.ftmp)) {
+	    g_free(new_ext);
+	    return (TEMP_COLOR);
+	} else if (is_file_type(new_ext, file_types.fdoc)) {
+	    g_free(new_ext);
+            return (DOC_COLOR);
+        } else if (is_file_type(new_ext, file_types.farch)) {
+	    g_free(new_ext);
+            return (ARCH_COLOR);
+        } else if (is_file_type(new_ext, file_types.fsrc)) {
+            g_free(new_ext);
+            return (SRC_COLOR);
+        } else if (is_file_type(new_ext, file_types.fmedia)) {
+            g_free(new_ext);
+            return (MEDIA_COLOR);
+        } else if (is_file_type(new_ext, file_types.fgraph)) {
+            g_free(new_ext);
+            return (GRAPH_COLOR);
+        } else if (is_file_type(new_ext, file_types.fdbase)) {
+            g_free(new_ext);
+            return (DBASE_COLOR);
+        }
+	g_free(new_ext);
+    }
     return (NORMAL_COLOR);
+  }
+    return (NORMAL_COLOR);
+	
 }
 
+
 /* Formats the file number file_index of panel in the buffer dest */
 static void
 format_file (char *dest, int limit, WPanel *panel, int file_index, int width, int attr, int isstatus)
diff -urN mc-4.7.0-pre2-orig/src/setup.c mc-4.7.0-pre2/src/setup.c
--- mc-4.7.0-pre2-orig/src/setup.c	2009-08-25 21:51:56.000000000 +0300
+++ mc-4.7.0-pre2/src/setup.c	2009-08-31 15:58:35.000000000 +0300
@@ -47,6 +47,8 @@
 #include "menu.h"		/* menubar_visible declaration */
 #include "cmd.h"
 #include "file.h"		/* safe_delete */
+#include "tty/color.h"
+
 
 #ifdef USE_VFS
 #include "../vfs/gc.h"
@@ -390,6 +392,16 @@
 				   ftpfs_proxy_host);
 #endif /* USE_VFS && USE_NETCODE */
 
+    /* Save file highlighting info */
+    mc_config_set_string(mc_main_config, "File Types", "temp", file_types.ftmp);
+    mc_config_set_string(mc_main_config, "File Types", "doc", file_types.fdoc);
+    mc_config_set_string(mc_main_config, "File Types", "archive", file_types.farch);
+    mc_config_set_string(mc_main_config, "File Types", "source", file_types.fsrc);
+    mc_config_set_string(mc_main_config, "File Types", "media", file_types.fmedia);
+    mc_config_set_string(mc_main_config, "File Types", "graphics", file_types.fgraph);
+    mc_config_set_string(mc_main_config, "File Types", "database", file_types.fdbase);
+
+
 #ifdef HAVE_CHARSET
     mc_config_set_string(mc_main_config, "Misc" , "display_codepage",
 		 get_codepage_id( display_codepage ));
@@ -652,6 +664,22 @@
     term_color_string = mc_config_get_string(mc_main_config, "Colors", getenv ("TERM"), "");
     color_terminal_string = mc_config_get_string(mc_main_config, "Colors", "color_terminals", "");
 
+    /* Load file highlighting info */
+    file_types.ftmp   = mc_config_get_string(mc_main_config, "File Types", "temp",
+					    "tmp,$$$,~,bak");
+    file_types.fdoc   = mc_config_get_string(mc_main_config, "File Types", "doc",
+                            		    "txt,doc,rtf,diz,ctl,me,ps,pdf,xml,xsd,xslt,dtd,html,shtml,htm,mail,msg,lsm,po,nroff,man,tex,sgml,css,text,letter");
+    file_types.farch  = mc_config_get_string(mc_main_config, "File Types", "archive",
+                            		    "gz,bz2,tar,tgz,rpm,Z,rar,zip,arj,cab,lzh,lha,zoo,arc,ark");
+    file_types.fsrc   = mc_config_get_string(mc_main_config, "File Types", "source",
+                            		    "c,h,cc,hh,cpp,hpp,asm,py,pl,pm,inc,cgi,php,phps,js,java,jav,jasm,sh,bash,diff,patch,pas,tcl,tk,awk,m4,st,mak,sl,ada,caml,ml,mli,mly,mll,mlp,sas,prg");
+    file_types.fmedia = mc_config_get_string(mc_main_config, "File Types", "media",
+                            		    "mp2,mp3,mpg,ogg,mpeg,wav,avi,asf,mov,mol,mpl,xm,mod,it,med,mid,midi,s3m,umx");
+    file_types.fgraph = mc_config_get_string(mc_main_config, "File Types", "graphics",
+                            		    "jpg,jpeg,gif,png,tif,pcx,bmp,xpm,xbm,eps,pic,rle,ico,wmf,omf,ai,cdr");
+    file_types.fdbase = mc_config_get_string(mc_main_config, "File Types", "database",
+                            		    "dbf,mdn,db,mdb,dat,fox,dbx,mdx,sql,mssql,msql,ssql,pgsql,xls,cdx,dbi");
+
     /* Load the directory history */
 /*    directory_history_load (); */
     /* Remove the temporal entries */
diff -urN mc-4.7.0-pre2-orig/src/tty/color.h mc-4.7.0-pre2/src/tty/color.h
--- mc-4.7.0-pre2-orig/src/tty/color.h	2009-08-13 00:05:16.000000000 +0300
+++ mc-4.7.0-pre2/src/tty/color.h	2009-08-31 15:57:19.000000000 +0300
@@ -57,9 +57,18 @@
 #define SPECIAL_COLOR      IF_COLOR (28, 0)
 #define CORE_COLOR         IF_COLOR (29, 0)
 
+/* colors for specific files */
+#define HIDDEN_COLOR       IF_COLOR (30, 0)
+#define TEMP_COLOR         IF_COLOR (31, 0)
+#define DOC_COLOR          IF_COLOR (32, 0)
+#define ARCH_COLOR         IF_COLOR (33, 0)
+#define SRC_COLOR          IF_COLOR (34, 0)
+#define MEDIA_COLOR        IF_COLOR (35, 0)
+#define GRAPH_COLOR        IF_COLOR (36, 0)
+#define DBASE_COLOR        IF_COLOR (37, 0)
 
 /* For the default color any unused index may be chosen. */
-#define DEFAULT_COLOR_INDEX   30
+#define DEFAULT_COLOR_INDEX   38
 #define DEFAULT_COLOR      IF_COLOR (DEFAULT_COLOR_INDEX, 0)
 
 /*
@@ -67,18 +76,31 @@
  * respectively
  * Last is defined to view color.
  */
-#define EDITOR_NORMAL_COLOR_INDEX    34
+#define EDITOR_NORMAL_COLOR_INDEX    42
 #define EDITOR_NORMAL_COLOR          IF_COLOR (EDITOR_NORMAL_COLOR_INDEX, 0)
-#define EDITOR_BOLD_COLOR            IF_COLOR (35, A_BOLD)
-#define EDITOR_MARKED_COLOR          IF_COLOR (36, A_REVERSE)
-#define EDITOR_WHITESPACE_COLOR      IF_COLOR (37, 0 /* irrelevant */)
+#define EDITOR_BOLD_COLOR            IF_COLOR (43, A_BOLD)
+#define EDITOR_MARKED_COLOR          IF_COLOR (44, A_REVERSE)
+#define EDITOR_WHITESPACE_COLOR      IF_COLOR (45, 0 /* irrelevant */)
 
 /* color of left 8 char status per line */
-#define LINE_STATE_COLOR  IF_COLOR (38, 0)
+#define LINE_STATE_COLOR  IF_COLOR (46, 0)
 
 /* Error dialog colors */
-#define ERROR_HOT_NORMAL   IF_COLOR (39, 0)
-#define ERROR_HOT_FOCUS    IF_COLOR (40, 0)
+#define ERROR_HOT_NORMAL   IF_COLOR (47, 0)
+#define ERROR_HOT_FOCUS    IF_COLOR (48, 0)
+
+/* File Types for file highlighting */
+struct file_types_t {
+    char *ftmp;
+    char *fdoc;
+    char *farch;
+    char *fsrc;
+    char *fmedia;
+    char *fgraph;
+    char *fdbase;
+};
+
+extern struct file_types_t file_types;
 
 void tty_init_colors (gboolean disable, gboolean force);
 void tty_colors_done (void);
diff -urN mc-4.7.0-pre2-orig/src/tty/color-internal.c mc-4.7.0-pre2/src/tty/color-internal.c
--- mc-4.7.0-pre2-orig/src/tty/color-internal.c	2009-08-13 00:05:16.000000000 +0300
+++ mc-4.7.0-pre2/src/tty/color-internal.c	2009-08-31 15:00:03.000000000 +0300
@@ -88,20 +88,31 @@
     { "special=",    0, 0 },	/* sockets, fifo */
     { "core=",       0, 0 },	/* core files */              /* 29 */
 
-    { 0,             0, 0 },	/* not usable (DEFAULT_COLOR_INDEX) *//* 30 */
+    /* colors for specific file types */
+
+    { "hidden=",     0, 0 }, /* hidden files *//*30*/
+    { "temp=",       0, 0 }, /* temp file type *//*31*/
+    { "doc=",        0, 0 }, /* doc file type *//*32*/
+    { "archive=",    0, 0 }, /* archive file type *//*33*/
+    { "source=",     0, 0 }, /* sources file type *//*34*/
+    { "media=",      0, 0 }, /* multimedia file type *//*35*/
+    { "graph=",      0, 0 }, /* graphics file type *//*36*/
+    { "database=",   0, 0 }, /* database file type *//*37*/
+
+    { 0,             0, 0 }, /* not usable (DEFAULT_COLOR_INDEX) *//* 38 */
     { 0,             0, 0 },	/* unused */
     { 0,             0, 0 },	/* not usable (A_REVERSE) */
     { 0,             0, 0 },	/* not usable (A_REVERSE_BOLD) */
 
-    /* editor colors start at 34 */
-    { "editnormal=",     0, 0 },	/* normal */       /* 34 */
+    /* editor colors start at 42 */
+    { "editnormal=",     0, 0 },	/* normal */       /* 42 */
     { "editbold=",       0, 0 },	/* search->found */
     { "editmarked=",     0, 0 },	/* marked/selected */
     { "editwhitespace=", 0, 0 },	/* whitespace */
     { "editlinestate=",  0, 0 },	/* line number bar*/
 
-    /* error dialog colors start at 39 */
-    { "errdhotnormal=",  0, 0 },	/* Error dialog normal/hot */ /* 38 */
+    /* error dialog colors start at 47 */
+    { "errdhotnormal=",  0, 0 },	/* Error dialog normal/hot */ /* 47 */
     { "errdhotfocus=",   0, 0 },	/* Error dialog focused/hot */
 };
 
diff -urN mc-4.7.0-pre2-orig/src/tty/color-internal.h mc-4.7.0-pre2/src/tty/color-internal.h
--- mc-4.7.0-pre2-orig/src/tty/color-internal.h	2009-08-25 21:51:56.000000000 +0300
+++ mc-4.7.0-pre2/src/tty/color-internal.h	2009-08-31 15:57:29.000000000 +0300
@@ -83,6 +83,14 @@
 	"device=brightmagenta,blue:"
 	"core=red,blue:"
 	"special=black,blue:"
+	"hidden=black,blue:"
+	"temp=gray,blue:"
+	"doc=brown,blue:"
+	"archive=brightmagenta,blue:"
+	"source=cyan,blue:"
+	"media=green,blue:"
+	"graph=brightcyan,blue:"
+	"database=brightred,blue:"
 	"editnormal=lightgray,blue:"
 	"editbold=yellow,blue:"
 	"editmarked=black,cyan:"
diff -urN mc-4.7.0-pre2-orig/src/tty/color-ncurses.h mc-4.7.0-pre2/src/tty/color-ncurses.h
--- mc-4.7.0-pre2-orig/src/tty/color-ncurses.h	2009-08-13 00:05:16.000000000 +0300
+++ mc-4.7.0-pre2/src/tty/color-ncurses.h	2009-08-31 15:01:38.000000000 +0300
@@ -10,7 +10,7 @@
 
 gboolean tty_use_colors ();
 
-#define MAX_PAIRS 64
+#define MAX_PAIRS 84
 extern int attr_pairs [MAX_PAIRS];
 
 #define MY_COLOR_PAIR(x) (COLOR_PAIR (x) | attr_pairs [x])


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]