📄 slang.h
字号:
extern SLang_Key_Type *SLang_do_key(SLKeyMap_List_Type *, int (*)(void));/* read a key using keymap p1 with getkey function p2 */extern FVOID_STAR SLang_find_key_function(char *, SLKeyMap_List_Type *);extern SLKeyMap_List_Type *SLang_find_keymap(char *);extern int SLang_Last_Key_Char;extern int SLang_Key_TimeOut_Flag;/*}}}*//*{{{ SLang Readline Interface */typedef struct SLang_Read_Line_Type{ struct SLang_Read_Line_Type *prev, *next; unsigned char *buf; int buf_len; /* number of chars in the buffer */ int num; /* num and misc are application specific*/ int misc;} SLang_Read_Line_Type;/* Maximum size of display */#define SLRL_DISPLAY_BUFFER_SIZE 256typedef struct{ SLang_Read_Line_Type *root, *tail, *last; unsigned char *buf; /* edit buffer */ int buf_len; /* sizeof buffer */ int point; /* current editing point */ int tab; /* tab width */ int len; /* current line size */ /* display variables */ int edit_width; /* length of display field */ int curs_pos; /* current column */ int start_column; /* column offset of display */ int dhscroll; /* amount to use for horiz scroll */ char *prompt; FVOID_STAR last_fun; /* last function executed by rl */ /* These two contain an image of what is on the display */ unsigned char upd_buf1[SLRL_DISPLAY_BUFFER_SIZE]; unsigned char upd_buf2[SLRL_DISPLAY_BUFFER_SIZE]; unsigned char *old_upd, *new_upd; /* pointers to previous two buffers */ int new_upd_len, old_upd_len; /* length of output buffers */ SLKeyMap_List_Type *keymap; /* tty variables */ unsigned int flags; /* */#define SL_RLINE_NO_ECHO 1#define SL_RLINE_USE_ANSI 2#define SL_RLINE_BLINK_MATCH 4 unsigned int (*getkey)(void); /* getkey function -- required */ void (*tt_goto_column)(int); void (*tt_insert)(char); void (*update_hook)(unsigned char *, int, int); /* The update hook is called with a pointer to a buffer p1 that contains * an image of what the update hook is suppoed to produce. The length * of the buffer is p2 and after the update, the cursor is to be placed * in column p3. */ /* This function is only called when blinking matches */ int (*input_pending)(int); unsigned long reserved[4];} SLang_RLine_Info_Type;extern int SLang_RL_EOF_Char;extern SLang_Read_Line_Type * SLang_rline_save_line (SLang_RLine_Info_Type *);extern int SLang_init_readline (SLang_RLine_Info_Type *);extern int SLang_read_line (SLang_RLine_Info_Type *);extern int SLang_rline_insert (char *);extern void SLrline_redraw (SLang_RLine_Info_Type *);extern int SLang_Rline_Quit;/*}}}*//*{{{ Low Level Screen Output Interface */extern unsigned long SLtt_Num_Chars_Output;extern int SLtt_Baud_Rate;typedef unsigned long SLtt_Char_Type;#define SLTT_BOLD_MASK 0x01000000UL#define SLTT_BLINK_MASK 0x02000000UL#define SLTT_ULINE_MASK 0x04000000UL#define SLTT_REV_MASK 0x08000000UL#define SLTT_ALTC_MASK 0x10000000ULextern int SLtt_Screen_Rows;extern int SLtt_Screen_Cols;extern int SLtt_Term_Cannot_Insert;extern int SLtt_Term_Cannot_Scroll;extern int SLtt_Use_Ansi_Colors;extern int SLtt_Ignore_Beep;#if defined(REAL_UNIX_SYSTEM)extern int SLtt_Force_Keypad_Init;extern int SLang_TT_Write_FD;#endif#ifndef IBMPC_SYSTEMextern char *SLtt_Graphics_Char_Pairs;#endif#ifndef __GO32__#if defined(VMS) || defined(REAL_UNIX_SYSTEM)extern int SLtt_Blink_Mode;extern int SLtt_Use_Blink_For_ACS;extern int SLtt_Newline_Ok;extern int SLtt_Has_Alt_Charset;extern int SLtt_Has_Status_Line; /* if 0, NO. If > 0, YES, IF -1, ?? */# ifndef VMSextern int SLtt_Try_Termcap;# endif#endif#endif#if defined(IBMPC_SYSTEM)extern int SLtt_Msdos_Cheap_Video;#endiftypedef unsigned short SLsmg_Char_Type;#define SLSMG_EXTRACT_CHAR(x) ((x) & 0xFF)#define SLSMG_EXTRACT_COLOR(x) (((x)>>8)&0xFF)#define SLSMG_BUILD_CHAR(ch,color) (((SLsmg_Char_Type)(unsigned char)(ch))|((color)<<8))extern int SLtt_flush_output (void);extern void SLtt_set_scroll_region(int, int);extern void SLtt_reset_scroll_region(void);extern void SLtt_reverse_video (int);extern void SLtt_bold_video (void);extern void SLtt_begin_insert(void);extern void SLtt_end_insert(void);extern void SLtt_del_eol(void);extern void SLtt_goto_rc (int, int);extern void SLtt_delete_nlines(int);extern void SLtt_delete_char(void);extern void SLtt_erase_line(void);extern void SLtt_normal_video(void);extern void SLtt_cls(void);extern void SLtt_beep(void);extern void SLtt_reverse_index(int);extern void SLtt_smart_puts(SLsmg_Char_Type *, SLsmg_Char_Type *, int, int);extern void SLtt_write_string (char *);extern void SLtt_putchar(char);extern int SLtt_init_video (void);extern int SLtt_reset_video (void);extern void SLtt_get_terminfo(void);extern void SLtt_get_screen_size (void);extern int SLtt_set_cursor_visibility (int);extern int SLtt_set_mouse_mode (int, int);#if defined(VMS) || defined(REAL_UNIX_SYSTEM)extern int SLtt_initialize (char *);extern void SLtt_enable_cursor_keys(void);extern void SLtt_set_term_vtxxx(int *);extern void SLtt_set_color_esc (int, char *);extern void SLtt_wide_width(void);extern void SLtt_narrow_width(void);extern void SLtt_set_alt_char_set (int);extern int SLtt_write_to_status_line (char *, int);extern void SLtt_disable_status_line (void);# ifdef REAL_UNIX_SYSTEM/* These are termcap/terminfo routines that assume SLtt_initialize has * been called. */extern char *SLtt_tgetstr (char *);extern int SLtt_tgetnum (char *);extern int SLtt_tgetflag (char *);/* The following are terminfo-only routines -- these prototypes will change * in V2.x. */extern char *SLtt_tigetent (char *);extern char *SLtt_tigetstr (char *, char **);extern int SLtt_tigetnum (char *, char **);# endif#endifextern SLtt_Char_Type SLtt_get_color_object (int);extern void SLtt_set_color_object (int, SLtt_Char_Type);extern void SLtt_set_color (int, char *, char *, char *);extern void SLtt_set_mono (int, char *, SLtt_Char_Type);extern void SLtt_add_color_attribute (int, SLtt_Char_Type);extern void SLtt_set_color_fgbg (int, SLtt_Char_Type, SLtt_Char_Type);/*}}}*//*{{{ SLang Preprocessor Interface */typedef struct{ int this_level; int exec_level; int prev_exec_level; char preprocess_char; char comment_char; unsigned char flags;#define SLPREP_BLANK_LINES_OK 1#define SLPREP_COMMENT_LINES_OK 2#define SLPREP_STOP_READING 4#define SLPREP_EMBEDDED_TEXT 8}SLPreprocess_Type;extern int SLprep_open_prep (SLPreprocess_Type *);extern void SLprep_close_prep (SLPreprocess_Type *);extern int SLprep_line_ok (char *, SLPreprocess_Type *); extern int SLdefine_for_ifdef (char *); /* Adds a string to the SLang #ifdef preparsing defines. SLang already defines MSDOS, UNIX, and VMS on the appropriate system. */extern int (*SLprep_exists_hook) (char *, char);/*}}}*//*{{{ SLsmg Screen Management Functions */extern void SLsmg_fill_region (int, int, unsigned int, unsigned int, unsigned char);extern void SLsmg_set_char_set (int);#ifndef IBMPC_SYSTEMextern int SLsmg_Scroll_Hash_Border;#endifextern int SLsmg_suspend_smg (void);extern int SLsmg_resume_smg (void);extern void SLsmg_erase_eol (void);extern void SLsmg_gotorc (int, int);extern void SLsmg_erase_eos (void);extern void SLsmg_reverse_video (void);extern void SLsmg_set_color (int);extern void SLsmg_normal_video (void);extern void SLsmg_printf (char *, ...) _SLATTRIBUTE_PRINTF(1,2);/* extern void SLsmg_printf (char *, ...) _SLATTRIBUTE_PRINTF(1,2); */extern void SLsmg_vprintf (char *, va_list);extern void SLsmg_write_string (char *);extern void SLsmg_write_nstring (char *, unsigned int);extern void SLsmg_write_char (char);extern void SLsmg_write_nchars (char *, unsigned int);extern void SLsmg_write_wrapped_string (char *, int, int, unsigned int, unsigned int, int);extern void SLsmg_cls (void);extern void SLsmg_refresh (void);extern void SLsmg_touch_lines (int, unsigned int);extern void SLsmg_touch_screen (void);extern int SLsmg_init_smg (void);extern int SLsmg_reinit_smg (void);extern void SLsmg_reset_smg (void);extern SLsmg_Char_Type SLsmg_char_at(void);extern void SLsmg_set_screen_start (int *, int *);extern void SLsmg_draw_hline (unsigned int);extern void SLsmg_draw_vline (int);extern void SLsmg_draw_object (int, int, unsigned char);extern void SLsmg_draw_box (int, int, unsigned int, unsigned int);extern int SLsmg_get_column(void);extern int SLsmg_get_row(void);extern void SLsmg_forward (int);extern void SLsmg_write_color_chars (SLsmg_Char_Type *, unsigned int);extern unsigned int SLsmg_read_raw (SLsmg_Char_Type *, unsigned int);extern unsigned int SLsmg_write_raw (SLsmg_Char_Type *, unsigned int);extern void SLsmg_set_color_in_region (int, int, int, unsigned int, unsigned int);extern int SLsmg_Display_Eight_Bit;extern int SLsmg_Tab_Width;#define SLSMG_NEWLINE_IGNORED 0 /* default */#define SLSMG_NEWLINE_MOVES 1 /* moves to next line, column 0 */#define SLSMG_NEWLINE_SCROLLS 2 /* moves but scrolls at bottom of screen */#define SLSMG_NEWLINE_PRINTABLE 3 /* prints as ^J */extern int SLsmg_Newline_Behavior;extern int SLsmg_Backspace_Moves;#ifdef IBMPC_SYSTEM# define SLSMG_HLINE_CHAR 0xC4# define SLSMG_VLINE_CHAR 0xB3# define SLSMG_ULCORN_CHAR 0xDA# define SLSMG_URCORN_CHAR 0xBF# define SLSMG_LLCORN_CHAR 0xC0# define SLSMG_LRCORN_CHAR 0xD9# define SLSMG_RTEE_CHAR 0xB4# define SLSMG_LTEE_CHAR 0xC3# define SLSMG_UTEE_CHAR 0xC2# define SLSMG_DTEE_CHAR 0xC1# define SLSMG_PLUS_CHAR 0xC5/* There are several to choose from: 0xB0, 0xB1, and 0xB2 */# define SLSMG_CKBRD_CHAR 0xB0# define SLSMG_DIAMOND_CHAR 0x04# define SLSMG_DEGREE_CHAR 0xF8# define SLSMG_PLMINUS_CHAR 0xF1# define SLSMG_BULLET_CHAR 0xF9# define SLSMG_LARROW_CHAR 0x1B# define SLSMG_RARROW_CHAR 0x1A# define SLSMG_DARROW_CHAR 0x19# define SLSMG_UARROW_CHAR 0x18# define SLSMG_BOARD_CHAR 0xB2# define SLSMG_BLOCK_CHAR 0xDB#else# if defined(AMIGA)# define SLSMG_HLINE_CHAR '-'# define SLSMG_VLINE_CHAR '|'# define SLSMG_ULCORN_CHAR '+'# define SLSMG_URCORN_CHAR '+'# define SLSMG_LLCORN_CHAR '+'# define SLSMG_LRCORN_CHAR '+'# define SLSMG_CKBRD_CHAR '#'# define SLSMG_RTEE_CHAR '+'# define SLSMG_LTEE_CHAR '+'# define SLSMG_UTEE_CHAR '+'# define SLSMG_DTEE_CHAR '+'# define SLSMG_PLUS_CHAR '+'# define SLSMG_DIAMOND_CHAR '+'# define SLSMG_DEGREE_CHAR '\\'# define SLSMG_PLMINUS_CHAR '#'# define SLSMG_BULLET_CHAR 'o'# define SLSMG_LARROW_CHAR '<'# define SLSMG_RARROW_CHAR '>'# define SLSMG_DARROW_CHAR 'v'# define SLSMG_UARROW_CHAR '^'# define SLSMG_BOARD_CHAR '#'# define SLSMG_BLOCK_CHAR '#'# else# define SLSMG_HLINE_CHAR 'q'# define SLSMG_VLINE_CHAR 'x'# define SLSMG_ULCORN_CHAR 'l'# define SLSMG_URCORN_CHAR 'k'# define SLSMG_LLCORN_CHAR 'm'# define SLSMG_LRCORN_CHAR 'j'# define SLSMG_CKBRD_CHAR 'a'# define SLSMG_RTEE_CHAR 'u'# define SLSMG_LTEE_CHAR 't'# define SLSMG_UTEE_CHAR 'w'# define SLSMG_DTEE_CHAR 'v'# define SLSMG_PLUS_CHAR 'n'# define SLSMG_DIAMOND_CHAR '`'# define SLSMG_DEGREE_CHAR 'f'# define SLSMG_PLMINUS_CHAR 'g'# define SLSMG_BULLET_CHAR '~'# define SLSMG_LARROW_CHAR ','# define SLSMG_RARROW_CHAR '+'# define SLSMG_DARROW_CHAR '.'# define SLSMG_UARROW_CHAR '-'# define SLSMG_BOARD_CHAR 'h'# define SLSMG_BLOCK_CHAR '0'# endif /* AMIGA */#endif /* IBMPC_SYSTEM */#ifndef IBMPC_SYSTEM# define SLSMG_COLOR_BLACK 0x000000# define SLSMG_COLOR_RED 0x000001# define SLSMG_COLOR_GREEN 0x000002# define SLSMG_COLOR_BROWN 0x000003# define SLSMG_COLOR_BLUE 0x000004# define SLSMG_COLOR_MAGENTA 0x000005# define SLSMG_COLOR_CYAN 0x000006# define SLSMG_COLOR_LGRAY 0x000007# define SLSMG_COLOR_GRAY 0x000008# define SLSMG_COLOR_BRIGHT_RED 0x000009# define SLSMG_COLOR_BRIGHT_GREEN 0x00000A# define SLSMG_COLOR_BRIGHT_BROWN 0x00000B# define SLSMG_COLOR_BRIGHT_BLUE 0x00000C# define SLSMG_COLOR_BRIGHT_CYAN 0x00000D# define SLSMG_COLOR_BRIGHT_MAGENTA 0x00000E# define SLSMG_COLOR_BRIGHT_WHITE 0x00000F#endiftypedef struct{ void (*tt_normal_video)(void); void (*tt_set_scroll_region)(int, int); void (*tt_goto_rc)(int, int); void (*tt_reverse_index)(int); void (*tt_reset_scroll_region)(void); void (*tt_delete_nlines)(int); void (*tt_cls) (void); void (*tt_del_eol) (void); void (*tt_smart_puts) (SLsmg_Char_Type *, SLsmg_Char_Type *, int, int); int (*tt_flush_output) (void); int (*tt_reset_video) (void); int (*tt_init_video) (void); int *tt_screen_rows; int *tt_screen_cols; int *tt_term_cannot_scroll; int *tt_has_alt_charset; int *tt_use_blink_for_acs; char **tt_graphic_char_pairs; long reserved[4];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -