Team Ai
Datasetpublic

hschumann2/TempleOS-Source-Code

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes847downloads
DocClipBoard.txt127 linesDownload Raw Back to DolDoc
1 2#help_index "DolDoc/Clip"3 4sys_clip_doc=DocNew;5 6public U0 ClipDel()7{//Delete everything on clip.8  DocRst(sys_clip_doc,TRUE);9}10 11public U0 ClipCopy(CDoc *doc)12{//Copy DOCET_SEL flagged entries to clip.13  CDoc *doc2=sys_clip_doc;14  Bool unlock_doc=DocLock(doc),15        unlock_doc2=DocLock(doc2);16  CDocEntry *doc_e=doc->head.next,*doc_ne;17  ClipDel;18  while (doc_e!=doc) {19    if (doc_e->type & DOCET_SEL) {20      doc_e->type&=~DOCET_SEL;21      if (!Bt(doldoc.type_flags_data,doc_e->type_u8)) {22        doc_ne=DocEntryCopy(doc2,doc_e);23        QueIns(doc_ne,doc2->head.last);24      }25    }26    doc_e=doc_e->next;27  }28  if (unlock_doc2)29    DocUnlock(doc2);30  if (unlock_doc)31    DocUnlock(doc);32}33 34public U0 ClipCut(CDoc *doc)35{//Remove sel entries and place on clip.36  CDoc *doc2=sys_clip_doc;37  Bool unlock_doc=DocLock(doc),38        unlock_doc2=DocLock(doc2);39  CDocEntry *doc_e=doc->head.next,*doc_e1,*doc_ne,*doc_e2=NULL;40  ClipDel;41  while (doc_e!=doc) {42    doc_e1=doc_e->next;43    if (doc_e->type & DOCET_SEL) {44      doc_e->type&=~DOCET_SEL;45      if (!Bt(doldoc.type_flags_data,doc_e->type_u8)) {46        doc_ne=DocEntryCopy(doc2,doc_e);47        QueIns(doc_ne,doc2->head.last);48      }49      if (doc_e==doc->cur_entry || doc_e==doc_e2)50        doc_e2=doc_e->next;51      DocEntryDel(doc,doc_e);52    }53    doc_e=doc_e1;54  }55  if (doc_e2) {56    doc->cur_entry=doc_e2;57    doc->cur_col=doc_e2->min_col;58  }59  DocRemSoftNewLines(doc,NULL);60  if (unlock_doc2)61    DocUnlock(doc2);62  if (unlock_doc)63    DocUnlock(doc);64}65 66public U0 ClipPaste(CDoc *doc)67{//Insert copy of clip at insert pt, cur_entry.68  CDoc *doc2=sys_clip_doc;69  Bool unlock_doc=DocLock(doc),70        unlock_doc2=DocLock(doc2);71  CDocEntry *doc_ce=doc->cur_entry,*doc_e;72  if (doc_ce->type_u8==DOCT_DATA) {73    doc_e=doc2->head.next;74    while (doc_e!=doc2) {75      if (doc_e->de_flags&DOCEF_TAG)76        DocPrintPartial(doc,"%s",doc_e->tag);77      doc_e=doc_e->next;78    }79  } else80    DocInsDoc(doc,doc2);81  if (unlock_doc2)82    DocUnlock(doc2);83  if (unlock_doc)84    DocUnlock(doc);85}86 87public U0 DocCut(CDoc *doc,CDocEntry *start,CDocEntry *end)88{//Del start to end entry, including end points.89  Bool unlock_doc=DocLock(doc);90  CDocEntry *doc_e1;91  if (start!=doc && (start->last!=end || end==doc))92    do {93      doc_e1=start->next;94      if (start==doc->cur_entry) {95        doc->cur_entry=start->next;96        doc->cur_col=doc->cur_entry->min_col;97      }98      DocEntryDel(doc,start);99      if (start==end)100        break;101      start=doc_e1;102    } while (start!=doc);103  DocRemSoftNewLines(doc,NULL);104  if (unlock_doc)105    DocUnlock(doc);106}107 108public CDoc *DocCopy(CDoc *doc,CDocEntry *start,CDocEntry *end)109{//Copies start to end entry, including end points.110  CDoc *doc2=DocNew;111  Bool unlock_doc=DocLock(doc);112  CDocEntry *doc_ne;113  if (start!=doc && (start->last!=end || end==doc))114    do {115      if (!Bt(doldoc.type_flags_data,start->type_u8)) {116        doc_ne=DocEntryCopy(doc2,start);117        QueIns(doc_ne,doc2->head.last);118      }119      if (start==end)120        break;121      start=start->next;122    } while (start!=doc);123  if (unlock_doc)124    DocUnlock(doc);125  return doc2;126}127