Minsky
TCLcmd Namespace Reference

Namespaces

 trap
 

Functions

 NEWCMD (cli, 0)
 
int tk_mac_OpenDocument (ClientData, Tcl_Interp *, int argc, const char **argv)
 

Variables

static int tk_mac_OpenDocument_dummy
 

Function Documentation

◆ NEWCMD()

TCLcmd::NEWCMD ( cli  ,
 
)

Definition at line 283 of file tclmain.cc.

References minsky::chomp().

284  {
285  int braces=0, brackets=0;
286  bool inString=false;
287  tclcmd cmd;
288  cmd << "savebgerror\n";
289 #ifdef READLINE
290  char *c;
291  eco_string prompt((const char*)tclvar("argv(0)")); prompt+='>';
292  while ( (c=readline(const_cast<char*>(prompt.c_str())))!=NULL && strcmp(c,"exit")!=0)
293 #else
294  char c[512];
295  while (fgets(c,512,stdin)!=NULL && strcmp(c,"exit\n")!=0)
296 #endif
297  {
298  // count up number of braces, brackets etc
299  for (char* cc=c; *cc!='\0'; ++cc)
300  switch(*cc)
301  {
302  case '{':
303  if (!inString) braces++;
304  break;
305  case '[':
306  if (!inString) brackets++;
307  break;
308  case '}':
309  if (!inString) braces--;
310  break;
311  case ']':
312  if (!inString) brackets--;
313  break;
314  case '\\':
315  if (inString) cc++; //skip next character (is literal)
316  break;
317  case '"':
318  inString = !inString;
319  break;
320  }
321  cmd << chomp(c);
322  if (!inString && braces<=0 && brackets <=0)
323  { // we have a complete command, so attempt to execute it
324  try
325  {
326  cmd.exec();
327  }
328  catch (std::exception& e) {fputs(e.what(),stderr);}
329  catch (...) {fputs("caught unknown exception",stderr);}
330  puts(cmd.result.c_str());
331  }
332 #ifdef READLINE
333  if (strlen(c)) add_history(c);
334  free(c);
335 #endif
336  }
337  cmd << "restorebgerror\n";
338  }
void chomp(string &buf)
Definition: CSVParser.cc:577
Here is the call graph for this function:

◆ tk_mac_OpenDocument()

int TCLcmd::tk_mac_OpenDocument ( ClientData  ,
Tcl_Interp *  ,
int  argc,
const char **  argv 
)

Definition at line 352 of file tclmain.cc.

353  {
354  if (argc>1)
355  {
356  tclvar("argv")[1]=argv[1];
357  tclvar("argc")=2;
358  }
359  return TCL_OK;
360  }

Variable Documentation

◆ tk_mac_OpenDocument_dummy

int TCLcmd::tk_mac_OpenDocument_dummy
static
Initial value:
=
(Tcl_CreateCommand
(interp(),"::tk::mac::OpenDocument",(Tcl_CmdProc*)tk_mac_OpenDocument,0,NULL),
0)
int tk_mac_OpenDocument(ClientData, Tcl_Interp *, int argc, const char **argv)
Definition: tclmain.cc:352

Definition at line 362 of file tclmain.cc.