23 #if ! defined (octave_cmd_edit_h)
24 #define octave_cmd_edit_h 1
26 #include "octave-config.h"
44 : command_number (0), interrupted (
false), initial_input () { }
48 typedef int (*startup_hook_fcn) (void);
50 typedef int (*pre_input_hook_fcn) (void);
52 typedef int (*event_hook_fcn) (void);
56 typedef char * (*completion_hook_fcn) ();
60 typedef std::string (*dequoting_fcn) (
const std::string&, int);
62 typedef int (*char_is_quoted_fcn) (
const std::string&, int);
64 typedef void (*user_accept_line_fcn) (
const std::string&);
68 static void set_name (
const std::string& n);
70 static std::string readline (
const std::string& prompt);
72 static std::string readline (
const std::string& prompt,
bool& eof);
74 static void set_input_stream (FILE *
f);
76 static FILE *get_input_stream (
void);
78 static void set_output_stream (FILE *
f);
80 static FILE *get_output_stream (
void);
82 static void redisplay (
void);
84 static int terminal_rows (
void);
86 static int terminal_cols (
void);
88 static void clear_screen (
bool skip_redisplay =
false);
90 static void resize_terminal (
void);
92 static void set_screen_size (
int ht,
int wd);
94 static std::string decode_prompt_string (
const std::string&
s);
96 static void restore_terminal_state (
void);
98 static void blink_matching_paren (
bool flag);
100 static bool erase_empty_line (
bool flag);
102 static void set_basic_word_break_characters (
const std::string&
s);
104 static void set_completer_word_break_characters (
const std::string&
s);
106 static void set_basic_quote_characters (
const std::string&
s);
108 static void set_filename_quote_characters (
const std::string&
s);
110 static void set_completer_quote_characters (
const std::string&
s);
112 static void set_completion_append_character (
char c);
114 static void set_completion_function (completion_fcn
f);
116 static void set_quoting_function (quoting_fcn
f);
118 static void set_dequoting_function (dequoting_fcn
f);
120 static void set_char_is_quoted_function (char_is_quoted_fcn
f);
122 static void set_user_accept_line_function (user_accept_line_fcn
f);
124 static completion_fcn get_completion_function (
void);
126 static quoting_fcn get_quoting_function (
void);
128 static dequoting_fcn get_dequoting_function (
void);
130 static char_is_quoted_fcn get_char_is_quoted_function (
void);
132 static user_accept_line_fcn get_user_accept_line_function (
void);
136 static std::string get_line_buffer (
void);
138 static std::string get_current_line (
void);
140 static char get_prev_char (
int);
142 static void replace_line (
const std::string&
text,
bool clear_undo =
true);
144 static void kill_full_line (
void);
146 static void insert_text (
const std::string&
text);
148 static void newline (
void);
150 static void accept_line (
void);
152 static bool undo (
void);
154 static void clear_undo_list (
void);
156 static void add_startup_hook (startup_hook_fcn
f);
158 static void remove_startup_hook (startup_hook_fcn
f);
160 static void add_pre_input_hook (pre_input_hook_fcn
f);
162 static void remove_pre_input_hook (pre_input_hook_fcn
f);
164 static void add_event_hook (event_hook_fcn
f);
166 static void remove_event_hook (event_hook_fcn
f);
168 static void run_event_hooks (
void);
170 static void read_init_file (
const std::string&
file =
"");
172 static void re_read_init_file (
void);
174 static bool filename_completion_desired (
bool);
176 static bool filename_quoting_desired (
bool);
178 static bool prefer_env_winsize (
bool);
180 static bool interrupt (
bool =
true);
182 static int current_command_number (
void);
184 static void reset_current_command_number (
int n);
186 static void increment_current_command_number (
void);
188 static void force_default_editor (
void);
190 static void set_initial_input (
const std::string&
text);
192 static int insert_initial_input (
void);
202 static bool instance_ok (
void);
204 static void make_command_editor (
void);
206 static int startup_handler (
void);
208 static int pre_input_handler (
void);
210 static int event_handler (
void);
235 return do_readline (prompt, eof);
238 virtual std::string do_readline (
const std::string&,
bool&) = 0;
240 virtual void do_set_input_stream (FILE *) = 0;
242 virtual FILE *do_get_input_stream (
void) = 0;
244 virtual void do_set_output_stream (FILE *) = 0;
246 virtual FILE *do_get_output_stream (
void) = 0;
260 virtual std::string do_decode_prompt_string (
const std::string&);
307 do_generate_filename_completions (
const std::string&
text) = 0;
309 virtual std::string do_get_line_buffer (
void)
const = 0;
311 virtual std::string do_get_current_line (
void)
const = 0;
313 virtual char do_get_prev_char (
int)
const = 0;
315 virtual void do_replace_line (
const std::string&
text,
bool clear_undo) = 0;
317 virtual void do_kill_full_line (
void) = 0;
319 virtual void do_insert_text (
const std::string&
text) = 0;
321 virtual void do_newline (
void) = 0;
323 virtual void do_accept_line (
void) = 0;
353 int do_insert_initial_input (
void);
355 int read_octal (
const std::string&
s);
359 void error (
const std::string&);
370 #if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
372 OCTAVE_DEPRECATED (
"use 'octave::command_editor' instead")
373 typedef
octave::command_editor command_editor;
virtual int do_terminal_cols(void)
virtual void do_set_completion_append_character(char)
virtual void do_set_char_is_quoted_function(char_is_quoted_fcn)
Octave interface to the compression and uncompression libraries.
For example cd octave end example noindent changes the current working directory to file
virtual void do_clear_screen(bool)
virtual dequoting_fcn do_get_dequoting_function(void) const
virtual void do_set_completer_word_break_hook(completion_hook_fcn)
virtual void do_set_completion_function(completion_fcn)
virtual void set_startup_hook(startup_hook_fcn)
virtual void do_blink_matching_paren(bool)
virtual void do_clear_undo_list(void)
F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T const F77_REAL const F77_REAL F77_REAL &F77_RET_T const F77_DBLE const F77_DBLE F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T const F77_DBLE F77_DBLE &F77_RET_T const F77_REAL F77_REAL &F77_RET_T F77_REAL F77_REAL &F77_RET_T F77_DBLE F77_DBLE &F77_RET_T const F77_DBLE const F77_DBLE * f
virtual bool do_prefer_env_winsize(bool)
virtual void do_set_user_accept_line_function(user_accept_line_fcn)
static void cleanup_instance(void)
virtual void restore_pre_input_hook(void)
virtual quoting_fcn do_get_quoting_function(void) const
void error(const char *fmt,...)
virtual completion_fcn do_get_completion_function(void) const
virtual void set_event_hook(event_hook_fcn)
virtual void do_restore_terminal_state(void)
virtual bool do_filename_completion_desired(bool)
virtual void do_set_filename_quote_characters(const std::string &)
virtual void set_pre_input_hook(pre_input_hook_fcn)
std::string initial_input
virtual void do_set_quoting_function(quoting_fcn)
virtual char_is_quoted_fcn do_get_char_is_quoted_function(void) const
virtual void do_set_screen_size(int, int)
std::string do_readline(const std::string &prompt)
virtual void restore_event_hook(void)
virtual void do_interrupt(bool)
virtual void do_set_basic_word_break_characters(const std::string &)
virtual bool do_undo(void)
virtual void restore_startup_hook(void)
static std::set< pre_input_hook_fcn > pre_input_hook_set
virtual bool do_erase_empty_line(bool)
virtual user_accept_line_fcn do_get_user_accept_line_function(void) const
the sparsity preserving column transformation such that that defines the pivoting threshold can be given in which case it defines the c
virtual void do_set_completer_word_break_characters(const std::string &)
static std::set< event_hook_fcn > event_hook_set
virtual void do_read_init_file(const std::string &)
virtual ~command_editor(void)
virtual void do_set_basic_quote_characters(const std::string &)
virtual void do_resize_terminal(void)
virtual int do_terminal_rows(void)
virtual void do_re_read_init_file(void)
virtual bool do_filename_quoting_desired(bool)
virtual std::string newline_chars(void)
static command_editor * instance
virtual void do_set_name(const std::string &)
virtual void do_redisplay(void)
virtual void do_set_completer_quote_characters(const std::string &)
If this string is the system will ring the terminal sometimes it is useful to be able to print the original representation of the string
virtual void do_set_dequoting_function(dequoting_fcn)
static std::set< startup_hook_fcn > startup_hook_set