2005-09-20 23:26:39 +10:00
/** \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 .
*/
2005-10-05 01:11:39 +10:00
# ifndef FISH_READER_H
# define FISH_READER_H
# include <wchar.h>
# include "util.h"
2005-09-20 23:26:39 +10:00
/**
2005-10-19 22:07:44 +10:00
Read commands from \ c fd until encountering EOF
2005-09-20 23:26:39 +10:00
*/
2005-10-19 22:07:44 +10:00
int reader_read ( int fd ) ;
2005-09-20 23:26:39 +10:00
/**
Tell the shell that it should exit after the currently running command finishes .
*/
2006-05-14 20:16:23 +10:00
void reader_exit ( int do_exit , int force ) ;
2005-09-20 23:26:39 +10:00
/**
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
*/
2006-02-03 01:23:56 +10:00
void reader_push_current_filename ( const wchar_t * fn ) ;
2005-09-20 23:26:39 +10:00
/**
Pop the current filename from the stack of read files
*/
wchar_t * reader_pop_current_filename ( ) ;
/**
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 .
*/
2006-06-22 00:03:44 +10:00
void reader_run_command ( const wchar_t * buff ) ;
2005-09-20 23:26:39 +10:00
/**
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 ( ) ;
/**
2006-10-05 07:42:04 +10:00
Return the value of the interrupted flag , which is set by the sigint
2005-09-20 23:26:39 +10:00
handler , and clear it if it was set .
*/
2006-10-05 07:42:04 +10:00
int reader_interrupted ( ) ;
2005-09-20 23:26:39 +10:00
/**
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 ( ) ;
/**
Replace the current token with the specified string
*/
void reader_replace_current_token ( wchar_t * new_token ) ;
2005-10-14 21:40:33 +10:00
/**
2006-10-05 07:42:04 +10:00
The readers interrupt signal handler . Cancels all currently running blocks .
2005-10-14 21:40:33 +10:00
*/
2005-10-06 08:37:08 +10:00
void reader_handle_int ( int signal ) ;
2006-05-14 20:16:23 +10:00
/**
This function returns true if fish is exiting by force , i . e . because stdin died
*/
int reader_exit_forced ( ) ;
2005-10-05 01:11:39 +10:00
# endif