Example #1
0
void start_ex_cmd(char symbol, int state)
{
  log_msg("EXCMD", "start");
  ex.ex_state = state;
  ex.state_symbol = symbol;
  window_refresh();

  pos_T max = layout_size();
  ex.curpos = 0;
  ex.curofs = 0;
  ex.maxpos = max.col - 2;
  ex.state = 0;
  ex.col_text = opt_color(COMPL_TEXT);
  ex.col_symb = opt_color(BUF_TEXT);

  switch (state) {
    case EX_CMD_STATE:
      menu_start(ex.menu);
      break;
    case EX_REG_STATE:
      ex.lm = window_get_focus()->matches;
      regex_mk_pivot(ex.lm);
      break;
    case EX_FIL_STATE:
      ex.fil = window_get_focus()->filter;
      //swap exline with filter string
      break;
  }
  ex.line = calloc(max.col, sizeof(char*));
  ex.cmd.cmds = NULL;
  ex.cmd.line = NULL;
  hist_push(state);
  cmdline_build(&ex.cmd, ex.line);
}
Example #2
0
File: hook.c Project: jollywho/nav
void call_cmd_hook(Hook *hook, HookArg *hka)
{
  log_msg("HOOK", "call_cmd_hook");
  if (hook->pat && hka && !regex_match(hook->pat, hka->arg))
    return;
  Cmdline cmd;
  cmdline_build(&cmd, hook->data.cmd);
  cmdline_req_run(NULL, &cmd);
  cmdline_cleanup(&cmd);
}
Example #3
0
void cmdline_init(int argc, char *argv[])
{
	char **defv = NULL;
	int defc = 0;
	struct param *p;
	char *s;
	int i;

	/* Build default command line as separate tokens */
	s = strtok(def_cmdline, OPTION_DELIM);
	while (s) {
		defv = realloc(defv, ++defc * sizeof(char *));
		defv[defc - 1] = s;
		s = strtok(NULL, OPTION_DELIM);
	}

	/* Build final command line based on project configuration */
	cmdline_build(argc, argv, defc, defv);

	/* Print version and command line first */
	fprintf(stdout, "Emux version %s\n", PACKAGE_VERSION);
	fprintf(stdout, "Command line:");
	for (i = 0; i < cmdline.argc; i++)
		fprintf(stdout, " %s", cmdline.argv[i]);
	fprintf(stdout, "\n");

	/* Parse and fill parameters */
	for (i = 0; i < num_params; i++) {
		p = params[i];
		if (!strcmp(p->type, "bool"))
			cmdline_parse_bool(p->name, p->address);
		else if (!strcmp(p->type, "int"))
			cmdline_parse_int(p->name, p->address);
		else if (!strcmp(p->type, "string"))
			cmdline_parse_string(p->name, p->address);
	}

	/* Free command lines */
	free(cmdline.argv);
	free(defv);
}
Example #4
0
char* repl_elem(char *line, char *expr, List *args, int fst, int lst)
{
  Cmdline cmd;
  cmdline_build(&cmd, line);
  Token *ary = tok_arg(cmdline_lst(&cmd), 0);
  log_msg("CMDLINE", "line %s", cmd.line);
  Token *elem = container_elem(ary, args, fst, lst);
  if (!elem) {
    cmdline_cleanup(&cmd);
    return NULL;
  }

  int len = strlen(line) - (elem->end - elem->start) + strlen(expr);
  char *newexpr = malloc(sizeof(char*)*len);
  newexpr[0] = '\0';
  strncat(newexpr, line, elem->start);
  strcat(newexpr, expr);
  strcat(newexpr, &line[elem->end]);
  cmdline_cleanup(&cmd);
  return newexpr;
}