static gboolean gb_vim_command_vsplit (GtkWidget *active_widget, const gchar *command, const gchar *options, GError **error) { IdeWorkbench *workbench; IdeContext *context; IdeVcs *vcs; GFile *workdir; GFile *file = NULL; gchar *file_path; SplitCallbackData *split_callback_data; GVariant *variant; g_assert (GTK_IS_WIDGET (active_widget)); if (!IDE_IS_LAYOUT_VIEW (active_widget)) return gb_vim_set_no_view_error (error); if (ide_str_empty0 (options)) { variant = g_variant_new_string (""); ide_widget_action (GTK_WIDGET (active_widget), "view-stack", "split-left", variant); } else { if (!(workbench = ide_widget_get_workbench (active_widget)) || !(context = ide_workbench_get_context (workbench)) || !(vcs = ide_context_get_vcs (context)) || !(workdir = ide_vcs_get_working_directory (vcs))) { g_set_error (error, GB_VIM_ERROR, GB_VIM_ERROR_NOT_SOURCE_VIEW, _("Failed to locate working directory")); return FALSE; } file_path = g_strdup (options); if (!g_path_is_absolute (file_path)) file_path = g_build_filename (g_file_get_path (workdir), file_path, NULL); file = g_file_new_for_path (file_path); split_callback_data = g_slice_new (SplitCallbackData); split_callback_data->active_widget = g_object_ref (active_widget); split_callback_data->file_path = file_path; ide_workbench_open_files_async (workbench, &file, 1, "editor", IDE_WORKBENCH_OPEN_FLAGS_BACKGROUND, NULL, gb_vim_command_vsplit_cb, split_callback_data); g_clear_object (&file); } return TRUE; }
static gboolean gb_vim_command_split (GtkWidget *active_widget, const gchar *command, const gchar *options, GError **error) { g_assert (GTK_IS_WIDGET (active_widget)); if (IDE_IS_LAYOUT_VIEW (active_widget)) ide_widget_action (GTK_WIDGET (active_widget), "view-stack", "split-down", NULL); else return gb_vim_set_no_view_error (error); return TRUE; }
static gboolean gb_vim_command_vsplit (GtkWidget *active_widget, const gchar *command, const gchar *options, GError **error) { GVariant *variant; g_assert (GTK_IS_WIDGET (active_widget)); if (!IDE_IS_PAGE (active_widget)) return gb_vim_set_no_view_error (error); if (ide_str_empty0 (options)) { variant = g_variant_new_string (""); dzl_gtk_widget_action (GTK_WIDGET (active_widget), "frame", "open-in-new-frame", variant); return TRUE; } else return load_split_async (active_widget, options, gb_vim_command_vsplit_cb, error); }
static gboolean gb_vim_command_split (GtkWidget *active_widget, const gchar *command, const gchar *options, GError **error) { GVariant *variant; g_assert (GTK_IS_WIDGET (active_widget)); if (!IDE_IS_LAYOUT_VIEW (active_widget)) return gb_vim_set_no_view_error (error); if (dzl_str_empty0 (options)) { variant = g_variant_new_string (""); dzl_gtk_widget_action (GTK_WIDGET (active_widget), "layoutstack", "split-view", variant); return TRUE; } else return load_split_async (active_widget, options, gb_vim_command_split_cb, error); }