]> www.ginac.de Git - ginac.git/blobdiff - ginsh/ginsh_parser.yy
utils.h: use <stdint.h> (if available) instead of reinventing it.
[ginac.git] / ginsh / ginsh_parser.yy
index 0594d9488b585d4ecb720a23d3457f09d8ef1bdf..b059172ef5166e3b94a6ad1b3690d3e9c9c1088d 100644 (file)
 
 #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);
@@ -864,7 +860,7 @@ static char *fcn_generator(const char *text, int state)
        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] == '!') {
@@ -872,24 +868,27 @@ static char **fcn_completion(const char *text, int start, int end)
                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)
 {
@@ -934,17 +933,7 @@ int main(int argc, char **argv)
        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;