SF.net SVN: geany:[3567] trunk
eht16 at users.sourceforge.net
eht16 at xxxxx
Sun Feb 8 19:52:21 UTC 2009
Revision: 3567
http://geany.svn.sourceforge.net/geany/?rev=3567&view=rev
Author: eht16
Date: 2009-02-08 19:52:21 +0000 (Sun, 08 Feb 2009)
Log Message:
-----------
Add editor_get_word_at_pos() as a convenient function to retrieve the word at a given position.
Make document_get_status_color() returning a const GdkColor.
Add editor_get_word_at_pos() and document_get_status_color() to the plugin API.
Modified Paths:
--------------
trunk/ChangeLog
trunk/plugins/geanyfunctions.h
trunk/src/document.c
trunk/src/document.h
trunk/src/editor.c
trunk/src/editor.h
trunk/src/plugindata.h
trunk/src/plugins.c
trunk/src/treeviews.c
trunk/src/ui_utils.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2009-02-08 19:51:49 UTC (rev 3566)
+++ trunk/ChangeLog 2009-02-08 19:52:21 UTC (rev 3567)
@@ -5,6 +5,14 @@
Return TRUE if appropriate in the event handlers.
* plugins/vcdiff.c:
Fix path quoting problems on Windows.
+ * plugins/geanyfunctions.h, src/document.c, src/document.h,
+ src/editor.c, src/editor.h, src/plugindata.h, src/plugins.c,
+ src/treeviews.c, src/ui_utils.c:
+ Add editor_get_word_at_pos() as a convenient function to retrieve
+ the word at a given position.
+ Make document_get_status_color() returning a const GdkColor.
+ Add editor_get_word_at_pos() and document_get_status_color() to the
+ plugin API.
2009-02-08 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
Modified: trunk/plugins/geanyfunctions.h
===================================================================
--- trunk/plugins/geanyfunctions.h 2009-02-08 19:51:49 UTC (rev 3566)
+++ trunk/plugins/geanyfunctions.h 2009-02-08 19:52:21 UTC (rev 3567)
@@ -46,6 +46,8 @@
geany_functions->p_document->save_file_as
#define document_rename_file \
geany_functions->p_document->rename_file
+#define document_get_status_color \
+ geany_functions->p_document->get_status_color
#define editor_get_indent_prefs \
geany_functions->p_editor->get_indent_prefs
#define editor_create_widget \
@@ -58,6 +60,8 @@
geany_functions->p_editor->indicator_clear
#define editor_set_indent_type \
geany_functions->p_editor->set_indent_type
+#define editor_get_word_at_pos \
+ geany_functions->p_editor->get_word_at_pos
#define scintilla_send_message \
geany_functions->p_scintilla->send_message
#define scintilla_new \
Modified: trunk/src/document.c
===================================================================
--- trunk/src/document.c 2009-02-08 19:51:49 UTC (rev 3566)
+++ trunk/src/document.c 2009-02-08 19:52:21 UTC (rev 3567)
@@ -2675,9 +2675,19 @@
}
-/* Gets the status colour of the document, or NULL if default widget
- * colouring should be used. */
-GdkColor *document_get_status_color(GeanyDocument *doc)
+/**
+ * Gets the status colour of the document, or NULL if default widget colouring should be used.
+ * Returned colours are red if the document has changes, green is the document is read-only
+ * or simply NULL if the document is unmodified but writable.
+ *
+ * @param doc The document to use.
+ *
+ * @return The colour for the document or NULL if the default colour should be used. The colour
+ * object is owned by Geany and should not be modified or freed.
+ *
+ * @since 0.16
+ */
+const GdkColor *document_get_status_color(GeanyDocument *doc)
{
static GdkColor red = {0, 0xFFFF, 0, 0};
static GdkColor green = {0, 0, 0x7FFF, 0};
Modified: trunk/src/document.h
===================================================================
--- trunk/src/document.h 2009-02-08 19:51:49 UTC (rev 3566)
+++ trunk/src/document.h 2009-02-08 19:52:21 UTC (rev 3567)
@@ -223,6 +223,6 @@
void document_update_tab_label(GeanyDocument *doc);
-GdkColor *document_get_status_color(GeanyDocument *doc);
+const GdkColor *document_get_status_color(GeanyDocument *doc);
#endif
Modified: trunk/src/editor.c
===================================================================
--- trunk/src/editor.c 2009-02-08 19:51:49 UTC (rev 3566)
+++ trunk/src/editor.c 2009-02-08 19:52:21 UTC (rev 3567)
@@ -1248,6 +1248,35 @@
}
+/**
+ * Finds the word at the position specified by @c pos. If any word is found, it is returned.
+ * Otherwise NULL is returned.
+ * Additional wordchars can be specified to define what to consider as a word.
+ *
+ * @param editor The editor to operate on.
+ * @param pos The position where the word should be read from.
+ * Maybe @a -1 to use the current position.
+ * @param wordchars The wordchars to separate words. wordchars mean all characters to count
+ * as part of a word. Maybe @a NULL to use the default wordchars,
+ * see @ref GEANY_WORDCHARS.
+ *
+ * @return A newly-allocated string containing the word at the given @c pos or NULL.
+ * Should be freed when no longer needed.
+ *
+ * @since 0.16
+ */
+gchar *editor_get_word_at_pos(GeanyEditor *editor, gint pos, const gchar *wordchars)
+{
+ static gchar cword[GEANY_MAX_WORD_LENGTH];
+
+ g_return_val_if_fail(editor != NULL, FALSE);
+
+ read_current_word(editor, pos, cword, sizeof(cword), wordchars, FALSE);
+
+ return (*cword == '\0') ? NULL : g_strdup(cword);
+}
+
+
/* Read the word up to position @a pos. */
static const gchar *
editor_read_word_stem(GeanyEditor *editor, gint pos, const gchar *wordchars)
Modified: trunk/src/editor.h
===================================================================
--- trunk/src/editor.h 2009-02-08 19:51:49 UTC (rev 3566)
+++ trunk/src/editor.h 2009-02-08 19:52:21 UTC (rev 3567)
@@ -28,6 +28,7 @@
#include "Scintilla.h"
#include "ScintillaWidget.h"
+/** Default character set to define which characters shoud be treated as part of a word. */
#define GEANY_WORDCHARS "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
#define GEANY_MAX_WORD_LENGTH 192
@@ -217,6 +218,8 @@
void editor_find_current_word(GeanyEditor *editor, gint pos, gchar *word, size_t wordlen,
const gchar *wc);
+gchar *editor_get_word_at_pos(GeanyEditor *editor, gint pos, const gchar *wordchars);
+
gchar *editor_get_default_selection(GeanyEditor *editor, gboolean use_current_word, const gchar *wordchars);
void editor_select_word(GeanyEditor *editor);
Modified: trunk/src/plugindata.h
===================================================================
--- trunk/src/plugindata.h 2009-02-08 19:51:49 UTC (rev 3566)
+++ trunk/src/plugindata.h 2009-02-08 19:52:21 UTC (rev 3567)
@@ -252,6 +252,7 @@
struct GeanyDocument* (*index)(gint idx);
gboolean (*save_file_as) (struct GeanyDocument *doc, const gchar *utf8_fname);
void (*rename_file) (struct GeanyDocument *doc, const gchar *new_filename);
+ const GdkColor* (*get_status_color) (struct GeanyDocument *doc);
}
DocumentFuncs;
@@ -518,6 +519,7 @@
void (*indicator_clear) (struct GeanyEditor *editor, gint indic);
void (*set_indent_type)(struct GeanyEditor *editor, GeanyIndentType type);
+ gchar* (*get_word_at_pos) (struct GeanyEditor *editor, gint pos, const gchar *wordchars);
/* Remember to convert any GeanyDocument or ScintillaObject pointers in any
* appended functions to GeanyEditor pointers. */
Modified: trunk/src/plugins.c
===================================================================
--- trunk/src/plugins.c 2009-02-08 19:51:49 UTC (rev 3566)
+++ trunk/src/plugins.c 2009-02-08 19:52:21 UTC (rev 3567)
@@ -137,7 +137,8 @@
&document_close,
&document_index,
&document_save_file_as,
- &document_rename_file
+ &document_rename_file,
+ &document_get_status_color
};
static EditorFuncs editor_funcs = {
@@ -146,7 +147,8 @@
&editor_indicator_set_on_range,
&editor_indicator_set_on_line,
&editor_indicator_clear,
- &editor_set_indent_type
+ &editor_set_indent_type,
+ &editor_get_word_at_pos
};
static ScintillaFuncs scintilla_funcs = {
@@ -1331,7 +1333,10 @@
* This is necessary if you register new GTypes in your plugin, e.g. when using own classes
* using the GObject system.
*
- * @param plugin Must be @ref geany_plugin. */
+ * @param plugin Must be @ref geany_plugin.
+ *
+ * @since 0.16
+ */
void plugin_module_make_resident(GeanyPlugin *plugin)
{
g_return_if_fail(plugin);
Modified: trunk/src/treeviews.c
===================================================================
--- trunk/src/treeviews.c 2009-02-08 19:51:49 UTC (rev 3566)
+++ trunk/src/treeviews.c 2009-02-08 19:52:21 UTC (rev 3567)
@@ -318,7 +318,7 @@
GtkTreeIter *iter = &doc->priv->iter;
GtkTreeIter *parent = get_doc_parent(doc);
gchar *basename;
- GdkColor *color = document_get_status_color(doc);
+ const GdkColor *color = document_get_status_color(doc);
gtk_tree_store_append(store_openfiles, iter, parent);
@@ -363,7 +363,7 @@
if (utils_str_equal(fname, DOC_FILENAME(doc)))
{
/* just update color */
- GdkColor *color = document_get_status_color(doc);
+ const GdkColor *color = document_get_status_color(doc);
gtk_tree_store_set(store_openfiles, iter, DOCUMENTS_COLOR, color, -1);
}
Modified: trunk/src/ui_utils.c
===================================================================
--- trunk/src/ui_utils.c 2009-02-08 19:51:49 UTC (rev 3566)
+++ trunk/src/ui_utils.c 2009-02-08 19:52:21 UTC (rev 3567)
@@ -1309,7 +1309,7 @@
* document status. */
void ui_update_tab_status(GeanyDocument *doc)
{
- GdkColor *color = document_get_status_color(doc);
+ const GdkColor *color = document_get_status_color(doc);
/* NULL color will reset to default */
gtk_widget_modify_fg(doc->priv->tab_label, GTK_STATE_NORMAL, color);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list