// 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
// Expression stack for ", "" and """
static void push(const ex &e);
return e[0].ldegree(e[1]);
}
+static ex f_match(const exprseq &e)
+{
+ lst repl_lst;
+ if (e[0].match(e[1], repl_lst))
+ return repl_lst;
+ else
+ return fail();
+}
+
static ex f_normal2(const exprseq &e)
{
CHECK_ARG(1, numeric, normal);
{"lcoeff", fcn_desc(f_lcoeff, 2)},
{"ldegree", fcn_desc(f_ldegree, 2)},
{"lsolve", fcn_desc(f_lsolve, 2)},
+ {"match", fcn_desc(f_match, 2)},
{"nops", fcn_desc(f_nops, 1)},
{"normal", fcn_desc(f_normal1, 1)},
{"normal", fcn_desc(f_normal2, 2)},
rl_completion_append_character = orig_completion_append_character;
rl_basic_word_break_characters = orig_basic_word_break_characters;
rl_completer_word_break_characters = rl_basic_word_break_characters;
+#if (GINAC_RL_VERSION_MAJOR < 4) || (GINAC_RL_VERSION_MAJOR == 4 && GINAC_RL_VERSION_MINOR < 2)
return completion_matches(text, (CPFunction *)filename_completion_function);
+#else
+ return rl_completion_matches(text, (CPFunction *)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 = rl_basic_word_break_characters;
+#if (GINAC_RL_VERSION_MAJOR < 4) || (GINAC_RL_VERSION_MAJOR == 4 && GINAC_RL_VERSION_MINOR < 2)
return completion_matches(text, (CPFunction *)fcn_generator);
+#else
+ return rl_completion_matches(text, (CPFunction *)fcn_generator);
+#endif
}
}