diff -aur weechat/src/plugins/irc/irc-bar-item.c weechat-devel/src/plugins/irc/irc-bar-item.c
--- weechat/src/plugins/irc/irc-bar-item.c	2010-01-28 22:02:12.394401382 +0900
+++ weechat-devel/src/plugins/irc/irc-bar-item.c	2010-01-29 00:12:26.141406132 +0900
@@ -173,7 +173,7 @@
                           struct t_gui_window *window)
 {
     char buf[512], buf_name[256], modes[128];
-    const char *name;
+    const char *name, *tmpmodes, *space, *key;
     int part_from_channel, display_server;
     struct t_gui_buffer *buffer;
     struct t_irc_server *server;
@@ -230,12 +230,31 @@
                         && channel->modes && channel->modes[0]
                         && (strcmp (channel->modes, "+") != 0))
                     {
+                        tmpmodes = NULL;
+
+                        if (weechat_config_boolean (irc_config_look_display_channel_modes_hide_key))
+                        {
+                            if (space = strchr(channel->modes, ' '))
+                            {
+                                key = strchr(channel->modes, 'k');
+                                if (key && key < space)
+                                {
+                                    tmpmodes = strndup(channel->modes, space - channel->modes);
+                                }
+                            }
+                        }
+                                
                         snprintf (modes, sizeof (modes),
                                   "%s(%s%s%s)",
                                   IRC_COLOR_BAR_DELIM,
                                   IRC_COLOR_ITEM_CHANNEL_MODES,
-                                  channel->modes,
+                                  tmpmodes != NULL ? tmpmodes : channel->modes,
                                   IRC_COLOR_BAR_DELIM);
+
+                        if (tmpmodes)
+                        {
+                            free(tmpmodes);
+                        }
                     }
                 }
             }
diff -aur weechat/src/plugins/irc/irc-config.c weechat-devel/src/plugins/irc/irc-config.c
--- weechat/src/plugins/irc/irc-config.c	2010-01-28 22:02:12.397402499 +0900
+++ weechat-devel/src/plugins/irc/irc-config.c	2010-01-28 23:49:42.577402640 +0900
@@ -56,6 +56,7 @@
 struct t_config_option *irc_config_look_nick_completion_smart;
 struct t_config_option *irc_config_look_display_away;
 struct t_config_option *irc_config_look_display_channel_modes;
+struct t_config_option *irc_config_look_display_channel_modes_hide_key;
 struct t_config_option *irc_config_look_display_ctcp_blocked;
 struct t_config_option *irc_config_look_display_ctcp_reply;
 struct t_config_option *irc_config_look_display_ctcp_unknown;
@@ -232,6 +233,24 @@
 }
 
 /*
+ * irc_config_change_look_display_channel_modes_hide_key: called when the 
+ *                                                        "display channel modes
+ *                                                        hide key" option is
+ *                                                        changed
+ */
+
+void
+irc_config_change_look_display_channel_modes_hide_key (void *data,
+                                                       struct t_config_option *option)
+{
+    /* make C compiler happy */
+    (void) data;
+    (void) option;
+    
+    weechat_bar_item_update ("buffer_name");
+}
+
+/*
  * irc_config_change_look_display_nick_modes: called when the "display
  *                                            nick modes" option is changed
  */
@@ -1365,6 +1384,12 @@
         N_("display channel modes in \"buffer_name\" bar item"),
         NULL, 0, 0, "on", NULL, 0, NULL, NULL,
         &irc_config_change_look_display_channel_modes, NULL, NULL, NULL);
+    irc_config_look_display_channel_modes_hide_key = weechat_config_new_option (
+        irc_config_file, ptr_section,
+        "display_channel_modes_hide_key", "boolean",
+        N_("hide channel key if modes are displayed in \"buffer_name\" bar item"),
+        NULL, 0, 0, "off", NULL, 0, NULL, NULL,
+        &irc_config_change_look_display_channel_modes_hide_key, NULL, NULL, NULL);
     irc_config_look_display_ctcp_blocked = weechat_config_new_option (
         irc_config_file, ptr_section,
         "display_ctcp_blocked", "boolean",
Only in weechat-devel/src/plugins/irc: irc-config.c~
diff -aur weechat/src/plugins/irc/irc-config.h weechat-devel/src/plugins/irc/irc-config.h
--- weechat/src/plugins/irc/irc-config.h	2010-01-28 22:02:12.398402150 +0900
+++ weechat-devel/src/plugins/irc/irc-config.h	2010-01-28 23:46:24.940402640 +0900
@@ -78,6 +78,7 @@
 extern struct t_config_option *irc_config_look_nick_completion_smart;
 extern struct t_config_option *irc_config_look_display_away;
 extern struct t_config_option *irc_config_look_display_channel_modes;
+extern struct t_config_option *irc_config_look_display_channel_modes_hide_key;
 extern struct t_config_option *irc_config_look_display_ctcp_blocked;
 extern struct t_config_option *irc_config_look_display_ctcp_reply;
 extern struct t_config_option *irc_config_look_display_ctcp_unknown;
