#include<ctype.h>#include<stdlib.h>#include"yank.h"#include"marks.h"#include"cmds.h"#include"conf.h"#include"screen.h"#include"color.h" // for set_ucolor#include"cmds_edit.h"#include"history.h"#include"hide_show.h"#include"shift.h"#include"main.h" // for winchg#include"interp.h"#include"utils/extra.h"#ifdef UNDO#include"undo.h"#endif#include"dep_graph.h"externgraphADTgraph;externcharvalores;externintcmd_multiplier;externstructhistory*commandline_history;externvoidstart_visualmode(inttlrow,inttlcol,intbrrow,intbrcol);wchar_tinterp_line[BUFFERSIZE];voiddo_normalmode(structblock*buf){intbs=get_bufsize(buf);structent*e;switch(buf->value){/* TEST case L'A': break; case L'W': break; case L'Q': break; */// MOVEMENT COMMANDScaseL'j':caseOKEY_DOWN:lastcol=curcol;lastrow=currow;currow=forw_row(1)->row;unselect_ranges();update(TRUE);break;caseL'k':caseOKEY_UP:lastcol=curcol;lastrow=currow;currow=back_row(1)->row;unselect_ranges();update(TRUE);break;caseL'h':caseOKEY_LEFT:lastrow=currow;lastcol=curcol;curcol=back_col(1)->col;unselect_ranges();update(TRUE);break;caseL'l':caseOKEY_RIGHT:lastrow=currow;lastcol=curcol;curcol=forw_col(1)->col;unselect_ranges();update(TRUE);break;caseL'0':if(atoi(get_conf_value("numeric_zero"))==1)gotonumeric;caseOKEY_HOME:lastrow=currow;lastcol=curcol;curcol=left_limit()->col;unselect_ranges();update(TRUE);break;caseL'$':caseOKEY_END:lastrow=currow;lastcol=curcol;curcol=right_limit()->col;unselect_ranges();update(TRUE);break;caseL'^':lastcol=curcol;lastrow=currow;currow=goto_top()->row;unselect_ranges();update(TRUE);break;caseL'#':lastcol=curcol;lastrow=currow;currow=goto_bottom()->row;if(currow==lastrow&&curcol==lastcol)currow=go_end()->row;unselect_ranges();update(TRUE);break;// TickcaseL'\'':if(bs!=2)break;unselect_ranges();e=tick(buf->pnext->value);if(row_hidden[e->row