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) ();
80 static void set_input_stream (FILE *
f);
82 static FILE * get_input_stream (
void);
84 static void set_output_stream (FILE *
f);
86 static FILE * get_output_stream (
void);
88 static void redisplay (
void);
90 static int terminal_rows (
void);
92 static int terminal_cols (
void);
94 static void clear_screen (
bool skip_redisplay =
false);
96 static void resize_terminal (
void);
98 static void set_screen_size (
int ht,
int wd);
102 static void restore_terminal_state (
void);
104 static void blink_matching_paren (
bool flag);
106 static bool erase_empty_line (
bool flag);
108 static void set_basic_word_break_characters (
const std::string&
s);
110 static void set_completer_word_break_characters (
const std::string&
s);
112 static void set_basic_quote_characters (
const std::string&
s);
114 static void set_filename_quote_characters (
const std::string&
s);
116 static void set_completer_quote_characters (
const std::string&
s);
118 static void set_completion_append_character (
char c);
120 static void set_completion_function (completion_fcn
f);
122 static void set_quoting_function (quoting_fcn
f);
124 static void set_dequoting_function (dequoting_fcn
f);
126 static void set_char_is_quoted_function (char_is_quoted_fcn
f);
128 static void set_user_accept_line_function (user_accept_line_fcn
f);
130 static completion_fcn get_completion_function (
void);
132 static quoting_fcn get_quoting_function (
void);
134 static dequoting_fcn get_dequoting_function (
void);
136 static char_is_quoted_fcn get_char_is_quoted_function (
void);
138 static user_accept_line_fcn get_user_accept_line_function (
void);
146 static char get_prev_char (
int);
148 static void replace_line (
const std::string&
text,
bool clear_undo =
true);
150 static void kill_full_line (
void);
154 static void newline (
void);
156 static void accept_line (
void);
158 static bool undo (
void);
160 static void clear_undo_list (
void);
162 static void add_startup_hook (startup_hook_fcn
f);
164 static void remove_startup_hook (startup_hook_fcn
f);
166 static void add_pre_input_hook (pre_input_hook_fcn
f);
168 static void remove_pre_input_hook (pre_input_hook_fcn
f);
170 static void add_event_hook (event_hook_fcn
f);
172 static void remove_event_hook (event_hook_fcn
f);
174 static void run_event_hooks (
void);
178 static void re_read_init_file (
void);
180 static bool filename_completion_desired (
bool);
182 static bool filename_quoting_desired (
bool);
184 static bool prefer_env_winsize (
bool);
186 static bool interrupt (
bool =
true);
188 static int current_command_number (
void);
190 static void reset_current_command_number (
int n);
192 static void increment_current_command_number (
void);
194 static void force_default_editor (
void);
198 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);
223 static void handle_interrupt_signal (
void);
237 return do_readline (prompt, eof);
242 virtual void do_set_input_stream (FILE *) = 0;
244 virtual FILE * do_get_input_stream (
void) = 0;
246 virtual void do_set_output_stream (FILE *) = 0;
248 virtual FILE * do_get_output_stream (
void) = 0;
311 virtual std::string do_get_line_buffer (
void)
const = 0;
313 virtual std::string do_get_current_line (
void)
const = 0;
315 virtual char do_get_prev_char (
int)
const = 0;
317 virtual void do_replace_line (
const std::string&
text,
bool clear_undo) = 0;
319 virtual void do_kill_full_line (
void) = 0;
323 virtual void do_newline (
void) = 0;
325 virtual void do_accept_line (
void) = 0;
357 int do_insert_initial_input (
void);
374 #if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS) 376 OCTAVE_DEPRECATED (4.2,
"use 'octave::command_editor' instead")
377 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)
For example cd octave end example noindent changes the current working directory to file
virtual void do_clear_screen(bool)
virtual quoting_fcn do_get_quoting_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)
virtual char_is_quoted_fcn do_get_char_is_quoted_function(void) const
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 const F77_DBLE F77_DBLE &F77_RET_T const F77_REAL F77_REAL &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)
void error(const char *fmt,...)
virtual void set_event_hook(event_hook_fcn)
virtual void do_restore_terminal_state(void)
nd example oindent opens the file binary numeric values will be read assuming they are stored in IEEE format with the least significant bit and then converted to the native representation Opening a file that is already open simply opens it again and returns a separate file id It is not an error to open a file several though writing to the same file through several different file ids may produce unexpected results The possible values of text mode reading and writing automatically converts linefeeds to the appropriate line end character for the you may append a you must also open the file in binary mode The parameter conversions are currently only supported for and permissions will be set to and then everything is written in a single operation This is very efficient and improves performance c
virtual bool do_filename_completion_desired(bool)
virtual void do_set_filename_quote_characters(const std::string &)
virtual dequoting_fcn do_get_dequoting_function(void) const
virtual void set_pre_input_hook(pre_input_hook_fcn)
std::string initial_input
virtual void do_set_quoting_function(quoting_fcn)
virtual user_accept_line_fcn do_get_user_accept_line_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 completion_fcn do_get_completion_function(void) const
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 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 void do_handle_interrupt_signal(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