⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 control.c

📁 aee是一种易使用的文本编辑器。你可以不用说明书来使用它。它提供终端接口和本地的X-windows接口。它的特性包括即弹的菜单
💻 C
📖 第 1 页 / 共 4 页
字号:
		if (*cmd_str2 == (char) NULL)		{			alloc_space = TRUE;			cmd_str2 = get_string(file_read_prompt_str, TRUE);		}		tmp = cmd_str2;		while ((*tmp != ' ') && (*tmp != '\t') && (*tmp != (char) NULL))			tmp++;		*tmp = (char) NULL;		tmp_file = resolve_name(cmd_str2);		recv_file = TRUE;		value = check_fp();		if (tmp_file != cmd_str2)			free(tmp_file);		if (alloc_space)			free(cmd_str2);	}	else if (compare(cmd_str, SAVE_str, FALSE))		file_op(SAVE_FILE);	else if (compare(cmd_str, LITERAL_str, FALSE))		literal = TRUE;	else if (compare(cmd_str, NOLITERAL_str, FALSE))		literal = FALSE;	else if (compare(cmd_str, STATUS_str, FALSE))		status_line = TRUE;	else if (compare(cmd_str, NOSTATUS_str, FALSE))		status_line = FALSE;	else if (compare(cmd_str, MARGINS_str, FALSE))		observ_margins = TRUE;	else if (compare(cmd_str, NOMARGINS_str, FALSE))		observ_margins = FALSE;	else if (compare(cmd_str, INDENT_str, FALSE))		indent = TRUE;	else if (compare(cmd_str, NOINDENT_str, FALSE))		indent = FALSE;	else if (compare(cmd_str, OVERSTRIKE_str, FALSE))		overstrike = TRUE;	else if (compare(cmd_str, NOOVERSTRIKE_str, FALSE))		overstrike = FALSE;	else if (compare(cmd_str, text_cmd, FALSE))		text_only = TRUE;	else if (compare(cmd_str, binary_cmd, FALSE))		text_only = FALSE;	else if (compare(cmd_str, info_win_height_cmd_str,  FALSE))	{		temp_int = info_win_height;		tmp = next_word(cmd_str);		if ((*tmp >= '0') && (*tmp <= '9'))		{			c_int = atoi(tmp);			if ((c_int > 0) && (c_int <= MAX_HELP_LINES))				info_win_height = c_int + 1;			else			{				wmove(com_win, 0, 0);				werase(com_win);				wprintw(com_win, info_win_height_err);				wrefresh(com_win);			}			if ((info_win_height != temp_int) && (info_window))			{				redo_win();				curr_buff->last_line = curr_buff->lines - 1;				new_screen();				paint_info_win();				redraw();			}		}		else		{			werase(com_win);			wmove(com_win, 0, 0);			wprintw(com_win, "%s %d", info_win_height_msg_str, (info_win_height - 1));			wrefresh(com_win);		}	}	else if ((compare(cmd_str, LEFTMARGIN_str, FALSE)) || (compare(cmd_str, RIGHTMARGIN_str, FALSE)))	{		tmp = next_word(cmd_str);		if ((*tmp >= '0') && (*tmp <= '9'))		{			c_int = atoi(tmp);			if (compare(cmd_str, LEFTMARGIN_str, FALSE))			{				if (c_int > right_margin)				{					wmove(com_win, 0, 0);					wclrtoeol(com_win);					wprintw(com_win, left_mrg_err_msg);				}				else					left_margin = c_int;			}			else if (compare(cmd_str, RIGHTMARGIN_str, FALSE))			{				if (c_int < left_margin)				{					wmove(com_win, 0, 0);					wclrtoeol(com_win);					wprintw(com_win, right_mrg_err_msg);				}				else					right_margin = c_int;			}		}		else		{			wmove(com_win, 0, 0);			wclrtoeol(com_win);			if (compare(cmd_str, LEFTMARGIN_str, FALSE))				wprintw(com_win, left_mrg_setting, left_margin);			else if (compare(cmd_str, RIGHTMARGIN_str, FALSE))				wprintw(com_win, right_mrg_setting, right_margin);		}	}	else if (compare(cmd_str, LINE_str, FALSE))	{		wmove(com_win,0,0);		wclrtoeol(com_win);		wprintw(com_win, line_num_str, curr_buff->curr_line->line_number);		wprintw(com_win, lines_from_top, curr_buff->absolute_lin);		wprintw(com_win, total_lines_str, curr_buff->num_of_lines);	}	else if (compare(cmd_str, FILE_str, FALSE))	{		wmove(com_win,0,0);		wclrtoeol(com_win);		if (curr_buff->edit_buffer)		{			if (curr_buff->file_name != NULL)			{				wprintw(com_win, current_file_str, curr_buff->full_name);			}			else			{				wprintw(com_win, current_file_str, no_file_string );			}		}		else		{			if (first_buff->file_name != NULL)			{				wprintw(com_win, current_file_str, first_buff->full_name);			}			else			{				wprintw(com_win, current_file_str, no_file_string );			}		}	}	else if (compare(cmd_str, COPYRIGHT_str, FALSE))	{		wmove(com_win,0,0);		wclrtoeol(com_win);		wprintw(com_win, "%s", copyright_notice);	}	else if ((*cmd_str >= '0') && (*cmd_str <= '9'))		goto_line(cmd_str);	else if ((*cmd_str == '+') || (*cmd_str == '-'))	{		if (*cmd_str == '+')			dir = 'd';		else			dir = 'u';		cmd_str++;		if ((*cmd_str == ' ') || (*cmd_str == '\t'))			cmd_str = next_word(cmd_str);		value = 0;		while ((*cmd_str >='0') && (*cmd_str <= '9'))		{			value = value * 10 + (*cmd_str - '0');			cmd_str++;		}		move_rel(&dir, value);		werase(com_win);		wmove(com_win, 0,0);		wprintw(com_win, line_num_str, curr_buff->curr_line->line_number);		wrefresh(com_win);	}	else if (compare(cmd_str, CHARACTER_str, FALSE))	{		wmove(com_win,0,0);		wclrtoeol(com_win);		if (*curr_buff->pointer >= 0)			wprintw(com_win, char_str, *curr_buff->pointer);		else			wprintw(com_win, char_str, (*curr_buff->pointer+256));	}	else if (compare(cmd_str, REDRAW_str, FALSE))	{		clearok(curr_buff->win, TRUE);		redraw();	}	else if (compare(cmd_str, RESEQUENCE_str, FALSE))	{		tmp_line = curr_buff->first_line->next_line;		while (tmp_line != NULL)		{			tmp_line->line_number = tmp_line->prev_line->line_number + 1;			tmp_line = tmp_line->next_line;		}	}	else if (compare(cmd_str, AUTHOR_str, FALSE))	{		wmove(com_win,0,0);		wclrtoeol(com_win);		wprintw(com_win, "written by Hugh Mahon");	}	else if (compare(cmd_str, VERSION_str, FALSE))	{		wmove(com_win,0,0);		wclrtoeol(com_win);		wprintw(com_win, version_string);	}	else if (compare(cmd_str, CASE_str, FALSE))		case_sen = TRUE;	else if (compare(cmd_str, NOCASE_str, FALSE))		case_sen = FALSE;	else if (compare(cmd_str, EIGHT_str, FALSE))	{		eightbit = TRUE;		new_screen();	}	else if (compare(cmd_str, NOEIGHT_str, FALSE))	{		eightbit = FALSE;		new_screen();	}	else if (compare(cmd_str, WINDOWS_str, FALSE))		make_win();	else if (compare(cmd_str, NOWINDOWS_str, FALSE))		no_windows();	else if (compare(cmd_str, DEFINE_str, FALSE))	{		cmd_str = next_word(cmd_str);		def_key(cmd_str);	}	else if (compare(cmd_str, SHOW_str, FALSE))	{		cmd_str = next_word(cmd_str);		if (compare(cmd_str, GOLD_str, FALSE))		{			cmd_str = next_word(cmd_str);			gold_flag = TRUE;		}		else			gold_flag = FALSE;		if (toupper(*cmd_str) == 'F')		{			cmd_str++;			c_int = 0;			while ((*cmd_str >= '0') && (*cmd_str <= '9'))			{				c_int = c_int * 10 + (*cmd_str - '0');				cmd_str++;			}			if (c_int < 65)			{				if (gold_flag)					c_temp = g_f[c_int];				else					c_temp = f[c_int];				werase(com_win);				wmove(com_win, 0,0);				wprintw(com_win, key_def_msg, c_temp);			}			else			{				wmove(com_win,0,0);				wclrtoeol(com_win);				wprintw(com_win, unkn_syntax_msg, cmd_str);			}		}		if (toupper(*cmd_str) == 'K')		{			cmd_str++;			c_int = 0;			while ((*cmd_str >= '0') && (*cmd_str <= '9'))			{				c_int = c_int * 10 + (*cmd_str - '0');				cmd_str++;			}			if (c_int < 5)			{				if (gold_flag)					c_temp = g_keypads[c_int];				else					c_temp = keypads[c_int];				werase(com_win);				wmove(com_win, 0,0);				wprintw(com_win, key_def_msg, c_temp);			}			else			{				wmove(com_win,0,0);				wclrtoeol(com_win);				wprintw(com_win, unkn_syntax_msg, cmd_str);			}		}		else if (*cmd_str == '^')		{			cmd_str++;			if (*cmd_str == '?')				c_int = 31;			else				c_int = toupper(*cmd_str) - 'A';			if ((c_int != 8)&& (c_int != 16) && (c_int != 18) && ((c_int >= 0) && (c_int < 32)))			{				if (gold_flag)					c_temp = g_ctr[c_int];				else					c_temp = ctr[c_int];				werase(com_win);				wmove(com_win, 0,0);				wprintw(com_win, key_def_msg, c_temp);			}			else			{				wmove(com_win,0,0);				wclrtoeol(com_win);				wprintw(com_win, unkn_syntax_msg, cmd_str);			}		}		wrefresh(com_win);	}	else if (compare(cmd_str, HELP_str, FALSE))		help();	else if (compare(cmd_str, PRINT_str, FALSE))	{		print_buffer();	}	else if ((*cmd_str == '<') && (!in_pipe))	{		in_pipe = TRUE;		shell_fork = FALSE;		cmd_str++;		if ((*cmd_str == ' ') || (*cmd_str == '\t'))			cmd_str = next_word(cmd_str);		c_int = 0;		in_buff_name[c_int] = (char) NULL;		while ((*cmd_str != '!') && (*cmd_str != '>') && (*cmd_str != '<') && (*cmd_str != ' ') && (*cmd_str != '\t') && (*cmd_str != (char) NULL))		{			in_buff_name[c_int] = *cmd_str;			cmd_str++;			c_int++;		}		if (c_int == 0)		{			copy_str(curr_buff->name, in_buff_name);		}		else			in_buff_name[c_int] = (char) NULL;		if ((*cmd_str == ' ') || (*cmd_str == '\t'))			cmd_str = next_word(cmd_str);		command(cmd_str);		in_pipe = FALSE;		shell_fork = TRUE;	}	else if ((*cmd_str == '>') && (!out_pipe))	{		out_pipe = TRUE;		cmd_str++;		if ((*cmd_str == ' ') || (*cmd_str == '\t'))			cmd_str = next_word(cmd_str);		c_int = 0;		out_buff_name[c_int] = (char) NULL;		while ((*cmd_str != '!') && (*cmd_str != '>') && (*cmd_str != '<') && (*cmd_str != ' ') && (*cmd_str != '\t') && (*cmd_str != (char) NULL))		{			out_buff_name[c_int] = *cmd_str;			cmd_str++;			c_int++;		}		if (c_int == 0)		{			copy_str(curr_buff->name, out_buff_name);		}		else			out_buff_name[c_int] = (char) NULL;		if ((*cmd_str == ' ') || (*cmd_str == '\t'))			cmd_str = next_word(cmd_str);		command(cmd_str);		out_pipe = FALSE;	}	else if (*cmd_str == '!')	{		cmd_str++;		if ((*cmd_str == ' ') || (*cmd_str == 9))			cmd_str = next_word(cmd_str);		sh_command(cmd_str);	}	else if (compare(cmd_str, BUFFER_str, FALSE))	{		cmd_str = next_word(cmd_str);		if (*cmd_str == (char) NULL)		{			wmove(com_win,0,0);			wclrtoeol(com_win);			wprintw(com_win, current_buff_msg, curr_buff->name);		}		else		{			tmp = cmd_str;			while ((*tmp != ' ') && (*tmp != '\t') && (*tmp != (char) NULL))				tmp++;			*tmp = (char) NULL;			chng_buf(cmd_str);		}	}	else if (compare(cmd_str, DELETE_str, FALSE))	{		if (!strncmp(curr_buff->name, main_buffer_name, 						strlen(main_buffer_name)))		{			wmove(com_win,0,0);			wclrtoeol(com_win);			wprintw(com_win, cant_del_buf_msg, main_buffer_name);		}		else			del_buf();	}	else if (compare(cmd_str, CD_str, FALSE))	{		if (restrict_mode())		{			return;		}		cmd_str = next_word(cmd_str);		if (change_dir_allowed != TRUE)		{			wmove(com_win,0,0);			wclrtoeol(com_win);			wprintw(com_win, no_chng_dir_msg);		}		else if ((curr_buff->orig_dir == NULL) && (*cmd_str == (char) NULL))		{			wmove(com_win,0,0);			wclrtoeol(com_win);			wprintw(com_win, no_dir_entered_msg);		}		else		{			if (*cmd_str != (char)NULL)				c_temp = cmd_str;			else				c_temp = curr_buff->orig_dir;			tmp = c_temp;			while ((*tmp != ' ') && (*tmp != '\t') && (*tmp != (char) NULL))				tmp++;			*tmp = (char) NULL;			name = resolve_name(c_temp);			retval = chdir(name);			if (name != c_temp)				free(name);			if (retval == -1)			{				werase(com_win);				wmove(com_win, 0, 0);				if (errno == ENOTDIR)					wprintw(com_win, path_not_dir_msg);				else if (errno == EACCES)					wprintw(com_win, path_not_permitted_msg);				else 					wprintw(com_win, path_chng_failed_msg);			}		}	}	else if (compare(cmd_str, edit_cmd_str, FALSE))	{		cmd_str2 = next_word(cmd_str);		if (cmd_str2 != NULL)		{			if (*cmd_str != (char)NULL)				c_temp = cmd_str2;			tmp = c_temp;			while ((*tmp != ' ') && (*tmp != '\t') && (*tmp != (char) NULL))				tmp++;			*tmp = (char) NULL;			if (*c_temp != (char) NULL)				name = resolve_name(c_temp);			else				name = c_temp;			retval = open_for_edit(name);			if (name != c_temp)				free(name);		}	}	else if (compare(cmd_str, pwd_cmd_str, FALSE))	{		show_pwd();	}	else	{		wmove(com_win,0,0);		wclrtoeol(com_win);		wprintw(com_win, unkn_cmd_msg, cmd_str2);	}}void init_keys()		/* initialize control keys and function keys	*/{	int counter;	ctr[0] = fn_AC_str;	/* control a */	ctr[1] = fn_EOT_str;	/* control b */	ctr[2] = fn_COPY_str;	/* control c */	ctr[3] = fn_BOL_str; 	/* control d */	ctr[4] = fn_CMD_str; 	/* control e */	ctr[5] = fn_SRCH_str;	/* control f */	ctr[6] = fn_GOLD_str;	/* control g */	ctr[7] = fn_BCK_str;	/* control h */	/* backspace	*/	ctr[8] = "";		/* control i */	/* tab		*/	ctr[9] = fn_CR_str;	/* control j */	/* new-line	*/	ctr[10] = fn_DC_str; 	/* control k */	ctr[11] = fn_DL_str; 	/* control l */	ctr[12] = fn_CR_str;	/* control m */	/* carriage-return	*/	ctr[13] = fn_NP_str; 	/* control n */	ctr[14] = fn_EOL_str;	/* control o */	ctr[15] = fn_PP_str; 	/* control p */	ctr[16] = "";		/* control q */	ctr[17] = fn_RD_str; 	/* control r */	ctr[18] = "";		/* control s */	ctr[19] = fn_BOT_str;	/* control t */	ctr[20] = fn_MARK_str;	/* control u */	ctr[21] = fn_PST_str;	/* control v */	ctr[22] = fn_DW_str; 	/* control w */	ctr[23] = fn_CUT_str;	/* control x */	ctr[24] = fn_AW_str; 	/* control y */	ctr[25] = fn_RP_str; 	/* control z */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -