From 4fbdbd4456411fbc55f3449157897eba00a8df09 Mon Sep 17 00:00:00 2001 From: Andrew Borodin Date: Mon, 21 Feb 2011 13:49:45 +0300 Subject: [PATCH] Added --nokeymap command line option to disable load keybindings from file. Signed-off-by: Andrew Borodin Signed-off-by: Slava Zanko --- doc/man/mc.1.in | 3 +++ doc/man/ru/mc.1.in | 8 ++++++-- src/args.c | 12 +++++++++++- src/args.h | 1 + src/main.c | 2 +- src/setup.c | 8 ++++---- src/setup.h | 2 +- 7 files changed, 27 insertions(+), 9 deletions(-) diff --git a/doc/man/mc.1.in b/doc/man/mc.1.in index 7140edb1d..e4f1bd6dd 100644 --- a/doc/man/mc.1.in +++ b/doc/man/mc.1.in @@ -62,6 +62,9 @@ database. Only useful on HP terminals when the function keys don't work. .I \-K file Specify a name of keymap file in the command line. .TP +.I \-\-nokeymap +Don't load key bindings from any file, use default hardcoded keys. +.TP .I \-l file, \-\-ftplog=file Save the ftpfs dialog with the server in file. .TP diff --git a/doc/man/ru/mc.1.in b/doc/man/ru/mc.1.in index 6b38da033..ab246c5e0 100644 --- a/doc/man/ru/mc.1.in +++ b/doc/man/ru/mc.1.in @@ -73,8 +73,12 @@ termcap/terminfo. Этот ключ используется только на функциональные клавиши не работают. .TP .I \-K файл -Задаёт файл клавиатурных команд для переопределения привязки хоткеев -к действиям. +Задаёт файл клавиатурных команд для переопределения привязки клавиатурных +комбинаций к действиям. +.TP +.I \-\-nokeymap +Не загружать клавиатурные комбинации из файла, использовать определённые +в исходном коде. .TP .I \-l файл Сохранить диалог с ftp\-сервером, а также отладочную информацию smbfs в diff --git a/src/args.c b/src/args.c index 3f47e8e8c..9e4c81260 100644 --- a/src/args.c +++ b/src/args.c @@ -69,10 +69,13 @@ gboolean mc_args__disable_colors = FALSE; /* Force colors, only used by Slang */ gboolean mc_args__force_colors = FALSE; +/* Don't load keymap form file and use default one */ +gboolean mc_args__nokeymap = FALSE; + /* Line to start the editor on */ int mc_args__edit_start_line = 0; -/* Show in specified skin */ +/* Use the specified skin */ char *mc_args__skin = NULL; char *mc_args__last_wd_file = NULL; @@ -240,6 +243,13 @@ static const GOptionEntry argument_terminal_table[] = { "" }, + { + "nokeymap", '\0', ARGS_TERM_OPTIONS, G_OPTION_ARG_NONE, + &mc_args__nokeymap, + N_("Don't load definitions of key bindings from file, use defaults"), + NULL + }, + { NULL, '\0', 0, 0, NULL, NULL, NULL /* Complete struct initialization */ } diff --git a/src/args.h b/src/args.h index 66d458f48..4e892b3e9 100644 --- a/src/args.h +++ b/src/args.h @@ -17,6 +17,7 @@ extern gboolean mc_args__slow_terminal; extern gboolean mc_args__ugly_line_drawing; extern gboolean mc_args__disable_colors; extern gboolean mc_args__force_colors; +extern gboolean mc_args__nokeymap; extern char *mc_args__skin; extern gboolean mc_args__version; extern int mc_args__edit_start_line; diff --git a/src/main.c b/src/main.c index ba10e1780..caf2af4b4 100644 --- a/src/main.c +++ b/src/main.c @@ -485,7 +485,7 @@ main (int argc, char *argv[]) /* Removing this from the X code let's us type C-c */ load_key_defs (); - load_keymap_defs (); + load_keymap_defs (!mc_args__nokeymap); macros_list = g_array_new (TRUE, FALSE, sizeof (macros_t)); diff --git a/src/setup.c b/src/setup.c index d396a458b..7cb9250ca 100644 --- a/src/setup.c +++ b/src/setup.c @@ -689,7 +689,6 @@ load_setup_get_keymap_profile_config (void) g_free (fname); /* 4) main config; [Midnight Commander] -> keymap */ - fname2 = mc_config_get_string (mc_main_config, CONFIG_APP_SECTION, "keymap", GLOBAL_KEYMAP_FILE); fname = load_setup_get_full_config_name (NULL, fname2); @@ -1155,15 +1154,16 @@ load_anon_passwd (void) /* --------------------------------------------------------------------------------------------- */ void -load_keymap_defs (void) +load_keymap_defs (gboolean load_from_file) { /* * Load keymap from GLOBAL_KEYMAP_FILE before ${XDG_DATA_HOME}/mc/keymap, so that the user * definitions override global settings. */ - mc_config_t *mc_global_keymap; + mc_config_t *mc_global_keymap = NULL; - mc_global_keymap = load_setup_get_keymap_profile_config (); + if (load_from_file) + mc_global_keymap = load_setup_get_keymap_profile_config (); if (mc_global_keymap != NULL) { diff --git a/src/setup.h b/src/setup.h index 960bdf915..eace2f7d6 100644 --- a/src/setup.h +++ b/src/setup.h @@ -109,7 +109,7 @@ void load_key_defs (void); char *load_anon_passwd (void); #endif /* ENABLE_VFS_FTP */ -void load_keymap_defs (void); +void load_keymap_defs (gboolean load_from_file); void free_keymap_defs (void); void panel_load_setup (WPanel * panel, const char *section);