2010-02-18 12:17:29 +01:00
|
|
|
--- lib/readline/bind.c
|
|
|
|
+++ lib/readline/bind.c 2006-11-13 16:20:23.000000000 +0000
|
2009-08-28 17:45:57 +02:00
|
|
|
@@ -751,6 +751,9 @@ rl_function_of_keyseq (keyseq, map, type
|
2006-12-15 18:03:59 +01:00
|
|
|
/* The last key bindings file read. */
|
|
|
|
static char *last_readline_init_file = (char *)NULL;
|
|
|
|
|
|
|
|
+/* Flag to read system init file */
|
|
|
|
+static int read_system_init_file = 0;
|
|
|
|
+
|
|
|
|
/* The file we're currently reading key bindings from. */
|
|
|
|
static const char *current_readline_init_file;
|
|
|
|
static int current_readline_init_include_level;
|
2009-08-28 17:45:57 +02:00
|
|
|
@@ -816,11 +819,14 @@ rl_re_read_init_file (count, ignore)
|
2006-12-15 18:03:59 +01:00
|
|
|
return r;
|
|
|
|
}
|
|
|
|
|
|
|
|
+/* Forward declarations */
|
|
|
|
+static int sv_bell_style PARAMS((const char *));
|
|
|
|
+
|
|
|
|
/* Do key bindings from a file. If FILENAME is NULL it defaults
|
|
|
|
to the first non-null filename from this list:
|
|
|
|
1. the filename used for the previous call
|
|
|
|
2. the value of the shell variable `INPUTRC'
|
|
|
|
- 3. ~/.inputrc
|
|
|
|
+ 3. /etc/inputrc and ~/.inputrc
|
|
|
|
4. /etc/inputrc
|
|
|
|
If the file existed and could be opened and read, 0 is returned,
|
|
|
|
otherwise errno is returned. */
|
2009-08-28 17:45:57 +02:00
|
|
|
@@ -832,16 +838,37 @@ rl_read_init_file (filename)
|
2006-12-15 18:03:59 +01:00
|
|
|
if (filename == 0)
|
|
|
|
filename = last_readline_init_file;
|
|
|
|
if (filename == 0)
|
|
|
|
- filename = sh_get_env_value ("INPUTRC");
|
|
|
|
+ {
|
|
|
|
+ filename = sh_get_env_value ("INPUTRC");
|
|
|
|
+ if (filename && !strncmp(SYS_INPUTRC, filename, strlen(SYS_INPUTRC)))
|
|
|
|
+ {
|
|
|
|
+ struct stat st;
|
|
|
|
+ char *default_inputrc = tilde_expand(DEFAULT_INPUTRC);
|
|
|
|
+
|
|
|
|
+ if ((stat(default_inputrc, &st) == 0))
|
|
|
|
+ {
|
|
|
|
+ filename = DEFAULT_INPUTRC;
|
|
|
|
+ read_system_init_file = 1;
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ read_system_init_file = 0;
|
|
|
|
+
|
|
|
|
+ free(default_inputrc);
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ read_system_init_file = 1;
|
|
|
|
+ }
|
|
|
|
if (filename == 0 || *filename == 0)
|
|
|
|
{
|
|
|
|
filename = DEFAULT_INPUTRC;
|
|
|
|
- /* Try to read DEFAULT_INPUTRC; fall back to SYS_INPUTRC on failure */
|
|
|
|
- if (_rl_read_init_file (filename, 0) == 0)
|
|
|
|
- return 0;
|
|
|
|
- filename = SYS_INPUTRC;
|
|
|
|
+ read_system_init_file = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
+ sv_bell_style(sh_get_env_value("DEFAULT_BELL_STYLE"));
|
|
|
|
+
|
|
|
|
+ if (read_system_init_file)
|
|
|
|
+ _rl_read_init_file (SYS_INPUTRC, 1);
|
|
|
|
+
|
|
|
|
#if defined (__MSDOS__)
|
|
|
|
if (_rl_read_init_file (filename, 0) == 0)
|
|
|
|
return 0;
|
2009-08-28 17:45:57 +02:00
|
|
|
@@ -1352,7 +1379,14 @@ rl_parse_and_bind (string)
|
2006-12-15 18:03:59 +01:00
|
|
|
rl_macro_bind (seq, &funname[1], _rl_keymap);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
- rl_bind_keyseq (seq, rl_named_function (funname));
|
|
|
|
+ {
|
|
|
|
+#if defined (PREFIX_META_HACK)
|
|
|
|
+ if (_rl_stricmp (funname, "prefix-meta") == 0)
|
|
|
|
+ rl_generic_bind (ISKMAP, seq, (char *)emacs_meta_keymap, _rl_keymap);
|
|
|
|
+ else
|
|
|
|
+#endif
|
|
|
|
+ rl_bind_keyseq (seq, rl_named_function (funname));
|
|
|
|
+ }
|
|
|
|
|
2009-08-28 17:45:57 +02:00
|
|
|
xfree (seq);
|
2006-12-15 18:03:59 +01:00
|
|
|
return 0;
|
2009-08-28 17:45:57 +02:00
|
|
|
@@ -1490,7 +1524,6 @@ typedef int _rl_sv_func_t PARAMS((const
|
2006-12-15 18:03:59 +01:00
|
|
|
#define V_INT 2
|
|
|
|
|
|
|
|
/* Forward declarations */
|
|
|
|
-static int sv_bell_style PARAMS((const char *));
|
|
|
|
static int sv_combegin PARAMS((const char *));
|
2009-08-28 17:45:57 +02:00
|
|
|
static int sv_dispprefix PARAMS((const char *));
|
2006-12-15 18:03:59 +01:00
|
|
|
static int sv_compquery PARAMS((const char *));
|
2010-02-18 12:17:29 +01:00
|
|
|
--- lib/readline/rlconf.h
|
|
|
|
+++ lib/readline/rlconf.h 2006-11-13 16:21:26.000000000 +0000
|
2009-08-28 17:45:57 +02:00
|
|
|
@@ -33,7 +33,7 @@
|
2006-12-15 18:03:59 +01:00
|
|
|
#define HANDLE_SIGNALS
|
|
|
|
|
|
|
|
/* Ugly but working hack for binding prefix meta. */
|
|
|
|
-#define PREFIX_META_HACK
|
|
|
|
+#undef PREFIX_META_HACK
|
|
|
|
|
|
|
|
/* The next-to-last-ditch effort file name for a user-specific init file. */
|
|
|
|
#define DEFAULT_INPUTRC "~/.inputrc"
|
2010-02-18 12:17:29 +01:00
|
|
|
--- lib/readline/doc/rluser.texi
|
|
|
|
+++ lib/readline/doc/rluser.texi 2006-11-13 16:23:56.000000000 +0000
|
2009-08-28 17:45:57 +02:00
|
|
|
@@ -347,7 +347,8 @@ file is taken from the value of the envi
|
2006-12-15 18:03:59 +01:00
|
|
|
@end ifclear
|
|
|
|
that variable is unset, the default is @file{~/.inputrc}. If that
|
|
|
|
file does not exist or cannot be read, the ultimate default is
|
|
|
|
-@file{/etc/inputrc}.
|
|
|
|
+@file{/etc/inputrc}. If both @file{~/.inputrc} and @file{/etc/inputrc}
|
|
|
|
+exist Readline will read first @file{/etc/inputrc} and then @file{~/.inputrc}.
|
|
|
|
|
|
|
|
When a program which uses the Readline library starts up, the
|
|
|
|
init file is read, and the key bindings are set.
|