26#if defined (HAVE_CONFIG_H)
49#if defined (USE_READLINE)
69#if defined (USE_READLINE)
86 ~gnu_readline (
void) =
default;
88 void do_set_name (
const std::string& n);
90 std::string do_readline (
const std::string& prompt,
bool& eof);
92 void do_set_input_stream (FILE *
f);
94 FILE * do_get_input_stream (
void);
96 void do_set_output_stream (FILE *
f);
98 FILE * do_get_output_stream (
void);
100 void do_redisplay (
void);
102 int do_terminal_rows (
void);
104 int do_terminal_cols (
void);
106 void do_clear_screen (
bool skip_redisplay);
108 void do_resize_terminal (
void);
110 void do_set_screen_size (
int ht,
int wd);
112 std::string newline_chars (
void);
114 void do_restore_terminal_state (
void);
116 void do_blink_matching_paren (
bool flag);
118 bool do_erase_empty_line (
bool flag);
120 void do_set_basic_word_break_characters (
const std::string& s);
122 void do_set_completer_word_break_characters (
const std::string& s);
124 void do_set_basic_quote_characters (
const std::string& s);
126 void do_set_filename_quote_characters (
const std::string& s);
128 void do_set_completer_quote_characters (
const std::string& s);
130 void do_set_completion_append_character (
char c);
132 void do_set_completion_function (completion_fcn
f);
134 void do_set_quoting_function (quoting_fcn
f);
136 void do_set_dequoting_function (dequoting_fcn
f);
138 void do_set_char_is_quoted_function (char_is_quoted_fcn
f);
140 void do_set_user_accept_line_function (user_accept_line_fcn
f);
142 completion_fcn do_get_completion_function (
void)
const;
144 quoting_fcn do_get_quoting_function (
void)
const;
146 dequoting_fcn do_get_dequoting_function (
void)
const;
148 char_is_quoted_fcn do_get_char_is_quoted_function (
void)
const;
150 user_accept_line_fcn do_get_user_accept_line_function (
void)
const;
153 do_generate_filename_completions (
const std::string& text);
155 std::string do_get_line_buffer (
void)
const;
157 std::string do_get_current_line (
void)
const;
159 char do_get_prev_char (
int)
const;
161 void do_replace_line (
const std::string& text,
bool clear_undo);
163 void do_kill_full_line (
void);
165 void do_insert_text (
const std::string& text);
167 void do_newline (
void);
169 void do_accept_line (
void);
173 void do_clear_undo_list (
void);
175 void set_startup_hook (startup_hook_fcn
f);
177 void restore_startup_hook (
void);
179 void set_pre_input_hook (pre_input_hook_fcn
f);
181 void restore_pre_input_hook (
void);
183 void set_event_hook (event_hook_fcn
f);
185 void restore_event_hook (
void);
187 void do_restore_event_hook (
void);
189 void do_read_init_file (
const std::string& file);
191 void do_re_read_init_file (
void);
193 bool do_filename_completion_desired (
bool);
195 bool do_filename_quoting_desired (
bool);
197 bool do_prefer_env_winsize (
bool);
199 void do_interrupt (
bool);
201 void do_handle_interrupt_signal (
void);
203 static int operate_and_get_next (
int,
int);
205 static int history_search_backward (
int,
int);
207 static int history_search_forward (
int,
int);
211 static char * command_generator (
const char *text,
int state);
213 static char * command_quoter (
char *text,
int match_type,
214 char *quote_pointer);
216 static char * command_dequoter (
char *text,
int match_type);
218 static int command_char_is_quoted (
char *text,
int index);
220 static int command_accept_line (
int count,
int key);
222 static char ** command_completer (
const char *text,
int start,
int end);
226 startup_hook_fcn m_previous_startup_hook;
228 pre_input_hook_fcn m_previous_pre_input_hook;
230 event_hook_fcn m_previous_event_hook;
232 completion_fcn m_completion_function;
234 quoting_fcn m_quoting_function;
236 dequoting_fcn m_dequoting_function;
238 char_is_quoted_fcn m_char_is_quoted_function;
240 user_accept_line_fcn user_accept_line_function;
242 static std::string s_completer_quote_characters;
245 std::string gnu_readline::s_completer_quote_characters =
"";
247 gnu_readline::gnu_readline ()
248 : command_editor (), m_previous_startup_hook (nullptr),
249 m_previous_pre_input_hook (nullptr),
250 m_previous_event_hook (nullptr), m_completion_function (nullptr),
251 m_quoting_function (nullptr), m_dequoting_function (nullptr),
252 m_char_is_quoted_function (nullptr), user_accept_line_function (nullptr)
263 do_blink_matching_paren (
true);
268 gnu_readline::operate_and_get_next,
273 gnu_readline::do_set_name (
const std::string& nm)
279 gnu_readline::do_readline (
const std::string& prompt,
bool& eof)
285 const char *p = prompt.c_str ();
302 gnu_readline::do_set_input_stream (FILE *
f)
308 gnu_readline::do_get_input_stream (
void)
314 gnu_readline::do_set_output_stream (FILE *
f)
320 gnu_readline::do_get_output_stream (
void)
326 gnu_readline::do_redisplay (
void)
338 gnu_readline::do_terminal_rows (
void)
342 return sh > 0 ? sh : 24;
346 gnu_readline::do_terminal_cols (
void)
350 return sw > 0 ? sw : 80;
354 gnu_readline::do_clear_screen (
bool skip_redisplay)
360 gnu_readline::do_resize_terminal (
void)
366 gnu_readline::do_set_screen_size (
int ht,
int wd)
372 gnu_readline::newline_chars (
void)
378 gnu_readline::do_restore_terminal_state (
void)
384 gnu_readline::do_blink_matching_paren (
bool flag)
390 gnu_readline::do_erase_empty_line (
bool flag)
396 gnu_readline::do_set_basic_word_break_characters (
const std::string& s)
402 gnu_readline::do_set_completer_word_break_characters (
const std::string& s)
412 gnu_readline::do_set_basic_quote_characters (
const std::string& s)
418 gnu_readline::do_set_filename_quote_characters (
const std::string& s)
424 gnu_readline::do_set_completer_quote_characters (
const std::string& s)
426 s_completer_quote_characters = s;
430 gnu_readline::do_set_completion_append_character (
char c)
436 gnu_readline::do_set_completion_function (completion_fcn
f)
438 m_completion_function =
f;
441 = (
f ? gnu_readline::command_completer :
nullptr);
447 gnu_readline::do_set_quoting_function (quoting_fcn
f)
449 m_quoting_function =
f;
452 = (
f ? gnu_readline::command_quoter :
nullptr);
458 gnu_readline::do_set_dequoting_function (dequoting_fcn
f)
460 m_dequoting_function =
f;
463 = (
f ? gnu_readline::command_dequoter :
nullptr);
469 gnu_readline::do_set_char_is_quoted_function (char_is_quoted_fcn
f)
471 m_char_is_quoted_function =
f;
474 = (
f ? gnu_readline::command_char_is_quoted :
nullptr);
480 gnu_readline::do_set_user_accept_line_function (user_accept_line_fcn
f)
482 user_accept_line_function =
f;
492 gnu_readline::completion_fcn
493 gnu_readline::do_get_completion_function (
void)
const
495 return m_completion_function;
498 gnu_readline::quoting_fcn
499 gnu_readline::do_get_quoting_function (
void)
const
501 return m_quoting_function;
504 gnu_readline::dequoting_fcn
505 gnu_readline::do_get_dequoting_function (
void)
const
507 return m_dequoting_function;
510 gnu_readline::char_is_quoted_fcn
511 gnu_readline::do_get_char_is_quoted_function (
void)
const
513 return m_char_is_quoted_function;
516 gnu_readline::user_accept_line_fcn
517 gnu_readline::do_get_user_accept_line_function (
void)
const
519 return user_accept_line_function;
526 looks_like_filename (
const char *line,
char delim)
530 const char *s = strrchr (line, delim);
537 if (
f && (s[1] ==
'~' ||
f != s))
541 std::string candidate_filename = s+1;
543 candidate_filename = candidate_filename.substr (0,
f - s);
547 if (candidate_filename[0] ==
'~')
551 sys::file_stat fs (candidate_filename);
553 retval = fs.is_dir ();
570 std::string line = get_line_buffer ();
573 const char *l = line.c_str ();
575 if (looks_like_filename (l,
' ') || looks_like_filename (l,
'\'')
576 || looks_like_filename (l,
'"'))
579 (s_completer_quote_characters.c_str ());
592 gnu_readline::do_generate_filename_completions (
const std::string& text)
616 retval[count++] = fn;
630 gnu_readline::do_get_line_buffer (
void)
const
636 gnu_readline::do_get_current_line (
void)
const
648 gnu_readline::do_get_prev_char (
int offset)
const
653 return p > offset ? buf[p - offset - 1] :
'\0';
657 gnu_readline::do_replace_line (
const std::string& text,
bool clear_undo)
663 gnu_readline::do_kill_full_line (
void)
669 gnu_readline::do_insert_text (
const std::string& text)
675 gnu_readline::do_newline (
void)
681 gnu_readline::do_accept_line (
void)
683 command_accept_line (1,
'\n');
687 gnu_readline::do_undo (
void)
693 gnu_readline::do_clear_undo_list ()
699 gnu_readline::set_startup_hook (startup_hook_fcn
f)
703 if (
f != m_previous_startup_hook)
708 gnu_readline::restore_startup_hook (
void)
714 gnu_readline::set_pre_input_hook (pre_input_hook_fcn
f)
718 if (
f != m_previous_pre_input_hook)
723 gnu_readline::restore_pre_input_hook (
void)
729 gnu_readline::set_event_hook (event_hook_fcn
f)
737 gnu_readline::restore_event_hook (
void)
743 gnu_readline::do_read_init_file (
const std::string& file)
749 gnu_readline::do_re_read_init_file (
void)
755 gnu_readline::do_filename_completion_desired (
bool arg)
761 gnu_readline::do_filename_quoting_desired (
bool arg)
767 gnu_readline::do_prefer_env_winsize (
bool arg)
773 gnu_readline::do_interrupt (
bool arg)
779 gnu_readline::do_handle_interrupt_signal (
void)
786 throw interrupt_exception ();
790 gnu_readline::operate_and_get_next (
int ,
int )
794 command_editor::accept_line ();
798 int x_where = command_history::where ();
800 int x_length = command_history::length ();
802 if ((command_history::is_stifled ()
803 && (x_length >= command_history::max_input_history ()))
804 || (x_where >= x_length - 1))
805 command_history::set_mark (x_where);
807 command_history::set_mark (x_where + 1);
809 command_editor::add_startup_hook (command_history::goto_mark);
815 gnu_readline::history_search_backward (
int count,
int c)
821 gnu_readline::history_search_forward (
int count,
int c)
827 gnu_readline::command_generator (
const char *text,
int state)
829 char *retval =
nullptr;
831 completion_fcn
f = command_editor::get_completion_function ();
833 std::string tmp =
f (text,
state);
835 std::size_t
len = tmp.length ();
842 strcpy (retval, tmp.c_str ());
849 gnu_readline::command_quoter (
char *text,
int matches,
char *qcp)
851 char *retval =
nullptr;
853 quoting_fcn
f = command_editor::get_quoting_function ();
855 std::string tmp =
f (text, matches, *qcp);
857 std::size_t
len = tmp.length ();
864 strcpy (retval, tmp.c_str ());
871 gnu_readline::command_dequoter (
char *text,
int quote)
873 char *retval =
nullptr;
875 dequoting_fcn
f = command_editor::get_dequoting_function ();
877 std::string tmp =
f (text, quote);
879 std::size_t
len = tmp.length ();
886 strcpy (retval, tmp.c_str ());
893 gnu_readline::command_char_is_quoted (
char *text,
int quote)
895 char_is_quoted_fcn
f = command_editor::get_char_is_quoted_function ();
897 return f (text, quote);
901 gnu_readline::command_accept_line (
int count,
int key)
903 user_accept_line_fcn
f = command_editor::get_user_accept_line_function ();
914 gnu_readline::command_completer (
const char *text,
int,
int)
930 :
command_editor (), m_input_stream (stdin), m_output_stream (stdout) { }
940 std::string do_readline (
const std::string& prompt,
bool& eof);
942 void do_set_input_stream (FILE *
f);
944 FILE * do_get_input_stream (
void);
946 void do_set_output_stream (FILE *
f);
948 FILE * do_get_output_stream (
void);
950 string_vector do_generate_filename_completions (
const std::string& text);
952 std::string do_get_line_buffer (
void)
const;
954 std::string do_get_current_line (
void)
const;
956 char do_get_prev_char (
int)
const;
958 void do_replace_line (
const std::string& text,
bool clear_undo);
960 void do_kill_full_line (
void);
962 void do_insert_text (
const std::string& text);
964 void do_newline (
void);
966 void do_accept_line (
void);
976 default_command_editor::do_readline (
const std::string& prompt,
bool& eof)
978 std::fputs (prompt.c_str (), m_output_stream);
979 std::fflush (m_output_stream);
981 return fgetl (m_input_stream, eof);
985 default_command_editor::do_set_input_stream (FILE *
f)
991 default_command_editor::do_get_input_stream (
void)
993 return m_input_stream;
997 default_command_editor::do_set_output_stream (FILE *
f)
1003 default_command_editor::do_get_output_stream (
void)
1005 return m_output_stream;
1009 default_command_editor::do_generate_filename_completions (
const std::string&)
1016 default_command_editor::do_get_line_buffer (
void)
const
1022 default_command_editor::do_get_current_line (
void)
const
1029 default_command_editor::do_get_prev_char (
int)
const
1035 default_command_editor::do_replace_line (
const std::string&,
bool)
1041 default_command_editor::do_kill_full_line (
void)
1047 default_command_editor::do_insert_text (
const std::string&)
1053 default_command_editor::do_newline (
void)
1059 default_command_editor::do_accept_line (
void)
1065 command_editor::instance_ok (
void)
1071 make_command_editor ();
1075 s_instance->set_event_hook (event_handler);
1082 (*current_liboctave_error_handler)
1083 (
"unable to create command history object!");
1089 command_editor::make_command_editor (
void)
1091#if defined (USE_READLINE)
1092 s_instance =
new gnu_readline ();
1099 command_editor::force_default_editor (
void)
1106 command_editor::set_initial_input (
const std::string& text)
1109 s_instance->m_initial_input = text;
1113 command_editor::insert_initial_input (
void)
1115 return instance_ok () ? s_instance->do_insert_initial_input () : 0;
1119 command_editor::startup_handler (
void)
1124 std::set<startup_hook_fcn> hook_set = m_startup_hook_set;
1126 for (startup_hook_fcn
f : hook_set)
1136 command_editor::pre_input_handler (
void)
1141 std::set<pre_input_hook_fcn> hook_set = m_pre_input_hook_set;
1143 for (pre_input_hook_fcn
f : hook_set)
1153 command_editor::event_handler (
void)
1156 handle_interrupt_signal ();
1160 std::set<event_hook_fcn> hook_set (m_event_hook_set);
1164 for (event_hook_fcn
f : hook_set)
1174 command_editor::set_name (
const std::string& n)
1177 s_instance->do_set_name (n);
1181 command_editor::readline (
const std::string& prompt)
1185 return readline (prompt, eof);
1189 command_editor::readline (
const std::string& prompt,
bool& eof)
1195 if (! s_instance->m_initial_input.empty ())
1196 add_pre_input_hook (command_editor::insert_initial_input);
1198 retval = s_instance->do_readline (prompt, eof);
1205 command_editor::set_input_stream (FILE *
f)
1208 s_instance->do_set_input_stream (
f);
1212 command_editor::get_input_stream (
void)
1214 return instance_ok () ? s_instance->do_get_input_stream () :
nullptr;
1218 command_editor::set_output_stream (FILE *
f)
1221 s_instance->do_set_output_stream (
f);
1225 command_editor::get_output_stream (
void)
1227 return instance_ok () ? s_instance->do_get_output_stream () :
nullptr;
1231 command_editor::redisplay (
void)
1234 s_instance->do_redisplay ();
1238 command_editor::terminal_rows (
void)
1240 return instance_ok () ? s_instance->do_terminal_rows () : -1;
1244 command_editor::terminal_cols (
void)
1246 return instance_ok () ? s_instance->do_terminal_cols () : -1;
1250 command_editor::clear_screen (
bool skip_redisplay)
1253 s_instance->do_clear_screen (skip_redisplay);
1257 command_editor::resize_terminal (
void)
1260 s_instance->do_resize_terminal ();
1264 command_editor::set_screen_size (
int ht,
int wd)
1267 s_instance->do_set_screen_size (ht, wd);
1271 command_editor::decode_prompt_string (
const std::string& s)
1273 return instance_ok () ? s_instance->do_decode_prompt_string (s) :
"";
1277 command_editor::current_command_number (
void)
1279 return instance_ok () ? s_instance->m_command_number : 0;
1283 command_editor::reset_current_command_number (
int n)
1286 s_instance->m_command_number = n;
1290 command_editor::increment_current_command_number (
void)
1293 s_instance->m_command_number++;
1297 command_editor::restore_terminal_state (
void)
1300 s_instance->do_restore_terminal_state ();
1304 command_editor::blink_matching_paren (
bool flag)
1307 s_instance->do_blink_matching_paren (flag);
1311 command_editor::erase_empty_line (
bool flag)
1313 return instance_ok () ? s_instance->do_erase_empty_line (flag) :
false;
1317 command_editor::set_basic_word_break_characters (
const std::string& s)
1320 s_instance->do_set_basic_word_break_characters (s);
1324 command_editor::set_completer_word_break_characters (
const std::string& s)
1327 s_instance->do_set_completer_word_break_characters (s);
1331 command_editor::set_basic_quote_characters (
const std::string& s)
1334 s_instance->do_set_basic_quote_characters (s);
1338 command_editor::set_filename_quote_characters (
const std::string& s)
1341 s_instance->do_set_filename_quote_characters (s);
1345 command_editor::set_completer_quote_characters (
const std::string& s)
1348 s_instance->do_set_completer_quote_characters (s);
1352 command_editor::set_completion_append_character (
char c)
1355 s_instance->do_set_completion_append_character (c);
1359 command_editor::set_completion_function (completion_fcn
f)
1362 s_instance->do_set_completion_function (
f);
1366 command_editor::set_quoting_function (quoting_fcn
f)
1369 s_instance->do_set_quoting_function (
f);
1373 command_editor::set_dequoting_function (dequoting_fcn
f)
1376 s_instance->do_set_dequoting_function (
f);
1380 command_editor::set_char_is_quoted_function (char_is_quoted_fcn
f)
1383 s_instance->do_set_char_is_quoted_function (
f);
1387 command_editor::set_user_accept_line_function (user_accept_line_fcn
f)
1390 s_instance->do_set_user_accept_line_function (
f);
1393 command_editor::completion_fcn
1394 command_editor::get_completion_function (
void)
1396 return instance_ok () ? s_instance->do_get_completion_function () :
nullptr;
1399 command_editor::quoting_fcn
1400 command_editor::get_quoting_function (
void)
1402 return instance_ok () ? s_instance->do_get_quoting_function () :
nullptr;
1405 command_editor::dequoting_fcn
1406 command_editor::get_dequoting_function (
void)
1408 return instance_ok () ? s_instance->do_get_dequoting_function () :
nullptr;
1411 command_editor::char_is_quoted_fcn
1412 command_editor::get_char_is_quoted_function (
void)
1414 return (instance_ok ()
1415 ? s_instance->do_get_char_is_quoted_function () :
nullptr);
1418 command_editor::user_accept_line_fcn
1419 command_editor::get_user_accept_line_function (
void)
1421 return (instance_ok ()
1422 ? s_instance->do_get_user_accept_line_function () :
nullptr);
1426 command_editor::generate_filename_completions (
const std::string& text)
1428 return (instance_ok ()
1429 ? s_instance->do_generate_filename_completions (text)
1434 command_editor::get_line_buffer (
void)
1436 return instance_ok () ? s_instance->do_get_line_buffer () :
"";
1440 command_editor::get_current_line (
void)
1442 return instance_ok () ? s_instance->do_get_current_line () :
"";
1448 command_editor::get_prev_char (
int offset)
1450 return instance_ok () ? s_instance->do_get_prev_char (offset) :
'\0';
1454 command_editor::replace_line (
const std::string& text,
bool clear_undo)
1457 s_instance->do_replace_line (text, clear_undo);
1461 command_editor::kill_full_line (
void)
1464 s_instance->do_kill_full_line ();
1468 command_editor::insert_text (
const std::string& text)
1471 s_instance->do_insert_text (text);
1475 command_editor::newline (
void)
1478 s_instance->do_newline ();
1482 command_editor::accept_line (
void)
1485 s_instance->do_accept_line ();
1489 command_editor::undo (
void)
1491 return instance_ok () ? s_instance->do_undo () :
false;
1495 command_editor::clear_undo_list (
void)
1498 s_instance->do_clear_undo_list ();
1502 command_editor::add_startup_hook (startup_hook_fcn
f)
1506 m_startup_hook_set.insert (
f);
1508 s_instance->set_startup_hook (startup_handler);
1513 command_editor::remove_startup_hook (startup_hook_fcn
f)
1517 auto p = m_startup_hook_set.find (
f);
1519 if (p != m_startup_hook_set.end ())
1520 m_startup_hook_set.erase (p);
1522 if (m_startup_hook_set.empty ())
1523 s_instance->restore_startup_hook ();
1528 command_editor::add_pre_input_hook (pre_input_hook_fcn
f)
1532 m_pre_input_hook_set.insert (
f);
1534 s_instance->set_pre_input_hook (pre_input_handler);
1539 command_editor::remove_pre_input_hook (pre_input_hook_fcn
f)
1543 auto p = m_pre_input_hook_set.find (
f);
1545 if (p != m_pre_input_hook_set.end ())
1546 m_pre_input_hook_set.erase (p);
1548 if (m_pre_input_hook_set.empty ())
1549 s_instance->restore_pre_input_hook ();
1554 command_editor::add_event_hook (event_hook_fcn
f)
1558 m_event_hook_set.insert (
f);
1562 command_editor::remove_event_hook (event_hook_fcn
f)
1566 auto p = m_event_hook_set.find (
f);
1568 if (p != m_event_hook_set.end ())
1569 m_event_hook_set.erase (p);
1574 command_editor::run_event_hooks (
void)
1580 command_editor::read_init_file (
const std::string& file_arg)
1586 s_instance->do_read_init_file (file);
1591 command_editor::re_read_init_file (
void)
1594 s_instance->do_re_read_init_file ();
1598 command_editor::filename_completion_desired (
bool arg)
1600 return (instance_ok ()
1601 ? s_instance->do_filename_completion_desired (arg) :
false);
1605 command_editor::filename_quoting_desired (
bool arg)
1607 return (instance_ok ())
1608 ? s_instance->do_filename_quoting_desired (arg) :
false;
1612 command_editor::prefer_env_winsize (
bool arg)
1614 return instance_ok () ? s_instance->do_prefer_env_winsize (arg) :
false;
1618 command_editor::interrupt (
bool arg)
1625 retval = s_instance->m_interrupted;
1627 s_instance->do_interrupt (arg);
1629 s_instance->m_interrupted = arg;
1638 command_editor::interrupt_event_loop (
bool arg)
1641 s_instance->do_interrupt_event_loop (arg);
1645 command_editor::event_loop_interrupted (
void)
1647 return instance_ok () ? s_instance->do_event_loop_interrupted () :
false;
1651 command_editor::handle_interrupt_signal (
void)
1654 s_instance->do_handle_interrupt_signal ();
1684 command_editor::do_decode_prompt_string (
const std::string& s)
1689 std::size_t slen = s.length ();
1714 int n = read_octal (s.substr (i, 3));
1744 tmpstr = now.
strftime (
"%a %b %d");
1746 tmpstr = now.
strftime (
"%H:%M:%S");
1748 tmpstr = now.
strftime (
"%I:%M:%S");
1750 tmpstr = now.
strftime (
"%I:%M %p");
1766 tmpstr = sys::env::get_host_name ();
1768 std::size_t pos = tmpstr.find (
'.');
1770 if (pos != std::string::npos)
1771 tmpstr.resize (pos);
1778 tmpstr = sys::env::get_host_name ();
1785 tmpstr = newline_chars ();
1799 tmpstr = sys::env::get_program_name ();
1800 tmpstr = sys::env::base_pathname (tmpstr);
1807 tmpstr = sys::env::get_user_name ();
1817 tmpstr = sys::env::get_current_directory ();
1824 std::string home_dir = sys::env::get_home_directory ();
1826 if (c ==
'W' && (home_dir.empty () || tmpstr != home_dir))
1828 if (tmpstr !=
"/" && tmpstr !=
"//")
1830 std::size_t pos = tmpstr.rfind (
'/');
1832 if (pos != std::string::npos && pos != 0)
1833 tmpstr = tmpstr.substr (pos + 1);
1837 tmpstr = sys::env::polite_directory_format (tmpstr);
1844 char number_buffer[32];
1845 int num = command_history::current_number ();
1847 sprintf (number_buffer,
"%d", num);
1849 strcpy (number_buffer,
"!");
1850 tmpstr = number_buffer;
1857 char number_buffer[32];
1858 sprintf (number_buffer,
"%d", m_command_number);
1859 tmpstr = number_buffer;
1870#if defined (USE_READLINE)
1876 tmpstr[0] = ((c ==
'[')
1900 retval.append (tmpstr);
1911 command_editor::do_insert_initial_input (
void)
1913 std::string
input = m_initial_input;
1915 m_initial_input =
"";
1917 do_insert_text (
input);
1929 command_editor::read_octal (
const std::string& s)
1935 std::size_t slen = s.length ();
1937 while (i < slen && s[i] >=
'0' && s[i] <
'8')
1940 result = (result * 8) + s[i] -
'0';
1944 if (! digits || result > 0777 || i < slen)
1953 (*current_liboctave_error_handler) (
"%s", std::strerror (err_num));
1959 (*current_liboctave_error_handler) (
"%s", s.c_str ());
static command_editor * s_instance
static std::set< startup_hook_fcn > m_startup_hook_set
static std::set< event_hook_fcn > m_event_hook_set
int(* startup_hook_fcn)(void)
int(* pre_input_hook_fcn)(void)
std::string(* completion_fcn)(const std::string &, int)
static std::set< pre_input_hook_fcn > m_pre_input_hook_set
int(* event_hook_fcn)(void)
~default_command_editor(void)=default
default_command_editor(void)
default_command_editor(const default_command_editor &)=delete
OCTAVE_API std::string strftime(const std::string &fmt) const
static std::string getenv(const std::string &name)
void resize(octave_idx_type n, const std::string &rfv="")
void error(const char *fmt,...)
F77_RET_T const F77_DBLE const F77_DBLE * f
std::string tilde_expand(const std::string &name)
static uint32_t state[624]
static double f(double k, double l_nu, double c_pm)
std::string fgetl(FILE *f)
char * do_completer_word_break_hook()
static mutex event_hook_lock
int octave_rl_history_search_backward(int, int)
void octave_rl_set_startup_hook(rl_startup_hook_fcn_ptr)
void octave_rl_set_quoting_function(rl_quoting_fcn_ptr)
void octave_rl_re_read_init_file(void)
void octave_rl_set_completer_word_break_characters(const char *)
void octave_rl_set_pre_input_hook(rl_startup_hook_fcn_ptr)
void octave_rl_kill_full_line(void)
const char * octave_rl_line_buffer(void)
FILE * octave_rl_get_output_stream(void)
char octave_rl_prompt_end_ignore(void)
void octave_rl_clear_undo_list(void)
void octave_rl_resize_terminal(void)
int octave_rl_history_search_forward(int, int)
void octave_rl_read_init_file(const char *)
char **(* rl_attempted_completion_fcn_ptr)(const char *, int, int)
char * octave_rl_filename_completion_function(const char *, int)
void octave_rl_set_dequoting_function(rl_dequoting_fcn_ptr)
void octave_rl_set_basic_quote_characters(const char *)
void octave_rl_clear_screen(int skip_redisplay)
int octave_rl_screen_width(void)
char octave_rl_prompt_start_ignore(void)
void octave_rl_set_terminal_name(const char *)
void octave_rl_restore_terminal_state(void)
void octave_rl_set_name(const char *)
int octave_rl_do_undo(void)
int octave_rl_filename_completion_desired(int)
void octave_rl_set_output_stream(FILE *)
void octave_rl_set_completion_word_break_hook(rl_completion_hook_fcn_ptr)
void octave_rl_initialize(void)
void octave_rl_set_filename_quote_characters(const char *)
FILE * octave_rl_get_input_stream(void)
void octave_rl_enable_paren_matching(int)
void octave_rl_set_event_hook(rl_event_hook_fcn_ptr f)
char * octave_rl_copy_line(void)
void octave_rl_set_completion_append_character(char)
int octave_rl_screen_height(void)
rl_startup_hook_fcn_ptr octave_rl_get_startup_hook(void)
void octave_rl_set_completion_function(rl_attempted_completion_fcn_ptr)
int octave_rl_point(void)
char * octave_rl_get_completer_word_break_characters(void)
rl_event_hook_fcn_ptr octave_rl_get_event_hook(void)
rl_pre_input_hook_fcn_ptr octave_rl_get_pre_input_hook(void)
void octave_rl_insert_text(const char *)
int(* rl_char_is_quoted_fcn_ptr)(char *, int)
int octave_rl_erase_empty_line(int)
int octave_rl_filename_quoting_desired(int)
void octave_rl_recover_from_interrupt(void)
void octave_rl_add_defun(const char *, rl_fcn_ptr, int)
void octave_rl_set_completer_quote_characters(const char *)
void octave_rl_set_screen_size(int ht, int wd)
void octave_rl_replace_line(const char *s, int clear_undo)
char *(* rl_quoting_fcn_ptr)(char *, int, char *)
void octave_rl_set_char_is_quoted_function(rl_char_is_quoted_fcn_ptr)
int octave_rl_newline(int, int)
void octave_rl_set_input_stream(FILE *)
int octave_rl_prefer_env_winsize(int)
char * octave_rl_readline(const char *)
void octave_rl_redisplay(void)
void octave_rl_set_basic_word_break_characters(const char *)
char *(* rl_dequoting_fcn_ptr)(char *, int)
char ** octave_rl_completion_matches(const char *, rl_completer_fcn_ptr)
static int input(yyscan_t yyscanner)
volatile sig_atomic_t octave_signal_caught
sig_atomic_t octave_interrupt_state
static const char dir_sep_char
char * octave_strdup_wrapper(const char *str)
uid_t octave_geteuid_wrapper(void)