コード例 #1
0
GtkSourceNewlineType
ide_file_settings_get_newline_type (IdeFileSettings *self)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_val_if_fail (IDE_IS_FILE_SETTINGS (self), 0);

  return priv->newline_type;
}
コード例 #2
0
/**
 * ide_file_settings_get_file:
 * @self: An #IdeFileSettings.
 *
 * Retrieves the underlying file that @self refers to.
 *
 * This may be used by #IdeFileSettings implementations to discover additional
 * information about the settings. For example, a modeline parser might load
 * some portion of the file looking for modelines. An editorconfig
 * implementation might look for ".editorconfig" files.
 *
 * Returns: (transfer none): An #IdeFile.
 */
IdeFile *
ide_file_settings_get_file (IdeFileSettings *self)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_val_if_fail (IDE_IS_FILE_SETTINGS (self), NULL);

  return priv->file;
}
コード例 #3
0
IdeIndentStyle
ide_file_settings_get_indent_style (IdeFileSettings *self)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_val_if_fail (IDE_IS_FILE_SETTINGS (self), 0);

  return priv->indent_style;
}
コード例 #4
0
guint
ide_file_settings_get_tab_width (IdeFileSettings *self)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_val_if_fail (IDE_IS_FILE_SETTINGS (self), 0);

  return priv->tab_width;
}
コード例 #5
0
gboolean
ide_file_settings_get_trim_trailing_whitespace (IdeFileSettings *self)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_val_if_fail (IDE_IS_FILE_SETTINGS (self), FALSE);

  return priv->trim_trailing_whitespace;
}
コード例 #6
0
/**
 * ide_file_settings_get_settled:
 * @self: An #IdeFileSettings.
 *
 * Gets the #IdeFileSettings:settled property.
 *
 * This property is %TRUE when all of the children file settings have completed loading.
 *
 * Some file setting implementations require that various I/O be performed on disk in
 * the background. This property will change to %TRUE when all of the settings have
 * been loaded.
 *
 * Normally, this is not a problem, since the editor will respond to changes and update them
 * accordingly. However, if you are writing a tool that prints the file settings
 * (such as ide-list-file-settings), you probably want to wait until the values have
 * settled.
 *
 * Returns: %TRUE if all the settings have loaded.
 *
 * Since: 3.32
 */
gboolean
ide_file_settings_get_settled (IdeFileSettings *self)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_val_if_fail (IDE_IS_FILE_SETTINGS (self), FALSE);

  return (priv->unsettled_count == 0);
}
コード例 #7
0
const gchar *
ide_file_settings_get_encoding (IdeFileSettings *self)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_val_if_fail (IDE_IS_FILE_SETTINGS (self), NULL);

  return priv->encoding;
}
コード例 #8
0
guint
ide_file_settings_get_right_margin_position (IdeFileSettings *self)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_val_if_fail (IDE_IS_FILE_SETTINGS (self), 80);

  return priv->right_margin_position;
}
コード例 #9
0
static void
ide_file_settings_set_language (IdeFileSettings *self,
                                const gchar     *language)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));

  priv->language = g_intern_string (language);
}
コード例 #10
0
static void
ide_file_settings_finalize (GObject *object)
{
  IdeFileSettings *self = (IdeFileSettings *)object;
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_clear_pointer (&priv->encoding, g_free);
  ide_clear_weak_pointer (&priv->file);

  G_OBJECT_CLASS (ide_file_settings_parent_class)->finalize (object);
}
コード例 #11
0
static void
ide_file_settings_set_file (IdeFileSettings *self,
                            GFile           *file)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));
  g_return_if_fail (G_IS_FILE (file));
  g_return_if_fail (priv->file == NULL);

  priv->file = g_object_ref (file);
}
コード例 #12
0
static void
ide_file_settings_destroy (IdeObject *object)
{
  IdeFileSettings *self = (IdeFileSettings *)object;
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_clear_pointer (&priv->children, g_ptr_array_unref);
  g_clear_pointer (&priv->encoding, g_free);
  g_clear_object (&priv->file);

  IDE_OBJECT_CLASS (ide_file_settings_parent_class)->destroy (object);
}
コード例 #13
0
static void
ide_file_settings_set_file (IdeFileSettings *self,
                            IdeFile         *file)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));
  g_return_if_fail (IDE_IS_FILE (file));

  if (ide_set_weak_pointer (&priv->file, file))
    g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_FILE]);
}
コード例 #14
0
static void
ide_file_settings_init (IdeFileSettings *self)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  priv->indent_style = IDE_INDENT_STYLE_SPACES;
  priv->indent_width = -1;
  priv->insert_trailing_newline = TRUE;
  priv->newline_type = GTK_SOURCE_NEWLINE_TYPE_LF;
  priv->right_margin_position = 80;
  priv->tab_width = 8;
  priv->trim_trailing_whitespace = TRUE;
}
コード例 #15
0
void
ide_file_settings_set_encoding (IdeFileSettings *self,
                                const gchar     *encoding)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));

  if (priv->encoding != encoding)
    {
      g_free (priv->encoding);
      priv->encoding = g_strdup (encoding);
      g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_ENCODING]);
    }
}
コード例 #16
0
void
ide_file_settings_set_tab_width (IdeFileSettings *self,
                                 guint            tab_width)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));
  g_return_if_fail (tab_width > 0);
  g_return_if_fail (tab_width < 32);

  if (priv->tab_width != tab_width)
    {
      priv->tab_width = tab_width;
      g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_TAB_WIDTH]);
    }
}
コード例 #17
0
void
ide_file_settings_set_insert_trailing_newline (IdeFileSettings *self,
                                               gboolean         insert_trailing_newline)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));

  insert_trailing_newline = !!insert_trailing_newline;

  if (priv->insert_trailing_newline != insert_trailing_newline)
    {
      priv->insert_trailing_newline = insert_trailing_newline;
      g_object_notify_by_pspec (G_OBJECT (self),
                                gParamSpecs [PROP_INSERT_TRAILING_NEWLINE]);
    }
}
コード例 #18
0
void
ide_file_settings_set_indent_style (IdeFileSettings *self,
                                    IdeIndentStyle   indent_style)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));
  g_return_if_fail (indent_style >= IDE_INDENT_STYLE_SPACES);
  g_return_if_fail (indent_style <= IDE_INDENT_STYLE_TABS);

  if (priv->indent_style != indent_style)
    {
      priv->indent_style = indent_style;
      g_object_notify_by_pspec (G_OBJECT (self),
                                gParamSpecs [PROP_INDENT_STYLE]);
    }
}
コード例 #19
0
void
ide_file_settings_set_right_margin_position (IdeFileSettings *self,
                                             guint            right_margin_position)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));
  g_return_if_fail (right_margin_position > 0);
  g_return_if_fail (right_margin_position <= 1000);

  if (priv->right_margin_position != right_margin_position)
    {
      priv->right_margin_position = right_margin_position;
      g_object_notify_by_pspec (G_OBJECT (self),
                                gParamSpecs [PROP_RIGHT_MARGIN_POSITION]);
    }
}
コード例 #20
0
void
ide_file_settings_set_trim_trailing_whitespace (IdeFileSettings *self,
                                                gboolean         trim_trailing_whitespace)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));

  trim_trailing_whitespace = !!trim_trailing_whitespace;

  if (priv->trim_trailing_whitespace != trim_trailing_whitespace)
    {
      priv->trim_trailing_whitespace = trim_trailing_whitespace;
      g_object_notify_by_pspec (G_OBJECT (self),
                                gParamSpecs [PROP_TRIM_TRAILING_WHITESPACE]);
    }
}
コード例 #21
0
void
ide_file_settings_set_indent_width (IdeFileSettings *self,
                                    gint             indent_width)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));
  g_return_if_fail (indent_width >= -1);
  g_return_if_fail (indent_width < 32);

  if (priv->indent_width != indent_width)
    {
      priv->indent_width = indent_width;
      g_object_notify_by_pspec (G_OBJECT (self),
                                gParamSpecs [PROP_INDENT_WIDTH]);
    }
}
コード例 #22
0
void
ide_file_settings_set_newline_type (IdeFileSettings      *self,
                                    GtkSourceNewlineType  newline_type)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));
  g_return_if_fail (newline_type >= GTK_SOURCE_NEWLINE_TYPE_LF);
  g_return_if_fail (newline_type <= GTK_SOURCE_NEWLINE_TYPE_CR_LF);

  if (priv->newline_type != newline_type)
    {
      priv->newline_type = newline_type;
      g_object_notify_by_pspec (G_OBJECT (self),
                                gParamSpecs [PROP_NEWLINE_TYPE]);
    }
}
コード例 #23
0
static void
ide_file_settings__init_cb (GObject      *object,
                            GAsyncResult *result,
                            gpointer      user_data)
{
  g_autoptr(IdeFileSettings) self = user_data;
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);
  GAsyncInitable *initable = (GAsyncInitable *)object;
  g_autoptr(GError) error = NULL;

  g_assert (IDE_IS_FILE_SETTINGS (self));
  g_assert (G_IS_ASYNC_INITABLE (initable));

  if (!g_async_initable_init_finish (initable, result, &error))
    g_warning ("%s", error->message);

  if (--priv->unsettled_count == 0)
    g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_SETTLED]);
}
コード例 #24
0
static void
_ide_file_settings_append (IdeFileSettings *self,
                           IdeFileSettings *child)
{
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_return_if_fail (IDE_IS_FILE_SETTINGS (self));
  g_return_if_fail (IDE_IS_FILE_SETTINGS (child));

  g_signal_connect_object (child,
                           "notify",
                           G_CALLBACK (ide_file_settings_child_notify),
                           self,
                           G_CONNECT_SWAPPED);

  if (priv->children == NULL)
    priv->children = g_ptr_array_new_with_free_func (g_object_unref);

  g_ptr_array_add (priv->children, g_object_ref (child));
}
コード例 #25
0
static gchar *
ide_file_settings_repr (IdeObject *object)
{
  IdeFileSettings *self = (IdeFileSettings *)object;
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  if (priv->file != NULL)
    {
      g_autofree gchar *uri = NULL;

      if (g_file_is_native (priv->file))
        return g_strdup_printf ("%s path=\"%s\"",
                                G_OBJECT_TYPE_NAME (self),
                                g_file_peek_path (priv->file));

      uri = g_file_get_uri (priv->file);
      return g_strdup_printf ("%s uri=\"%s\"", G_OBJECT_TYPE_NAME (self), uri);
    }

  return IDE_OBJECT_CLASS (ide_file_settings_parent_class)->repr (object);
}
コード例 #26
0
IdeFileSettings *
ide_file_settings_new (IdeObject   *parent,
                       GFile       *file,
                       const gchar *language)
{
  IdeFileSettingsPrivate *priv;
  GIOExtensionPoint *extension_point;
  IdeFileSettings *ret;
  GList *list;

  g_return_val_if_fail (G_IS_FILE (file), NULL);
  g_return_val_if_fail (IDE_IS_OBJECT (parent), NULL);

  ret = g_object_new (IDE_TYPE_FILE_SETTINGS,
                      "file", file,
                      "language", language,
                      NULL);
  priv = ide_file_settings_get_instance_private (ret);

  ide_object_append (parent, IDE_OBJECT (ret));

  extension_point = g_io_extension_point_lookup (IDE_FILE_SETTINGS_EXTENSION_POINT);
  list = g_io_extension_point_get_extensions (extension_point);

  /*
   * Don't allow our unsettled count to hit zero until we are finished.
   */
  priv->unsettled_count++;

  for (; list; list = list->next)
    {
      GIOExtension *extension = list->data;
      g_autoptr(IdeFileSettings) child = NULL;
      GType gtype;

      gtype = g_io_extension_get_type (extension);

      if (!g_type_is_a (gtype, IDE_TYPE_FILE_SETTINGS))
        {
          g_warning ("%s is not an IdeFileSettings", g_type_name (gtype));
          continue;
        }

      child = g_object_new (gtype,
                            "file", file,
                            "language", language,
                            NULL);
      ide_object_append (IDE_OBJECT (ret), IDE_OBJECT (child));

      if (G_IS_INITABLE (child))
        {
          g_autoptr(GError) error = NULL;

          if (!g_initable_init (G_INITABLE (child), NULL, &error))
            {
              if (!ide_error_ignore (error))
                g_warning ("%s", error->message);
            }
        }
      else if (G_IS_ASYNC_INITABLE (child))
        {
          priv->unsettled_count++;
          g_async_initable_init_async (G_ASYNC_INITABLE (child),
                                       G_PRIORITY_DEFAULT,
                                       NULL,
                                       ide_file_settings__init_cb,
                                       g_object_ref (ret));
        }

      _ide_file_settings_append (ret, child);
    }

  priv->unsettled_count--;

  return ret;
}