Team Ai
Datasetpublic

hschumann2/TempleOS-Source-Code

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes847downloads
DocRun.txt105 linesDownload Raw Back to DolDoc
1 2#help_index "DolDoc"3 4public I64 DocEntryRun(CDoc *doc,CDocEntry *doc_e,5        Bool exited,I64 *_has_action=NULL)6{//Do action on final entry sel by user.7//Sometimes returns locked, sometimes unlocked8  U8 ch=doc->cmd_U8,*st;9  I64 res=DOCM_CANCEL,has_action=FALSE;10  CHashDefineStr *tmph;11  DocLock(doc);12  if (!exited) {13    if (doc_e->de_flags & DOCEF_ESC) {14      Msg(MSG_KEY_DOWN,CH_ESC,0,1<<JOBf_DONT_FILTER);15      has_action=TRUE;16      goto er_done;17    } if (doc_e->de_flags & DOCEF_QUIT) {18      Msg(MSG_KEY_DOWN,CH_SHIFT_ESC,0,1<<JOBf_DONT_FILTER);19      has_action=TRUE;20      goto er_done;21    } else if (doc_e->de_flags & DOCEF_CHECK_COLLAPSABLE) {22      doc_e->de_flags^=DOCEF_CHECKED_COLLAPSED;23      has_action=TRUE;24    }25  }26  try {27    if (ch==CH_SPACE) {28      if (doc_e->de_flags & DOCEF_LINK && doc->left_click_link) {29        res=(*doc->left_click_link)(doc,doc_e);30        has_action=TRUE;31      }32      if (doc_e->de_flags & DOCEF_LEFT_EXP) {33        res=doc_e->left_exp;34        has_action=TRUE;35        Msg(MSG_CMD,res,0,1<<JOBf_DONT_FILTER);36      }37      if (doc_e->de_flags & DOCEF_LEFT_CB && doc_e->left_cb) {38        DocUnlock(doc);39        res=(*doc_e->left_cb)(doc,doc_e);40        has_action=TRUE;41        Msg(MSG_CMD,res,0,1<<JOBf_DONT_FILTER);42      }43      if (doc_e->de_flags & DOCEF_LEFT_MACRO) {44        if (doc_e->de_flags & DOCEF_POPUP) {45          st=StrNew(doc_e->left_macro);46          DocUnlock(doc);47          PopUp(st,Fs);48          Free(st);49        } else {50          if (doc_e->de_flags & DOCEF_LEFT_IN_STR)51            InStr("%s",doc_e->left_macro);52          else53            In("%s",doc_e->left_macro);54        }55        has_action=TRUE;56      }57      if (!exited && doc_e->de_flags & DOCEF_LST &&58            doc_e->de_flags & DOCEF_DEFINE &&59            (tmph=HashFind(doc_e->define_str,60            doc->win_task->hash_table,HTT_DEFINE_STR)) &&61            (res=PopUpPickLst(tmph->data))!=DOCM_CANCEL) {62        DocDataFmt(doc,doc_e,res);63        DocDataScan(doc,doc_e);64        has_action=TRUE;65      }66    } else if (ch=='\n') {67      if (doc_e->de_flags & DOCEF_LINK && doc->right_click_link) {68        res=(*doc->right_click_link)(doc,doc_e);69        has_action=TRUE;70      }71      if (doc_e->de_flags & DOCEF_RIGHT_EXP) {72        res=doc_e->right_exp;73        has_action=TRUE;74        Msg(MSG_CMD,res,0,1<<JOBf_DONT_FILTER);75      }76      if (doc_e->de_flags & DOCEF_RIGHT_CB && doc_e->right_cb) {77        DocUnlock(doc);78        res=(*doc_e->right_cb)(doc,doc_e);79        has_action=TRUE;80        Msg(MSG_CMD,res,0,1<<JOBf_DONT_FILTER);81      }82      if (doc_e->de_flags & DOCEF_RIGHT_MACRO) {83        if (doc_e->de_flags & DOCEF_POPUP) {84          st=StrNew(doc_e->right_macro);85          DocUnlock(doc);86          PopUp(st,Fs);87          Free(st);88        } else {89          if (doc_e->de_flags & DOCEF_RIGHT_IN_STR)90            InStr("%s",doc_e->right_macro);91          else92            In("%s",doc_e->right_macro);93        }94        has_action=TRUE;95      }96    }97  }98  catch99    DocBottom(doc);100  doc->cmd_U8=CH_SPACE;101er_done:102  if (_has_action) *_has_action=has_action;103  return res;104}105