aboutsummaryrefslogtreecommitdiffhomepage
path: root/reader.h
diff options
context:
space:
mode:
authorGravatar axel <axel@liljencrantz.se>2005-09-20 23:26:39 +1000
committerGravatar axel <axel@liljencrantz.se>2005-09-20 23:26:39 +1000
commit149594f974350bb364a76c73b91b1d5ffddaa1fa (patch)
tree95650e9982d5fabe4bd805d94c5d700cbbc1ca7f /reader.h
Initial revision
darcs-hash:20050920132639-ac50b-fa3b476891e1f5f67207cf4cc7bf623834cc5edc.gz
Diffstat (limited to 'reader.h')
-rw-r--r--reader.h186
1 files changed, 186 insertions, 0 deletions
diff --git a/reader.h b/reader.h
new file mode 100644
index 00000000..b9e95fef
--- /dev/null
+++ b/reader.h
@@ -0,0 +1,186 @@
+/** \file reader.h
+
+ Prototypes for functions for reading data from stdin and passing
+ to the parser. If stdin is a keyboard, it supplies a killring,
+ history, syntax highlighting, tab-completion and various other
+ features.
+*/
+
+/**
+ Read commands from fd 0 until encountering EOF
+*/
+int reader_read();
+
+/**
+ Tell the shell that it should exit after the currently running command finishes.
+*/
+void reader_exit( int do_exit );
+
+/**
+ Check that the reader is in a sane state
+*/
+void reader_sanity_check();
+
+/**
+ Initialize the reader
+*/
+void reader_init();
+
+/**
+ Destroy and free resources used by the reader
+*/
+void reader_destroy();
+
+/**
+ Returns the filename of the file currently read
+*/
+wchar_t *reader_current_filename();
+
+/**
+ Push a new filename on the stack of read files
+
+ \param fn The fileanme to push
+*/
+void reader_push_current_filename( wchar_t *fn );
+/**
+ Pop the current filename from the stack of read files
+ */
+wchar_t *reader_pop_current_filename();
+
+/**
+ Returns the width of the terminal window, so that not all
+ functions that use these values continually have to keep track of
+ it.
+*/
+int reader_get_width();
+/**
+ Returns the height of the terminal window, so that not all
+ functions that use these values continually have to keep track of
+ it.
+*/
+int reader_get_height();
+
+/**
+ Write the title to the titlebar. This function is called just
+ before a new application starts executing and just after it
+ finishes.
+*/
+void reader_write_title();
+
+/**
+ Repaint the entire commandline. This means reset and clear the
+ commandline, write the prompt, perform syntax highlighting, write
+ the commandline and move the cursor.
+*/
+void repaint();
+
+/**
+ Run the specified command with the correct terminal modes, and
+ while taking care to perform job notification, set the title, etc.
+*/
+void reader_run_command( wchar_t *buff );
+
+/**
+ Get the string of character currently entered into the command
+ buffer, or 0 if interactive mode is uninitialized.
+*/
+wchar_t *reader_get_buffer();
+
+/**
+ Set the string of characters in the command buffer, as well as the cursor position.
+
+ \param b the new buffer value
+ \param p the cursor position. If \c p is less than zero, the cursor is placed on the last character.
+*/
+void reader_set_buffer( wchar_t *b, int p );
+
+/**
+ Get the current cursor position in the command line. If interactive
+ mode is uninitialized, return -1.
+*/
+int reader_get_cursor_pos();
+
+/**
+ Return the value of the interupted flag, which is set by the sigint
+ handler, and clear it if it was set.
+*/
+int reader_interupted();
+
+/**
+ Read one line of input. Before calling this function, reader_push()
+ must have been called in order to set up a valid reader
+ environment.
+*/
+wchar_t *reader_readline();
+
+/**
+ Push a new reader environment.
+*/
+void reader_push( wchar_t *name );
+
+/**
+ Return to previous reader environment
+*/
+void reader_pop();
+
+/**
+ Specify function to use for finding possible tab completions. The function must take these arguments:
+
+ - The command to be completed as a null terminated array of wchar_t
+ - An array_list_t in which completions will be inserted.
+*/
+void reader_set_complete_function( void (*f)( const wchar_t *, array_list_t * ) );
+
+/**
+ Specify function for syntax highlighting. The function must take these arguments:
+
+ - The command to be highlighted as a null terminated array of wchar_t
+ - The color code of each character as an array of ints
+ - The cursor position
+ - An array_list_t used for storing error messages
+*/
+void reader_set_highlight_function( void (*f)( wchar_t *, int *, int, array_list_t * ) );
+
+/**
+ Specify function for testing if the command buffer contains syntax
+ errors that must be corrected before returning.
+*/
+void reader_set_test_function( int (*f)( wchar_t * ) );
+
+/**
+ Specify string of shell commands to be run in order to generate the
+ prompt.
+*/
+void reader_set_prompt( wchar_t *prompt );
+
+/**
+ Returns true if the shell is exiting, 0 otherwise.
+*/
+int exit_status();
+
+/**
+ Find the beginning and the end of the current subshell
+*/
+void reader_current_subshell_extent( wchar_t **a, wchar_t **b );
+
+/**
+ Find the beginning and the end of the job under the cursor
+*/
+void reader_current_job_extent( wchar_t **a, wchar_t **b );
+
+/**
+ Find the beginning and the end of the process under the cursor
+*/
+void reader_current_process_extent( wchar_t **a, wchar_t **b );
+
+/**
+ Find the beginning and the end of the token under the curor and the token before the cursor
+*/
+
+void reader_current_token_extent( wchar_t **a, wchar_t **b, wchar_t **pa, wchar_t **pb );
+
+/**
+ Replace the current token with the specified string
+*/
+void reader_replace_current_token( wchar_t *new_token );
+