SF.net SVN: geany:[5431] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Tue Nov 23 17:25:59 UTC 2010
Revision: 5431
http://geany.svn.sourceforge.net/geany/?rev=5431&view=rev
Author: ntrel
Date: 2010-11-23 17:25:58 +0000 (Tue, 23 Nov 2010)
Log Message:
-----------
Add editor_get_prefs() instead of editor_get_long_line_*()
functions. This general function can be extended to support
various project and document overrides.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/editor.c
trunk/src/editor.h
trunk/src/keybindings.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2010-11-23 16:23:22 UTC (rev 5430)
+++ trunk/ChangeLog 2010-11-23 17:25:58 UTC (rev 5431)
@@ -15,6 +15,10 @@
doc/geany.html:
Add gio_unsafe_save_backup hidden pref (patch by Lex Trotman,
thanks).
+ * src/keybindings.c, src/editor.c, src/editor.h:
+ Add editor_get_prefs() instead of editor_get_long_line_*()
+ functions. This general function can be extended to support
+ various project and document overrides.
2010-11-22 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
Modified: trunk/src/editor.c
===================================================================
--- trunk/src/editor.c 2010-11-23 16:23:22 UTC (rev 5430)
+++ trunk/src/editor.c 2010-11-23 17:25:58 UTC (rev 5431)
@@ -373,7 +373,7 @@
}
-gint editor_get_long_line_type(void)
+static gint editor_get_long_line_type(void)
{
if (app->project)
switch (app->project->long_line_behaviour)
@@ -393,7 +393,7 @@
}
-gint editor_get_long_line_column(void)
+static gint editor_get_long_line_column(void)
{
if (app->project && app->project->long_line_behaviour != 1 /* use global settings */)
return app->project->long_line_column;
@@ -402,6 +402,44 @@
}
+static const GeanyEditorPrefs *
+get_default_prefs(void)
+{
+ static GeanyEditorPrefs eprefs;
+
+ eprefs = editor_prefs;
+
+ /* project overrides */
+ eprefs.indentation = (GeanyIndentPrefs*)editor_get_indent_prefs(NULL);
+ eprefs.long_line_global_type = editor_get_long_line_type();
+ eprefs.long_line_global_column = editor_get_long_line_column();
+ return &eprefs;
+}
+
+
+/* Gets the prefs for the editor.
+ * Prefs can be different according to project or filetype.
+ * @warning Always get a fresh result instead of keeping a pointer to it if the editor/project
+ * settings may have changed, or if this function has been called for a different editor.
+ * @param editor The editor, or @c NULL to get the default prefs.
+ * @return The prefs. */
+const GeanyEditorPrefs *editor_get_prefs(GeanyEditor *editor)
+{
+ static GeanyEditorPrefs eprefs;
+ const GeanyEditorPrefs *dprefs = get_default_prefs();
+
+ /* Return the address of the default prefs to allow returning default and editor
+ * pref pointers without invalidating the contents of either. */
+ if (editor == NULL)
+ return dprefs;
+
+ eprefs = *dprefs;
+ eprefs.indentation = (GeanyIndentPrefs*)editor_get_indent_prefs(editor);
+ /* add other editor & document overrides as needed */
+ return &eprefs;
+}
+
+
void editor_toggle_fold(GeanyEditor *editor, gint line, gint modifiers)
{
ScintillaObject *sci;
@@ -1136,7 +1174,7 @@
/** Gets the indentation prefs for the editor.
- * In future, the prefs might be different according to project or filetype.
+ * Prefs can be different according to project or filetype.
* @warning Always get a fresh result instead of keeping a pointer to it if the editor/project
* settings may have changed, or if this function has been called for a different editor.
* @param editor The editor, or @c NULL to get the default indent prefs.
Modified: trunk/src/editor.h
===================================================================
--- trunk/src/editor.h 2010-11-23 16:23:22 UTC (rev 5430)
+++ trunk/src/editor.h 2010-11-23 17:25:58 UTC (rev 5431)
@@ -104,14 +104,14 @@
* Some of these can be overridden per document or per project. */
typedef struct GeanyEditorPrefs
{
- GeanyIndentPrefs *indentation; /*< Default indentation prefs. @see editor_get_indent_prefs(). */
+ GeanyIndentPrefs *indentation; /* Default indentation prefs. Use editor_get_indent_prefs(). */
gboolean show_white_space;
gboolean show_indent_guide;
gboolean show_line_endings;
- /* 0 - line, 1 - background. This setting may be overriden when a project is opened. Use
- * @c editor_get_long_line_type(). */
+ /* 0 - line, 1 - background, 2 - disabled.
+ * This setting may be overriden when a project is opened. Use @c editor_get_prefs(). */
gint long_line_global_type;
- /* This setting may be overriden when a project is opened. Use @c editor_get_long_line_column(). */
+ /* This setting may be overriden when a project is opened. Use @c editor_get_prefs(). */
gint long_line_global_column;
gchar *long_line_color;
gboolean show_markers_margin; /* view menu */
@@ -229,10 +229,8 @@
void editor_snippets_free(void);
-/* 0 - line, 1 - background, 2 - disabled */
-gint editor_get_long_line_type(void);
+const GeanyEditorPrefs *editor_get_prefs(GeanyEditor *editor);
-gint editor_get_long_line_column(void);
/* General editing functions */
Modified: trunk/src/keybindings.c
===================================================================
--- trunk/src/keybindings.c 2010-11-23 16:23:22 UTC (rev 5430)
+++ trunk/src/keybindings.c 2010-11-23 17:25:58 UTC (rev 5431)
@@ -2321,16 +2321,17 @@
ScintillaObject *sci = editor->sci;
gboolean sel;
gint column = -1;
+ const GeanyEditorPrefs *eprefs = editor_get_prefs(editor);
if (editor->line_breaking)
{
/* use line break column if enabled */
- column = editor_prefs.line_break_column;
+ column = eprefs->line_break_column;
}
- else if (editor_get_long_line_type() != 2)
+ else if (eprefs->long_line_global_type != 2)
{
/* use long line if enabled */
- column = editor_get_long_line_column();
+ column = eprefs->long_line_global_column;
}
else
{
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