Index: generic/xotcl.c =================================================================== diff -u -rd67e188b5b82e7159b894baf96bcfd2b3605918c -r3e2c28122dff054185286b89f145462fe7e967f2 --- generic/xotcl.c (.../xotcl.c) (revision d67e188b5b82e7159b894baf96bcfd2b3605918c) +++ generic/xotcl.c (.../xotcl.c) (revision 3e2c28122dff054185286b89f145462fe7e967f2) @@ -10410,7 +10410,7 @@ typedef enum {NO_DASH, SKALAR_DASH, LIST_DASH} dashArgType; static dashArgType -isDashArg(Tcl_Interp *interp, Tcl_Obj *obj, char **methodName, int *objc, Tcl_Obj **objv[]) { +isDashArg(Tcl_Interp *interp, Tcl_Obj *obj, int firstArg, char **methodName, int *objc, Tcl_Obj **objv[]) { char *flag; static Tcl_ObjType CONST86 *listType = NULL; @@ -10447,11 +10447,25 @@ } flag = ObjStr(obj); /*fprintf(stderr, "we have a scalar '%s'\n", flag);*/ - if (*flag == '-' && isalpha((int)*((flag)+1))) { + + if ((*flag == '-') && isalpha(*((flag)+1))) { + if (firstArg) { + /* if the argument contains a space, try to split */ + CONST char *p= flag+1; + while (*p && *p != ' ') p++; + if (*p == ' ') { + if (Tcl_ListObjGetElements(interp, obj, objc, objv) == TCL_OK) { + *methodName = ObjStr(*objv[0]); + if (**methodName == '-') {(*methodName)++ ;} + return LIST_DASH; + } + } + } *methodName = flag+1; *objc = 1; return SKALAR_DASH; } + return NO_DASH; } @@ -10497,7 +10511,7 @@ "configure ?args?"); /* find arguments without leading dash */ for (i=1; i < objc; i++) { - if ((isdasharg = isDashArg(interp, objv[i], &methodName, &argc, &argv))) + if ((isdasharg = isDashArg(interp, objv[i], 1, &methodName, &argc, &argv))) break; } normalArgs = i-1; @@ -10508,7 +10522,7 @@ case SKALAR_DASH: /* argument is a skalar with a leading dash */ { int j; for (j = i+1; j < objc; j++, argc++) { - if ((isdasharg = isDashArg(interp, objv[j], &nextMethodName, &nextArgc, &nextArgv))) + if ((isdasharg = isDashArg(interp, objv[j], j==i+1, &nextMethodName, &nextArgc, &nextArgv))) break; } result = callConfigureMethod(interp, obj, methodName, argc+1, objv+i+1); @@ -10520,7 +10534,7 @@ case LIST_DASH: /* argument is a list with a leading dash, grouping determined by list */ { i++; if (i