diff -Naur mc-4.6.1/edit/edit.c mc-4.6.1_ho/edit/edit.c
--- mc-4.6.1/edit/edit.c	2005-05-27 17:19:18.000000000 +0300
+++ mc-4.6.1_ho/edit/edit.c	2006-10-27 16:13:47.000000000 +0300
@@ -2384,6 +2384,14 @@
 	column_highlighting = 0;
 	edit_mark_cmd (edit, 1);
 	break;
+    
+    case CK_Highlight_Occurences:
+	exec_highlight_occurences(edit);
+	break;
+
+    case CK_Unhighlight_Occurences:
+	exec_unhighlight_occurences(edit);
+	break;
 
     case CK_Toggle_Bookmark:
 	book_mark_clear (edit, edit->curs_line, BOOK_MARK_FOUND_COLOR);
diff -Naur mc-4.6.1/edit/editcmddef.h mc-4.6.1_ho/edit/editcmddef.h
--- mc-4.6.1/edit/editcmddef.h	2004-08-15 22:34:37.000000000 +0300
+++ mc-4.6.1_ho/edit/editcmddef.h	2006-10-27 16:13:47.000000000 +0300
@@ -35,6 +35,8 @@
 #define CK_Delete_Word_Right	24
 #define CK_Paragraph_Up		25
 #define CK_Paragraph_Down	26
+#define CK_Highlight_Occurences	27
+#define CK_Unhighlight_Occurences	28
 
 
 /* file commands */
diff -Naur mc-4.6.1/edit/edit.h mc-4.6.1_ho/edit/edit.h
--- mc-4.6.1/edit/edit.h	2005-05-27 17:19:18.000000000 +0300
+++ mc-4.6.1_ho/edit/edit.h	2006-10-27 16:13:47.000000000 +0300
@@ -312,6 +312,7 @@
 extern int option_max_undo;
 extern int option_syntax_highlighting;
 extern int editor_option_check_nl_at_eof;
+extern int option_highlight_occurences;
 
 extern int option_edit_right_extreme;
 extern int option_edit_left_extreme;
diff -Naur mc-4.6.1/edit/editmenu.c mc-4.6.1_ho/edit/editmenu.c
--- mc-4.6.1/edit/editmenu.c	2005-05-27 17:19:18.000000000 +0300
+++ mc-4.6.1_ho/edit/editmenu.c	2006-10-27 16:13:47.000000000 +0300
@@ -238,6 +238,18 @@
 }
 
 static void
+menu_highlight_cmd(void)
+{
+    menu_cmd (CK_Highlight_Occurences);
+}
+
+static void
+menu_unhighlight_cmd(void)
+{
+    menu_cmd (CK_Unhighlight_Occurences);
+}
+
+static void
 menu_refresh_cmd (void)
 {
     menu_cmd (CK_Refresh);
@@ -318,6 +330,8 @@
 {
     {' ', N_("&Toggle Mark       F3"), 'T', menu_mark_cmd},
     {' ', N_("&Mark Columns    S-F3"), 'T', menu_markcol_cmd},
+    {' ', N_("&Highlight occurences"), 'H', menu_highlight_cmd},
+    {' ', N_("&Unhighlight occurences"), 'H', menu_unhighlight_cmd},
     {' ', "", ' ', 0},
     {' ', N_("Toggle &ins/overw Ins"), 'I', menu_ins_cmd},
     {' ', "", ' ', 0},
@@ -328,7 +342,7 @@
     {' ', N_("&Undo             C-u"), 'U', menu_undo_cmd},
     {' ', "", ' ', 0},
     {' ', N_("&Beginning     C-PgUp"), 'B', menu_beginning_cmd},
-    {' ', N_("&End           C-PgDn"), 'E', menu_end_cmd}
+    {' ', N_("&End           C-PgDn"), 'E', menu_end_cmd},
 };
 
 #define EditMenuEmacs EditMenu
diff -Naur mc-4.6.1/edit/syntax.c mc-4.6.1_ho/edit/syntax.c
--- mc-4.6.1/edit/syntax.c	2005-05-27 17:19:18.000000000 +0300
+++ mc-4.6.1_ho/edit/syntax.c	2006-10-27 16:13:47.000000000 +0300
@@ -21,6 +21,7 @@
 */
 
 #include <config.h>
+#include "../src/myslang.h"
 #include "edit.h"
 #include "edit-widget.h"
 #include "../src/color.h"	/* use_colors */
@@ -442,11 +443,85 @@
     *color = k->color;
 }
 
+/*
+    Section related to highlighting of occurences
+ */
+
+#define HIGHLIGHT_DLG_WIDTH 58
+#define HIGHLIGHT_DLG_HEIGHT 8
+#define B_REPLACE_ALL (B_USER+1)
+#define B_REPLACE_ONE (B_USER+2)
+#define B_SKIP_REPLACE (B_USER+3)
+
+int option_highlight_occurences = 0;
+
+#define HW_LEN	512
+char highlight_word[HW_LEN];
+int  highlight_word_length = 0;
+
+int need_highlighing(WEdit* edit, long byte_index)
+{
+    char token[highlight_word_length+1];
+    token[highlight_word_length] = 0;
+    int i = 0;
+    for ( ; i < highlight_word_length; i++)
+	token[i] = edit_get_byte(edit, byte_index++);
+    
+    int ret = !strncmp(token, highlight_word, highlight_word_length);
+    
+    if ( ret )
+	ret = highlight_word_length;
+    
+    return ret;
+}
+
+void exec_highlight_occurences(WEdit *edit)
+{
+    char *text = input_expand_dialog (_("Highlight occurences"),
+			     _(" Text:"), "");
+
+    if ( text )
+    {
+	option_highlight_occurences = 1;
+	highlight_word_length = strlen(text);
+	strcpy(highlight_word, text); // TODO: Check for Unicode
+	g_free(text);
+	edit_refresh_cmd(edit);
+    }
+}
+
+void exec_unhighlight_occurences(WEdit *edit)
+{
+    option_highlight_occurences = 0;
+    highlight_word_length = 0;
+    memset(highlight_word, 0, HW_LEN);
+    edit_refresh_cmd(edit);
+}
+
+static int hword_symbols_left = 0;
+
 void edit_get_syntax_color (WEdit * edit, long byte_index, int *color)
 {
-    if (edit->rules && byte_index < edit->last_byte && 
-                         option_syntax_highlighting && use_colors) {
-	translate_rule_to_color (edit, edit_get_rule (edit, byte_index), color);
+    if ( option_highlight_occurences && use_colors )
+    {
+	if ( hword_symbols_left )
+	{
+	    --hword_symbols_left;
+	    *color = COLOR_HOT_FOCUS;
+	    return;
+	}
+	else if (( hword_symbols_left = need_highlighing(edit, byte_index) ))
+	{
+	    --hword_symbols_left;
+	    *color = COLOR_HOT_FOCUS;
+	    return;
+	}
+    }
+
+    if (edit->rules && byte_index < edit->last_byte && use_colors &&
+	option_syntax_highlighting )
+    {
+	    translate_rule_to_color (edit, edit_get_rule (edit, byte_index), color);
     } else {
 	*color = use_colors ? EDITOR_NORMAL_COLOR_INDEX : 0;
     }
