...
|
...
|
@@ -680,18 +680,23 @@ fprintf(stderr,"SDL_KEYDOWN: BACKSPACE%s\n",(event==&fakeevent)?" (fake)":"");
|
680
|
680
|
re->headerdirty=1;
|
681
|
681
|
re->contentsdirty=1;
|
682
|
682
|
} else if(event->key.keysym.sym==SDLK_q && (SDL_GetModState()&KMOD_CTRL)!=0) {
|
683
|
|
-fprintf(stderr,"re_processkey(): received Control+q\n");
|
684
|
683
|
re->command="";
|
685
|
684
|
re->command_first_key='q';
|
686
|
685
|
re->headerdirty=1;
|
|
686
|
+ } else if(event->key.keysym.sym==SDLK_F2 || (event->key.keysym.sym==SDLK_s && (SDL_GetModState()&KMOD_CTRL)!=0)) {
|
|
687
|
+ char *errormsg=NULL;
|
|
688
|
+ if(redata_save(re->data,re->filename,&errormsg)!=-1)
|
|
689
|
+ errormsg="File saved";
|
|
690
|
+ re->command=COMMAND_WARNING;
|
|
691
|
+ snprintf(re->commandbuf,sizeof(re->commandbuf),errormsg);
|
|
692
|
+ re->commandbuf[sizeof(re->commandbuf)-1]='\0';
|
|
693
|
+ re->headerdirty=1;
|
687
|
694
|
} else if(event->key.keysym.sym==SDLK_k && (SDL_GetModState()&KMOD_CTRL)!=0) {
|
688
|
|
-fprintf(stderr,"re_processkey(): received Control+k\n");
|
689
|
695
|
re->command="";
|
690
|
696
|
re->command_first_key='k';
|
691
|
697
|
re->headerdirty=1;
|
692
|
698
|
} else if(event->key.keysym.sym==SDLK_z && (SDL_GetModState()&KMOD_CTRL)!=0) {
|
693
|
699
|
long newpos;
|
694
|
|
-fprintf(stderr,"re_processkey(): received Control+z\n");
|
695
|
700
|
if(redata_op_undo(re->data,&newpos))
|
696
|
701
|
return(-1);
|
697
|
702
|
re->cursorpos=newpos;
|
...
|
...
|
@@ -701,7 +706,6 @@ fprintf(stderr,"re_processkey(): received Control+z\n");
|
701
|
706
|
re->contentsdirty=1;
|
702
|
707
|
} else if(event->key.keysym.sym==SDLK_l && (SDL_GetModState()&KMOD_CTRL)!=0 && re->cachelastsearch[0]!='\0') {
|
703
|
708
|
long newpos;
|
704
|
|
-fprintf(stderr,"re_processkey(): received Control+l\n");
|
705
|
709
|
/* search next (forward) */
|
706
|
710
|
if((newpos=redata_searchforward(re->data,re->cursorpos+1,re->cachelastsearch,strlen(re->cachelastsearch)))==-1) {
|
707
|
711
|
re->command=COMMAND_WARNING;
|
...
|
...
|
@@ -716,23 +720,19 @@ fprintf(stderr,"re_processkey(): received Control+l\n");
|
716
|
720
|
re->headerdirty=1;
|
717
|
721
|
re->contentsdirty=1;
|
718
|
722
|
} else if(event->key.keysym.sym==SDLK_PLUS && (SDL_GetModState()&KMOD_CTRL)!=0) {
|
719
|
|
-fprintf(stderr,"re_processkey(): received Control+'+'\n");
|
720
|
723
|
re_changefontsize(re, 1);
|
721
|
724
|
re->ignorenkeys++;
|
722
|
725
|
} else if(event->key.keysym.sym==SDLK_MINUS && (SDL_GetModState()&KMOD_CTRL)!=0) {
|
723
|
|
-fprintf(stderr,"re_processkey(): received Control+'-'\n");
|
724
|
726
|
re_changefontsize(re, -1);
|
725
|
727
|
re->ignorenkeys++;
|
726
|
728
|
} else if(event->key.keysym.sym==SDLK_0 && (SDL_GetModState()&KMOD_CTRL)!=0) {
|
727
|
|
-fprintf(stderr,"re_processkey(): received Control+'0'\n");
|
728
|
729
|
re_changefontsize(re, 0);
|
729
|
730
|
re->ignorenkeys++;
|
730
|
731
|
} else if((event->key.keysym.sym==SDLK_c || event->key.keysym.sym==SDLK_x) && (SDL_GetModState()&KMOD_CTRL)!=0) {
|
731
|
732
|
long frompos,topos;
|
732
|
733
|
int coldone;
|
733
|
734
|
int is_cut=(event->key.keysym.sym==SDLK_x)?1:0;
|
734
|
|
-fprintf(stderr,"re_processkey(): received Control+%c\n",is_cut?'x':'c');
|
735
|
|
- /* CUA92-style copy (ctrl+c) / cut (ctrl+x) */
|
|
735
|
+ /* Mac-HIG/OpenLook-style copy (ctrl+c) / cut (ctrl+x) */
|
736
|
736
|
if(re->selactive
|
737
|
737
|
&& redata_linecol2pos(re->data,re->sellinefrom,re->selcolfrom,&frompos,NULL)==0
|
738
|
738
|
&& redata_linecol2pos(re->data,re->sellineto,re->selcolto,&topos,&coldone)==0) {
|
...
|
...
|
@@ -753,7 +753,7 @@ fprintf(stderr,"re_processkey(): received Control+%c\n",is_cut?'x':'c');
|
753
|
753
|
re->ignorenkeys++;
|
754
|
754
|
} else if(event->key.keysym.sym==SDLK_v && (SDL_GetModState()&KMOD_CTRL)!=0) {
|
755
|
755
|
fprintf(stderr,"re_processkey(): received Control+v\n");
|
756
|
|
- /* CUA92-style paste (ctrl+v)*/
|
|
756
|
+ /* Mac-HIG/OpenLook-style paste (ctrl+v)*/
|
757
|
757
|
if(re->selactive)
|
758
|
758
|
re_sel_toggle(re);
|
759
|
759
|
if(SDL_HasClipboardText())
|
...
|
...
|
@@ -1023,16 +1023,10 @@ re_processcommand(re_t *re)
|
1023
|
1023
|
;(oldpos+slen)<endpos && (newpos=redata_searchforward(re->data,oldpos,re->cachelastsearch,slen))!=-1
|
1024
|
1024
|
&& (newpos+slen)<=endpos
|
1025
|
1025
|
;total++,oldpos=newpos+rlen) {
|
1026
|
|
-#if 1
|
1027
|
|
-fprintf(stderr,"substituting %i bytes for %i bytes ar position:%li\n",slen,rlen,newpos);
|
1028
|
|
-#endif
|
1029
|
1026
|
redata_op_del(re->data,newpos,slen,NULL);
|
1030
|
1027
|
redata_op_add(re->data,newpos,re->cachelastreplacewith,rlen,NULL);
|
1031
|
1028
|
}
|
1032
|
1029
|
redata_undo_groupcommit(re->data,NULL);
|
1033
|
|
-#if 1
|
1034
|
|
-fprintf(stderr,"oldpos:%li\n",oldpos);
|
1035
|
|
-#endif
|
1036
|
1030
|
re->cursorpos=oldpos;
|
1037
|
1031
|
redata_pos2linecol(re->data,re->cursorpos,&(re->curline),&(re->curcol));
|
1038
|
1032
|
re_fixorigin_center(re);
|
...
|
...
|
@@ -1531,7 +1525,10 @@ re_drawheader_editing(re_t *re)
|
1531
|
1525
|
line=col=-1;
|
1532
|
1526
|
reui_fill(re->ui,0,0,re->ui->w,re->ui->fontheight,COLOR_STATUSBG);
|
1533
|
1527
|
/* for the user, lines start at 0 (internally they start at 0) */
|
1534
|
|
- reui_printf(re->ui,0,0,COLOR_STATUSFG,"File: %s Line:%i (%i) Col:%i (%i) Pos:%li Size:%li",re->filename,re->curline+1,line+1,re->curcol+1,col+1,re->cursorpos,redata_getused(re->data));
|
|
1528
|
+ reui_printf(re->ui,0,0,COLOR_STATUSFG,"File: %s Line:%i (%i) Col:%i (%i) Pos:%li Size:%li %s"
|
|
1529
|
+ ,re->filename,re->curline+1,line+1,re->curcol+1,col+1,re->cursorpos,redata_getused(re->data)
|
|
1530
|
+ ,"");
|
|
1531
|
+#warning #error MAKE THE PREVIOUS LINE LAST %s print: "CHANGED" when unsaved¬-in-reu, "changed" when unsaved but is in reu, "saved" when it is saved.
|
1535
|
1532
|
re->headerdirty=0;
|
1536
|
1533
|
re->ui->rendererdirty=1;
|
1537
|
1534
|
return(0);
|