static void bstack_paste() { char buf[MAXEDITLINE+1], buf_a[MAXEDITLINE+1]; const char *q; EditLine *ed,*edn; if (bstack_nums==0) return; q=bstack[bstack_nums-1].s; csr_leupdate(); if (bstack[bstack_nums-1].blkm==BLKM_y) { edn=ed=GetList(GetLineOffset()-1); for(;;) { q=str_paste(buf, q); if (q==NULL) break; InsertLine(ed, MakeLine(buf)); ed=ed->next; } csrse.ed = edn -> next; } else { ed=GetList(GetLineOffset()); strcpy(buf, ed->buffer); buf[GetBufferOffset()]='\0'; strcpy(buf_a, ed->buffer+GetBufferOffset()); q=str_paste(buf+GetBufferOffset(), q); if (q==NULL) { strcat(buf, buf_a); Realloc(ed, buf); } else { Realloc(ed, buf); for(;;) { q=str_paste(buf, q); if (q==NULL) break; InsertLine(ed, MakeLine(buf)); ed=ed->next; } strcat(buf, buf_a); InsertLine(ed, MakeLine(buf)); } } SetFileChangeFlag(); csr_lenew(); OffsetSetByColumn(); }
void block_cmove() { if (blck.blkm==BLKM_none) return; if (blck.y_ed != GetLineOffset()) blck.blkm= BLKM_y; else { if (blck.x_ed != GetBufferOffset()) blck.blkm= BLKM_x; } blck.x_ed= GetBufferOffset(); blck.y_ed= GetLineOffset(); }
int IsKanjiPosition() { int i; i=GetBufferOffset(); return i+1<=strlen(csrle.buf) && iskanji(csrle.buf[i]) && iskanji(csrle.buf[i+1]); }
SHELL void op_block_chlast() { long a; int b; blkm_t blkm; if (blck.blkm!=BLKM_none) { a=blck.y_st; blck.y_st=GetLineOffset(); b=blck.x_st; blck.x_st=GetBufferOffset(); blkm=blck.blkm; csr_setly(a); csr_setlx(b); blck.blkm=blkm; } }