void workshop_hotkeys( Boolean on) { char cbuf[BUFSIZ]; /* command buffer */ MenuMap *mp; /* iterate over menuMap entries */ #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_hotkeys(%s)\n", on ? "True" : "False"); #endif workshopHotKeysEnabled = on; if (workshopHotKeysEnabled) for (mp = menuMap; mp < &menuMap[menuMapSize]; mp++) { if (mp->accel != NULL) { sprintf(cbuf, "map %s :wsverb %s<CR>", mp->accel, mp->verb); coloncmd(cbuf, TRUE); } } else for (mp = menuMap; mp < &menuMap[menuMapSize]; mp++) { if (mp->accel != NULL) { sprintf(cbuf, "unmap %s", mp->accel); coloncmd(cbuf, TRUE); } } }
void workshop_add_mark_type( int idx, char *colorspec, char *sign) { char gbuf[BUFSIZ]; /* buffer for sign name */ char cibuf[BUFSIZ]; /* color information */ char cbuf[BUFSIZ]; /* command buffer */ char *bp; #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) { char *cp; cp = strrchr(sign, '/'); if (cp == NULL) cp = sign; else cp++; /* skip '/' character */ wstrace("workshop_add_mark_type(%d, \"%s\", \"%s\")\n", idx, colorspec && *colorspec ? colorspec : "<None>", cp); } #endif /* * Isolate the basename of sign in gbuf. We will use this for the * GroupName in the highlight command sent to vim. */ STRCPY(gbuf, gettail((char_u *)sign)); bp = strrchr(gbuf, '.'); if (bp != NULL) *bp = NUL; if (gbuf[0] != '-' && gbuf[1] != NUL) { if (colorspec != NULL && *colorspec) { vim_snprintf(cbuf, sizeof(cbuf), "highlight WS%s guibg=%s", gbuf, colorspec); coloncmd(cbuf, FALSE); vim_snprintf(cibuf, sizeof(cibuf), "linehl=WS%s", gbuf); } else cibuf[0] = NUL; vim_snprintf(cbuf, sizeof(cbuf), "sign define %d %s icon=%s", idx, cibuf, sign); coloncmd(cbuf, TRUE); } }
static void addMenu( char *menu, /* menu name */ char *accel, /* accelerator text (optional) */ char *verb) /* WorkShop action-verb */ { MenuMap *newMap; char cbuf[BUFSIZ]; if (menuMapSize >= menuMapMax) { newMap = realloc(menuMap, sizeof(MenuMap) * (menuMapMax + MENU_INC)); if (newMap != NULL) { menuMap = newMap; menuMapMax += MENU_INC; } } if (menuMapSize < menuMapMax) { menuMap[menuMapSize].name = strdup(menu); menuMap[menuMapSize].accel = accel && *accel ? strdup(accel) : NULL; menuMap[menuMapSize++].verb = strdup(verb); if (accel && workshopHotKeysEnabled) { sprintf(cbuf, "map %s :wsverb %s<CR>", accel, verb); coloncmd(cbuf, TRUE); } } }
void workshop_toolbar_begin() { #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_toolbar_begin()\n"); #endif coloncmd("aunmenu ToolBar", True); tbpri = 10; }
/* Delete mark */ #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_delete_mark(%s, %d (id))\n", filename, markId); #endif sprintf(cbuf, "sign unplace %d file=%s", markId, filename); coloncmd(cbuf, TRUE); } #if 0 /* not used */ void workshop_delete_all_marks( void *window, Boolean doRefresh) { #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_delete_all_marks(%#x, %s)\n", window, doRefresh ? "True" : "False"); #endif coloncmd("sign unplace *", TRUE); }
void workshop_balloon_mode( Boolean on) { char cbuf[BUFSIZ]; /* command buffer */ #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_balloon_mode(%s)\n", on ? "True" : "False"); #endif sprintf(cbuf, "set %sbeval", on ? "" : "no"); coloncmd(cbuf, TRUE); }
void workshop_frame_sensitivities( VerbSense *vs) /* list of verbs to (de)sensitize */ { VerbSense *vp; /* iterate through vs */ char *menu_name; /* used in menu lookup */ int cnt; /* count of verbs to skip */ int len; /* length of nonvariant part of command */ char cbuf[4096]; #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE) || WSDLEVEL(4)) { wsdebug("workshop_frame_sensitivities(\n"); for (vp = vs; vp->verb != NULL; vp++) wsdebug("\t%-25s%d\n", vp->verb, vp->sense); wsdebug(")\n"); } else if (WSDLEVEL(WS_TRACE)) wstrace("workshop_frame_sensitivities()\n"); #endif #ifdef WSDEBUG_SENSE if (ws_debug) for (vp = vs; vp->verb != NULL; vp++) wsdebug("change: %-21.20s%-21.20s(%s)\n", "", vp->verb, vp->sense == 1 ? "Sensitive" : "Insensitive"); #endif /* * Look for all matching menu entries for the verb. There may be more * than one if the verb has both a menu and toolbar entry. */ for (vp = vs; vp->verb != NULL; vp++) { cnt = 0; strcpy(cbuf, "amenu"); strcat(cbuf, " "); strcat(cbuf, vp->sense ? "enable" : "disable"); strcat(cbuf, " "); len = strlen(cbuf); while ((menu_name = lookupVerb(vp->verb, cnt++)) != NULL) { strcpy(&cbuf[len], menu_name); coloncmd(cbuf, FALSE); } } gui_update_menus(0); gui_mch_flush(); }
void workshop_balloon_delay( int delay) { char cbuf[BUFSIZ]; /* command buffer */ #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_balloon_delay(%d)\n", delay); #endif sprintf(cbuf, "set bdlay=%d", delay); coloncmd(cbuf, TRUE); }
void workshop_save_file( char *filename) { char cbuf[BUFSIZ]; /* build vim command here */ #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_save_file(%s)\n", filename); #endif /* Save the given file */ sprintf(cbuf, "w %s", filename); coloncmd(cbuf, TRUE); }
static void load_buffer_by_name( char *filename, /* the file to load */ int lnum) /* an optional line number (or 0) */ { char lnumbuf[16]; /* make line number option for :e */ char cbuf[BUFSIZ]; /* command buffer */ if (lnum > 0) sprintf(lnumbuf, "+%d", lnum); else lnumbuf[0] = NUL; sprintf(cbuf, "e %s %s", lnumbuf, filename); coloncmd(cbuf, False); }
void workshop_delete_mark( char *filename, int markId) { char cbuf[BUFSIZ]; /* command buffer */ /* Delete mark */ #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_delete_mark(%s, %d (id))\n", filename, markId); #endif sprintf(cbuf, "sign unplace %d file=%s", markId, filename); coloncmd(cbuf, TRUE); }
void workshop_change_mark_type( char *filename, /* filename which gets the mark */ int markId, /* unique mark identifier */ int idx) /* which mark to use */ { char cbuf[BUFSIZ]; /* command buffer */ /* Change mark type */ #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_change_mark_type(%s, %d, %d)\n", filename, markId, idx); #endif sprintf(cbuf, "sign place %d name=%d file=%s", markId, idx, filename); coloncmd(cbuf, TRUE); }
void workshop_set_mark( char *filename, /* filename which gets the mark */ int lineno, /* line number which gets the mark */ int markId, /* unique mark identifier */ int idx) /* which mark to use */ { char cbuf[BUFSIZ]; /* command buffer */ /* Set mark in a given file */ #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_set_mark(%s, %d (ln), %d (id), %d (idx))\n", filename, lineno, markId, idx); #endif sprintf(cbuf, "sign place %d line=%d name=%d file=%s", markId, lineno, idx, filename); coloncmd(cbuf, TRUE); }
/* * Goto the given mark in a file (e.g. show it). * If message is not null, display it in the footer. */ void workshop_goto_mark( char *filename, int markId, char *message) { char cbuf[BUFSIZ]; /* command buffer */ /* Goto mark */ #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_goto_mark(%s, %d (id), %s)\n", filename, markId, message && *message && !(*message == ' ' && message[1] == NULL) ? message : "<None>"); #endif sprintf(cbuf, "sign jump %d file=%s", markId, filename); coloncmd(cbuf, TRUE); if (message != NULL && *message != NUL) gui_mch_set_footer((char_u *)message); }
void workshop_set_option( char *option, /* name of a supported option */ char *value) /* value to set option to */ { char cbuf[BUFSIZ]; /* command buffer */ #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) { wstrace("workshop_set_option(%s, %s)\n", option, value); } #endif cbuf[0] = NUL; switch (*option) /* switch on 1st letter */ { case 's': if (strcmp(option, "syntax") == 0) sprintf(cbuf, "syntax %s", value); else if (strcmp(option, "savefiles") == 0) ; /* XXX - Not yet implemented */ break; case 'l': if (strcmp(option, "lineno") == 0) sprintf(cbuf, "set %snu", (strcmp(value, "on") == 0) ? "" : "no"); break; case 'p': if (strcmp(option, "parentheses") == 0) sprintf(cbuf, "set %ssm", (strcmp(value, "on") == 0) ? "" : "no"); break; case 'w': /* this option is set by a direct call */ #ifdef WSDEBUG wsdebug("workshop_set_option: " "Got unexpected workshopkeys option"); #endif break; case 'b': /* these options are set from direct calls */ if (option[7] == NUL && strcmp(option, "balloon") == 0) { #ifdef WSDEBUG /* set by direct call to workshop_balloon_mode */ wsdebug("workshop_set_option: " "Got unexpected ballooneval option"); #endif } else if (strcmp(option, "balloondelay") == 0) { #ifdef WSDEBUG /* set by direct call to workshop_balloon_delay */ wsdebug("workshop_set_option: " "Got unexpected balloondelay option"); #endif } break; } if (cbuf[0] != NUL) coloncmd(cbuf, TRUE); }
/*ARGSUSED*/ void workshop_toolbar_button( char *label, char *verb, char *senseVerb, char *filepos, char *help, char *sense, char *file, char *left) { char cbuf[BUFSIZ + MAXPATHLEN]; char namebuf[BUFSIZ]; static int tbid = 1; char_u *p; #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE)) wsdebug("workshop_toolbar_button(\"%s\", %s, %s,\n" "\t%s, \"%s\", %s,\n\t\"%s\",\n\t<%s>)\n", label && *label ? label : "<None>", verb && *verb ? verb : "<None>", senseVerb && *senseVerb ? senseVerb : "<None>", filepos && *filepos ? filepos : "<None>", help && *help ? help : "<None>", sense && *sense ? sense : "<None>", file && *file ? file : "<None>", left && *left ? left : "<None>"); else if (WSDLEVEL(WS_TRACE)) wstrace("workshop_toolbar_button(\"%s\", %s)\n", label && *label ? label : "<None>", verb && *verb ? verb : "<None>"); #endif #ifdef WSDEBUG_SENSE if (ws_debug) wsdebug("button: %-21.20s%-21.20s(%s)\n", label, verb, *sense == '1' ? "Sensitive" : "Insensitive"); #endif if (left && *left && atoi(left) > 0) { /* Add a separator (but pass the width passed after the ':') */ sprintf(cbuf, "amenu 1.%d ToolBar.-sep%d:%s- <nul>", tbpri - 5, tbid++, left); coloncmd(cbuf, True); } p = vim_strsave_escaped((char_u *)label, (char_u *)"\\. "); sprintf(namebuf, "ToolBar.%s", p); vim_free(p); STRCPY(cbuf, "amenu <silent> "); if (file != NULL && *file != NUL) { p = vim_strsave_escaped((char_u *)file, (char_u *)" "); sprintf(cbuf + STRLEN(cbuf), "icon=%s ", p); vim_free(p); } sprintf(cbuf + STRLEN(cbuf), "1.%d %s :wsverb %s<CR>", tbpri, namebuf, verb); /* Define the menu item */ coloncmd(cbuf, True); if (*sense == '0') { /* If menu isn't sensitive at startup... */ sprintf(cbuf, "amenu disable %s", namebuf); coloncmd(cbuf, True); } if (help && *help) { /* Do the tooltip */ sprintf(cbuf, "tmenu %s %s", namebuf, help); coloncmd(cbuf, True); } addMenu(namebuf, NULL, verb); tbpri += 10; }
/*ARGSUSED*/ void workshop_menu_item( char *label, char *verb, char *accelerator, char *acceleratorText, char *name, char *filepos, char *sensitive) { char cbuf[BUFSIZ]; char namebuf[BUFSIZ]; char accText[BUFSIZ]; #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE) && strncmp(curMenuName, "ToolBar", 7) != 0) { if (ws_dlevel & WS_TRACE_VERBOSE) wsdebug("workshop_menu_item(\n" "\tlabel = \"%s\",\n" "\tverb = %s,\n" "\taccelerator = %s,\n" "\tacceleratorText = \"%s\",\n" "\tname = %s,\n" "\tfilepos = %s,\n" "\tsensitive = %s)\n", label && *label ? label : "<None>", verb && *verb ? verb : "<None>", accelerator && *accelerator ? accelerator : "<None>", acceleratorText && *acceleratorText ? acceleratorText : "<None>", name && *name ? name : "<None>", filepos && *filepos ? filepos : "<None>", sensitive); else if (ws_dlevel & WS_TRACE) wstrace("workshop_menu_item(\"%s\", %s)\n", label && *label ? label : "<None>", verb && *verb ? verb : "<None>", sensitive); } #endif #ifdef WSDEBUG_SENSE if (ws_debug) wstrace("menu: %-21.20s%-21.20s(%s)\n", label, verb, *sensitive == '1' ? "Sensitive" : "Insensitive"); #endif if (acceleratorText != NULL) sprintf(accText, "<Tab>%s", acceleratorText); else accText[0] = NUL; updatePriority(False); sprintf(namebuf, "%s.%s", curMenuName, fixup(label)); sprintf(cbuf, "amenu %s %s%s\t:wsverb %s<CR>", curMenuPriority, namebuf, accText, verb); coloncmd(cbuf, TRUE); addMenu(namebuf, fixAccelText(acceleratorText), verb); if (*sensitive == '0') { sprintf(cbuf, "amenu disable %s", namebuf); coloncmd(cbuf, TRUE); } }