[gnome-builder] snippets: Add java snippets
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] snippets: Add java snippets
- Date: Thu, 31 May 2018 03:54:59 +0000 (UTC)
commit 6aa5b1db130501b5a5fe56c49ce3ff2b325f0bdd
Author: Alberto Fanjul <albertofanjul gmail com>
Date: Thu May 31 01:29:07 2018 +0200
snippets: Add java snippets
data/snippets/java.snippets | 64 +++++++++++++++++++++++
data/snippets/licenses.snippets | 6 +--
src/libide/libide.gresource.xml | 1 +
src/libide/snippets/ide-source-snippet-context.c | 41 +++++++++++++++
src/libide/snippets/ide-source-snippets-manager.c | 2 +
src/libide/sourceview/ide-source-view.c | 26 ++++++++-
6 files changed, 136 insertions(+), 4 deletions(-)
---
diff --git a/data/snippets/java.snippets b/data/snippets/java.snippets
new file mode 100644
index 000000000..c7329ee58
--- /dev/null
+++ b/data/snippets/java.snippets
@@ -0,0 +1,64 @@
+snippet clas
+- desc Creates a java class definition
+- scope java, groovy
+ package ${$relative_dirname|descend_path|descend_path|descend_path|slash_to_dots};
+
+ public class ${$filename|stripsuffix}
+ {
+ $0
+ }
+snippet iface
+- desc Creates a java interface definition
+- scope java, groovy
+ package ${$relative_dirname|descend_path|descend_path|descend_path|slash_to_dots};
+
+ public interface ${$filename|stripsuffix}
+ {
+ $0
+ }
+snippet psvm
+- desc Creates main java method
+- scope java, groovy
+ public static void main(String[] args)
+ {
+ $0
+ }
+snippet itar
+- desc Creates a for loop
+- scope java, groovy
+ for (int ${1:i = 0}; ${2:i < }; ${3:i++})
+ {
+ $0
+ }
+snippet iter
+- desc Creates a for each loop on a collection
+- scope java, groovy
+ for (${2:type} ${3:var}: ${1:collection})
+ {
+ $0
+ }
+snippet itit
+- desc Creates a for loop on an iterator
+- scope java, groovy
+ while (${1:it}.hasNext())
+ {
+ Object next = $1.next();
+ $0
+ }
+snippet comment
+- scope java, groovy
+ /*
+ * $0
+ */
+snippet javadoc
+- scope java, groovy
+ /**
+ * $0
+ */
+snippet sout
+- scope java
+ System.out.println($0);
+snippet serr
+- scope java
+ System.err.println($0);
+
diff --git a/data/snippets/licenses.snippets b/data/snippets/licenses.snippets
index 812a237da..3283dee2a 100644
--- a/data/snippets/licenses.snippets
+++ b/data/snippets/licenses.snippets
@@ -1,5 +1,5 @@
snippet gpl
-- scope c, chdr, cpp, css, js, vala
+- scope c, chdr, cpp, css, js, vala, java
/* ${1:$filename}
*
* Copyright $year ${2:$fullname} <${3:$email}>
@@ -62,7 +62,7 @@ snippet gpl
// SPDX-License-Identifier: GPL-3.0-or-later
$0
snippet lgpl
-- scope c, chdr, cpp, css, js, vala
+- scope c, chdr, cpp, css, js, vala, java
/* ${1:$filename}
*
* Copyright $year ${2:$fullname} <${3:$email}>
@@ -125,7 +125,7 @@ snippet lgpl
// SPDX-License-Identifier: LGPL-3.0-or-later
$0
snippet mit
-- scope c, chdr, cpp, css, js, vala
+- scope c, chdr, cpp, css, js, vala, java
/* ${1:$filename}
*
* Copyright $year ${2:$fullname} <${3:$email}>
diff --git a/src/libide/libide.gresource.xml b/src/libide/libide.gresource.xml
index cfee83b87..2419d7737 100644
--- a/src/libide/libide.gresource.xml
+++ b/src/libide/libide.gresource.xml
@@ -4,6 +4,7 @@
<file alias="c.snippets">../../data/snippets/c.snippets</file>
<file alias="chdr.snippets">../../data/snippets/chdr.snippets</file>
<file alias="gobject.snippets">../../data/snippets/gobject.snippets</file>
+ <file alias="java.snippets">../../data/snippets/java.snippets</file>
<file alias="js.snippets">../../data/snippets/js.snippets</file>
<file alias="licenses.snippets">../../data/snippets/licenses.snippets</file>
<file alias="main.snippets">../../data/snippets/main.snippets</file>
diff --git a/src/libide/snippets/ide-source-snippet-context.c
b/src/libide/snippets/ide-source-snippet-context.c
index d77d7a31a..663f177ef 100644
--- a/src/libide/snippets/ide-source-snippet-context.c
+++ b/src/libide/snippets/ide-source-snippet-context.c
@@ -408,6 +408,24 @@ filter_space (const gchar *input)
return g_string_free (str, FALSE);
}
+static gchar *
+filter_descend_path (const gchar *input)
+{
+ const char* pos = strchr (input, G_DIR_SEPARATOR);
+ if (pos == input)
+ {
+ input++;
+ pos = strchr (input, G_DIR_SEPARATOR);
+ }
+ if (pos)
+ {
+ pos++;
+ return g_strdup (pos);
+ }
+
+ return NULL;
+}
+
static gchar *
filter_stripsuffix (const gchar *input)
{
@@ -422,6 +440,27 @@ filter_stripsuffix (const gchar *input)
return g_strdup (input);
}
+static gchar *
+filter_slash_to_dots (const gchar *input)
+{
+ gunichar c;
+ GString *str;
+
+ str = g_string_new (NULL);
+
+ for (; *input; input = g_utf8_next_char (input))
+ {
+ c = g_utf8_get_char (input);
+
+ if (c == G_DIR_SEPARATOR)
+ g_string_append_c (str, '.');
+ else
+ g_string_append_c (str, c);
+ }
+
+ return g_string_free (str, FALSE);
+}
+
static gchar *
apply_filter (gchar *input,
const gchar *filter)
@@ -681,6 +720,8 @@ ide_source_snippet_context_class_init (IdeSourceSnippetContextClass *klass)
g_hash_table_insert (filters, (gpointer) "space", filter_space);
g_hash_table_insert (filters, (gpointer) "stripsuffix", filter_stripsuffix);
g_hash_table_insert (filters, (gpointer) "instance", filter_instance);
+ g_hash_table_insert (filters, (gpointer) "slash_to_dots", filter_slash_to_dots);
+ g_hash_table_insert (filters, (gpointer) "descend_path", filter_descend_path);
}
static void
diff --git a/src/libide/snippets/ide-source-snippets-manager.c
b/src/libide/snippets/ide-source-snippets-manager.c
index f8b1abe4e..4df26660e 100644
--- a/src/libide/snippets/ide-source-snippets-manager.c
+++ b/src/libide/snippets/ide-source-snippets-manager.c
@@ -117,6 +117,8 @@
* - stripsuffix: removes a filename suffix, such as ".txt" from the input
* - class: guess the class name from the input text
* - instance: guess the instance name from the input text
+ * - slash_to_dots: replaces "/" with "."
+ * - descend_path: removes first leading path
*
* You may chain multiple post-processing functions together.
*
diff --git a/src/libide/sourceview/ide-source-view.c b/src/libide/sourceview/ide-source-view.c
index cb6b5db87..9d31dbed9 100644
--- a/src/libide/sourceview/ide-source-view.c
+++ b/src/libide/sourceview/ide-source-view.c
@@ -3807,7 +3807,9 @@ ide_source_view_real_push_snippet (IdeSourceView *self,
IdeContext *ide_context;
IdeSourceSnippetContext *context;
IdeFile *file;
- GFile *gfile;
+ GFile *gfile = NULL;
+ g_autoptr(GFile) gparentfile = NULL;
+
g_assert (IDE_IS_SOURCE_VIEW (self));
g_assert (IDE_IS_SOURCE_SNIPPET (snippet));
@@ -3821,17 +3823,39 @@ ide_source_view_real_push_snippet (IdeSourceView *self,
(gfile = ide_file_get_file (file)))
{
g_autofree gchar *name = NULL;
+ g_autofree gchar *path = NULL;
+ g_autofree gchar *dirname = NULL;
name = g_file_get_basename (gfile);
+ gparentfile = g_file_get_parent(gfile);
+ dirname = g_file_get_path (gparentfile);
+ path = g_file_get_path (gfile);
ide_source_snippet_context_add_variable (context, "filename", name);
+ ide_source_snippet_context_add_variable (context, "dirname", dirname);
+ ide_source_snippet_context_add_variable (context, "path", path);
}
if ((ide_context = ide_buffer_get_context (priv->buffer)))
{
IdeVcs *vcs;
IdeVcsConfig *vcs_config;
+ GFile *workdir;
vcs = ide_context_get_vcs (ide_context);
+ workdir = ide_vcs_get_working_directory (vcs);
+ if (workdir && gfile)
+ {
+ g_autofree gchar *relative_path = NULL;
+ relative_path = g_file_get_relative_path (workdir, gfile);
+ ide_source_snippet_context_add_variable (context, "relative_path", relative_path);
+ }
+ if (workdir && gparentfile)
+ {
+ g_autofree gchar *relative_dirname = NULL;
+ relative_dirname = g_file_get_relative_path (workdir, gparentfile);
+ ide_source_snippet_context_add_variable (context, "relative_dirname", relative_dirname);
+ }
+
if ((vcs_config = ide_vcs_get_config (vcs)))
{
GValue value = G_VALUE_INIT;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]