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(); }
/*ARGSUSED*/ void workshop_load_file( char *filename, /* the file to load */ int line, /* an optional line number (or 0) */ char *frameid) /* used for multi-frame support */ { #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_load_file(%s, %d)\n", filename, line); #endif #ifdef FEAT_BEVAL if (balloonEval == NULL) { /* * Set up the Balloon Expression Evaluation area. * It's enabled by default. Disable it when 'ballooneval' is off. */ # ifdef FEAT_GUI_GTK balloonEval = gui_mch_create_beval_area(gui.drawarea, NULL, &bevalCB, NULL); # else balloonEval = gui_mch_create_beval_area(textArea, NULL, bevalCB, NULL); # endif if (!p_beval) gui_mch_disable_beval_area(balloonEval); } #endif load_window(filename, line); }
int workshop_get_font_height() { XmFontList fontList; /* fontList made from gui.norm_font */ XmString str; Dimension w; Dimension h; #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_get_font_height()\n"); #endif /* Pick the proper signs for this font size */ fontList = gui_motif_create_fontlist((XFontStruct *)gui.norm_font); h = 0; if (fontList != NULL) { str = XmStringCreateLocalized("A"); XmStringExtent(fontList, str, &w, &h); XmStringFree(str); XmFontListFree(fontList); } return (int)h; }
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); } } }
/*ARGSUSED*/ void workshop_moved_marks(char *filename) { #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("XXXworkshop_moved_marks(%s)\n", filename); #endif }
void workshop_minimize() { #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_minimize()\n"); #endif workshop_minimize_shell(vimShell); }
void workshop_quit() { #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_quit()\n"); #endif add_to_input_buf((char_u *) ":qall\n", 6); }
/* Get mark line number */ #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_get_mark_lineno(%s, %d)\n", filename, markId); #endif lineno = 0; buf = buflist_findname((char_u *)filename); if (buf != NULL) lineno = buf_findsign(buf, markId); return lineno; } #if 0 /* not used */ void workshop_adjust_marks(Widget *window, int pos, int inserted, int deleted) { #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("XXXworkshop_adjust_marks(%s, %d, %d, %d)\n", window ? XtName(window) : "<None>", pos, inserted, deleted); #endif }
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; }
void workshop_show_file( char *filename) { #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_show_file(%s)\n", filename); #endif load_window(filename, 0); }
/* * Reload the WorkShop buffer */ void workshop_reload_file( char *filename, int line) { #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_reload_file(%s, %d)\n", filename, line); #endif load_window(filename, line); }
void workshop_save_files() { /* Save the given file */ #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_save_files()\n"); #endif add_to_input_buf((char_u *) ":wall\n", 6); }
void workshop_show_balloon_tip( char *tip) { #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_show_balloon_tip(%s)\n", tip); #endif if (balloonEval != NULL) gui_mch_post_balloon(balloonEval, (char_u *)tip); }
/*ARGSUSED*/ void workshop_footer_message( char *message, int severity) /* severity is currently unused */ { #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_footer_message(%s, %d)\n", message, severity); #endif gui_mch_set_footer((char_u *) message); }
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); } }
/* 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_menu_end() { Boolean using_tearoff; /* set per current option setting */ #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_menu_end()\n"); #endif using_tearoff = vim_strchr(p_go, GO_TEAROFF) != NULL; gui_mch_toggle_tearoffs(using_tearoff); }
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); }
/*ARGSUSED*/ int workshop_get_positions( void *clientData, /* unused */ char **filename, /* output data */ int *curLine, /* output data */ int *curCol, /* output data */ int *selStartLine, /* output data */ int *selStartCol, /* output data */ int *selEndLine, /* output data */ int *selEndCol, /* output data */ int *selLength, /* output data */ char **selection) /* output data */ { static char ffname[MAXPATHLEN]; #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_get_positions(%#x, \"%s\", ...)\n", clientData, (curbuf && curbuf->b_sfname != NULL) ? (char *)curbuf->b_sfname : "<None>"); #endif strcpy(ffname, (char *) curbuf->b_ffname); *filename = ffname; /* copy so nobody can change b_ffname */ *curLine = curwin->w_cursor.lnum; *curCol = curwin->w_cursor.col; if (curbuf->b_visual_mode == 'v' && equalpos(curwin->w_cursor, curbuf->b_visual_end)) { *selStartLine = curbuf->b_visual_start.lnum; *selStartCol = curbuf->b_visual_start.col; *selEndLine = curbuf->b_visual_end.lnum; *selEndCol = curbuf->b_visual_end.col; *selection = get_selection(curbuf); if (*selection) *selLength = strlen(*selection); else *selLength = 0; } else { *selStartLine = *selEndLine = -1; *selStartCol = *selEndCol = -1; *selLength = 0; *selection = ""; } return 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_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); }
/*ARGSUSED*/ void workshop_front_file( char *filename) { #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_front_file()\n"); #endif /* * Assumption: This function will always be called after a call to * workshop_show_file(), so the file is always showing. */ if (vimShell != NULL) XRaiseWindow(gui.dpy, XtWindow(vimShell)); }
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); }
/*ARGSUSED*/ void workshop_load_file( char *filename, /* the file to load */ int line, /* an optional line number (or 0) */ char *frameid) /* used for multi-frame support */ { #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_load_file(%s, %d)\n", filename, line); #endif #ifdef FEAT_BEVAL bevalServers |= BEVAL_WORKSHOP; #endif load_window(filename, line); }
/* * workshop_menu_begin() is passed the menu name. We determine its mnemonic * here and store its name and priority. */ void workshop_menu_begin( char *label) { vimmenu_T *menu; /* pointer to last menu */ int menuPriority = 0; /* priority of new menu */ char mnembuf[64]; /* store menubar mnemonics here */ char *name; /* label with a mnemonic */ char *p; /* used to find mnemonics */ int idx; /* index into mnembuf */ #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_menu_begin()\n"); #endif /* * Look through all existing (non-PopUp and non-Toolbar) menus * and gather their mnemonics. Use this list to decide what * mnemonic should be used for label. */ idx = 0; mnembuf[idx++] = 'H'; /* H is mnemonic for Help */ for (menu = root_menu; menu != NULL; menu = menu->next) { if (menu_is_menubar(menu->name)) { p = strchr((char *)menu->name, '&'); if (p != NULL) mnembuf[idx++] = *++p; } if (menu->next != NULL && strcmp((char *) menu->next->dname, "Help") == 0) { menuPriority = menu->priority + 10; break; } } mnembuf[idx++] = NUL; name = addUniqueMnemonic(mnembuf, label); sprintf(curMenuName, "%s", name); sprintf(curMenuPriority, "%d.0", menuPriority); }
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_submenu_end() { char *p; #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE) && strncmp(curMenuName, "ToolBar", 7) != 0) wstrace("workshop_submenu_end()\n"); #endif p = strrchr(curMenuPriority, '.'); ASSERT(p != NULL); *p = NUL; p = strrchr(curMenuName, '.'); ASSERT(p != NULL); *p = NUL; }
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); }
int workshop_get_mark_lineno( char *filename, int markId) { buf_T *buf; /* buffer containing filename */ int lineno; /* line number of filename in buf */ /* Get mark line number */ #ifdef WSDEBUG_TRACE if (WSDLEVEL(WS_TRACE_VERBOSE | WS_TRACE)) wstrace("workshop_get_mark_lineno(%s, %d)\n", filename, markId); #endif lineno = 0; buf = buflist_findname((char_u *)filename); if (buf != NULL) lineno = buf_findsign(buf, markId); return lineno; }