[gnome-builder/wip/file-settings] tools: wait for file-settings to settle before printing
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/file-settings] tools: wait for file-settings to settle before printing
- Date: Tue, 5 May 2015 22:38:58 +0000 (UTC)
commit ae61fbfd9de30f03f1a49e101f4b0f8773c54961
Author: Christian Hergert <christian hergert me>
Date: Tue May 5 15:38:24 2015 -0700
tools: wait for file-settings to settle before printing
Now that we can have child file-settings initialize asynchronously, we
need to wait for them to settle before printing. This results in us
being able to layer editorconfig settings on top of gsetting defaults.
tools/ide-list-file-settings.c | 67 +++++++++++++++++++++++++++++----------
1 files changed, 50 insertions(+), 17 deletions(-)
---
diff --git a/tools/ide-list-file-settings.c b/tools/ide-list-file-settings.c
index d8fa53c..6e8de98 100644
--- a/tools/ide-list-file-settings.c
+++ b/tools/ide-list-file-settings.c
@@ -69,6 +69,43 @@ indent_style_string (IdeIndentStyle style)
}
static void
+print_settings (IdeFileSettings *settings)
+{
+ IdeFile *file = ide_file_settings_get_file (settings);
+
+ g_print ("# %s (%s)\n",
+ ide_file_get_path (file),
+ g_type_name (G_TYPE_FROM_INSTANCE (settings)));
+ g_print ("encoding = %s\n", ide_file_settings_get_encoding (settings) ?: "default");
+ g_print ("indent_width = %d\n", ide_file_settings_get_indent_width (settings));
+ g_print ("tab_width = %u\n", ide_file_settings_get_tab_width (settings));
+ g_print ("insert_trailing_newline = %s\n", ide_file_settings_get_insert_trailing_newline (settings) ?
"true" : "false");
+ g_print ("trim_trailing_whitespace = %s\n", ide_file_settings_get_trim_trailing_whitespace (settings) ?
"true" : "false");
+ g_print ("newline_type = %s\n", newline_string (ide_file_settings_get_newline_type (settings)));
+ g_print ("indent_sytle = %s\n", indent_style_string (ide_file_settings_get_indent_style (settings)));
+ g_print ("right_margin_position = %u\n", ide_file_settings_get_right_margin_position (settings));
+ g_print ("show_right_margin = %s\n", ide_file_settings_get_show_right_margin (settings) ? "true" :
"false");
+}
+
+static void
+unref_job (void)
+{
+ if (!--gActive)
+ quit (gExitCode);
+}
+
+static void
+settled_cb (IdeFileSettings *file_settings,
+ GParamSpec *pspec,
+ gpointer data)
+{
+ g_signal_handlers_disconnect_by_func (file_settings, settled_cb, NULL);
+ print_settings (file_settings);
+ g_clear_object (&file_settings);
+ unref_job ();
+}
+
+static void
load_settings_cb (GObject *object,
GAsyncResult *result,
gpointer user_data)
@@ -87,24 +124,20 @@ load_settings_cb (GObject *object,
goto cleanup;
}
- g_print ("# %s (%s)\n",
- ide_file_get_path (file),
- g_type_name (G_TYPE_FROM_INSTANCE (settings)));
- g_print ("encoding = %s\n", ide_file_settings_get_encoding (settings) ?: "default");
- g_print ("indent_width = %d\n", ide_file_settings_get_indent_width (settings));
- g_print ("tab_width = %u\n", ide_file_settings_get_tab_width (settings));
- g_print ("insert_trailing_newline = %s\n", ide_file_settings_get_insert_trailing_newline (settings) ?
"true" : "false");
- g_print ("trim_trailing_whitespace = %s\n", ide_file_settings_get_trim_trailing_whitespace (settings) ?
"true" : "false");
- g_print ("newline_type = %s\n", newline_string (ide_file_settings_get_newline_type (settings)));
- g_print ("indent_sytle = %s\n", indent_style_string (ide_file_settings_get_indent_style (settings)));
- g_print ("right_margin_position = %u\n", ide_file_settings_get_right_margin_position (settings));
- g_print ("show_right_margin = %s\n", ide_file_settings_get_show_right_margin (settings) ? "true" :
"false");
+ if (!ide_file_settings_get_settled (settings))
+ {
+ g_signal_connect (settings,
+ "notify::settled",
+ G_CALLBACK (settled_cb),
+ NULL);
+ return;
+ }
+ print_settings (settings);
g_clear_object (&settings);
cleanup:
- if (!--gActive)
- quit (gExitCode);
+ unref_job ();
}
static void
@@ -179,12 +212,12 @@ main (gint argc,
gMainLoop = g_main_loop_new (NULL, FALSE);
- if (argc > 1)
- project_path = argv [1];
+ project_path = argv [1];
+
project_file = g_file_new_for_path (project_path);
strv = g_ptr_array_new ();
- for (i = 2; i < argc; i++)
+ for (i = 1; i < argc; i++)
g_ptr_array_add (strv, g_strdup (argv [i]));
g_ptr_array_add (strv, NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]