#define YYERROR_VERBOSE 1
-#ifdef REALLY_HAVE_LIBREADLINE
+#ifdef HAVE_LIBREADLINE
// Original readline settings
static int orig_completion_append_character;
-#if (GINAC_RL_VERSION_MAJOR < 4) || (GINAC_RL_VERSION_MAJOR == 4 && GINAC_RL_VERSION_MINOR < 2)
-static char *orig_basic_word_break_characters;
-#else
static const char *orig_basic_word_break_characters;
-#endif
-#if (GINAC_RL_VERSION_MAJOR >= 5)
+#if (RL_VERSION_MAJOR >= 5)
#define GINAC_RL_COMPLETER_CAST(a) const_cast<char *>((a))
#else
#define GINAC_RL_COMPLETER_CAST(a) (a)
#endif
-#endif // REALLY_HAVE_LIBREADLINE
+#endif // HAVE_LIBREADLINE
// Expression stack for %, %% and %%%
static void push(const ex &e);
return NULL;
}
-#ifdef REALLY_HAVE_LIBREADLINE
+#ifdef HAVE_LIBREADLINE
static char **fcn_completion(const char *text, int start, int end)
{
if (rl_line_buffer[0] == '!') {
rl_completion_append_character = orig_completion_append_character;
rl_basic_word_break_characters = orig_basic_word_break_characters;
rl_completer_word_break_characters = GINAC_RL_COMPLETER_CAST(rl_basic_word_break_characters);
-#if (GINAC_RL_VERSION_MAJOR < 4) || (GINAC_RL_VERSION_MAJOR == 4 && GINAC_RL_VERSION_MINOR < 2)
- return completion_matches(const_cast<char *>(text), (CPFunction *)filename_completion_function);
-#else
return rl_completion_matches(text, rl_filename_completion_function);
-#endif
} else {
// Otherwise, complete function names
rl_completion_append_character = '(';
rl_basic_word_break_characters = " \t\n\"#$%&'()*+,-./:;<=>?@[\\]^`{|}~";
rl_completer_word_break_characters = GINAC_RL_COMPLETER_CAST(rl_basic_word_break_characters);
-#if (GINAC_RL_VERSION_MAJOR < 4) || (GINAC_RL_VERSION_MAJOR == 4 && GINAC_RL_VERSION_MINOR < 2)
- return completion_matches(const_cast<char *>(text), (CPFunction *)fcn_generator);
-#else
return rl_completion_matches(text, fcn_generator);
-#endif
}
}
-#endif // REALLY_HAVE_LIBREADLINE
+#endif // HAVE_LIBREADLINE
+
+static void ginsh_readline_init(char* name)
+{
+#ifdef HAVE_LIBREADLINE
+ // Init readline completer
+ rl_readline_name = name;
+ rl_attempted_completion_function = fcn_completion;
+ orig_completion_append_character = rl_completion_append_character;
+ orig_basic_word_break_characters = rl_basic_word_break_characters;
+#endif // HAVE_LIBREADLINE
+}
void greeting(void)
{
insert_help("print_latex", "print_latex(expression) - prints a LaTeX representation of the given expression");
insert_help("print_csrc", "print_csrc(expression) - prints a C source code representation of the given expression");
-#ifdef REALLY_HAVE_LIBREADLINE
- // Init readline completer
- rl_readline_name = argv[0];
-#if (GINAC_RL_VERSION_MAJOR < 4) || (GINAC_RL_VERSION_MAJOR == 4 && GINAC_RL_VERSION_MINOR < 2)
- rl_attempted_completion_function = (CPPFunction *)fcn_completion;
-#else
- rl_attempted_completion_function = fcn_completion;
-#endif
- orig_completion_append_character = rl_completion_append_character;
- orig_basic_word_break_characters = rl_basic_word_break_characters;
-#endif
+ ginsh_readline_init(argv[0]);
// Init input file list, open first file
num_files = argc - 1;