Revision: 1836
http://geany.svn.sourceforge.net/geany/?rev=1836&view=rev
Author: ntrel
Date: 2007-08-29 08:14:07 -0700 (Wed, 29 Aug 2007)
Log Message:
-----------
Add 'Current chars' indentation mode, rename 'Advanced' indentation
to 'Match braces' (closes #1726880).
For 'Match braces' indentation, if a brace could not be matched,
fall back to 'Current chars' indentation.
Modified Paths:
--------------
trunk/ChangeLog
trunk/doc/geany.html
trunk/doc/geany.txt
trunk/geany.glade
trunk/src/editor.c
trunk/src/editor.h
trunk/src/interface.c
trunk/src/keyfile.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2007-08-28 16:15:26 UTC (rev 1835)
+++ trunk/ChangeLog 2007-08-29 15:14:07 UTC (rev 1836)
@@ -1,3 +1,13 @@
+2007-08-29 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * src/keyfile.c, src/editor.c, src/editor.h, doc/geany.txt,
+ doc/geany.html:
+ Add 'Current chars' indentation mode, rename 'Advanced' indentation
+ to 'Match braces' (closes #1726880).
+ For 'Match braces' indentation, if a brace could not be matched,
+ fall back to 'Current chars' indentation.
+
+
2007-08-28 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/keyfile.c:
Modified: trunk/doc/geany.html
===================================================================
--- trunk/doc/geany.html 2007-08-28 16:15:26 UTC (rev 1835)
+++ trunk/doc/geany.html 2007-08-29 15:14:07 UTC (rev 1836)
@@ -6,7 +6,7 @@
<meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
<title>Geany</title>
<meta name="authors" content="Enrico Tröger Nick Treleaven Frank Lanitz" />
-<meta name="date" content="2007-08-16" />
+<meta name="date" content="2007-08-28" />
<style type="text/css">
/*
@@ -133,7 +133,7 @@
<br />Nick Treleaven
<br />Frank Lanitz</td></tr>
<tr><th class="docinfo-name">Date:</th>
-<td>2007-08-16</td></tr>
+<td>2007-08-28</td></tr>
<tr><th class="docinfo-name">Version:</th>
<td>0.12</td></tr>
</tbody>
@@ -695,16 +695,19 @@
</div>
<div class="section">
<h3><a class="toc-backref" href="#id25" id="auto-indentation" name="auto-indentation">Auto indentation</a></h3>
-<p>Geany knows three types of auto indentation:</p>
+<p>Geany knows four types of auto indentation:</p>
<dl class="docutils">
<dt>None</dt>
<dd>Disables auto indentation completely.</dd>
<dt>Basic</dt>
<dd>Adds the same amount of whitespace on a new line as on the last line.</dd>
-<dt>Advanced</dt>
-<dd>Does the same as Basic but also indents curly brackets and adds a
-tabulator character (or spaces) on a new line after an opening '{'
-brace.</dd>
+<dt>Current chars</dt>
+<dd>Does the same as <em>Basic</em> but also indents a new line after an opening
+brace '{', and de-indents when typing a closing brace '}'. For Python,
+a new line will be indented after typing ':' at the end of a line.</dd>
+<dt>Match braces</dt>
+<dd>Similar to <em>Current chars</em> but the closing brace will be aligned to
+match the indentation of the line with the opening brace.</dd>
</dl>
</div>
<div class="section">
@@ -1206,9 +1209,7 @@
<p>Keybinding tab in preferences dialog</p>
<img alt="./images/pref_dialog_keys.png" src="./images/pref_dialog_keys.png" />
<p>There are some handy commands in here that are not, by default,
-bound to a key combination, and may in fact not even be available as
-a menu item (for example, the very handy "Hide and show all additional
-widgets").</p>
+bound to a key combination, and may not be available as a menu item.</p>
<div class="note">
<p class="first admonition-title">Note</p>
<p class="last">For more information see the section called <a class="reference" href="#keybindings">Keybindings</a>.</p>
@@ -2928,7 +2929,7 @@
<div class="footer">
<hr class="footer" />
<a class="reference" href="geany.txt">View document source</a>.
-Generated on: 2007-08-28 15:43 UTC.
+Generated on: 2007-08-29 10:58 UTC.
Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
</div>
Modified: trunk/doc/geany.txt
===================================================================
--- trunk/doc/geany.txt 2007-08-28 16:15:26 UTC (rev 1835)
+++ trunk/doc/geany.txt 2007-08-29 15:14:07 UTC (rev 1836)
@@ -451,16 +451,19 @@
Auto indentation
^^^^^^^^^^^^^^^^
-Geany knows three types of auto indentation:
+Geany knows four types of auto indentation:
None
Disables auto indentation completely.
Basic
Adds the same amount of whitespace on a new line as on the last line.
-Advanced
- Does the same as Basic but also indents curly brackets and adds a
- tabulator character (or spaces) on a new line after an opening '{'
- brace.
+Current chars
+ Does the same as *Basic* but also indents a new line after an opening
+ brace '{', and de-indents when typing a closing brace '}'. For Python,
+ a new line will be indented after typing ':' at the end of a line.
+Match braces
+ Similar to *Current chars* but the closing brace will be aligned to
+ match the indentation of the line with the opening brace.
Bookmarks
@@ -1043,9 +1046,7 @@
.. image:: ./images/pref_dialog_keys.png
There are some handy commands in here that are not, by default,
-bound to a key combination, and may in fact not even be available as
-a menu item (for example, the very handy "Hide and show all additional
-widgets").
+bound to a key combination, and may not be available as a menu item.
.. note::
For more information see the section called `Keybindings`_.
Modified: trunk/geany.glade
===================================================================
--- trunk/geany.glade 2007-08-28 16:15:26 UTC (rev 1835)
+++ trunk/geany.glade 2007-08-29 15:14:07 UTC (rev 1836)
@@ -5561,7 +5561,8 @@
<property name="visible">True</property>
<property name="items" translatable="yes">None
Basic
-Advanced</property>
+Current chars
+Match braces</property>
<property name="add_tearoffs">False</property>
<property name="focus_on_click">True</property>
</widget>
Modified: trunk/src/editor.c
===================================================================
--- trunk/src/editor.c 2007-08-28 16:15:26 UTC (rev 1835)
+++ trunk/src/editor.c 2007-08-29 15:14:07 UTC (rev 1836)
@@ -232,8 +232,7 @@
}
case '}':
{ // closing bracket handling
- if (doc_list[idx].auto_indent &&
- editor_prefs.indent_mode == INDENT_ADVANCED)
+ if (doc_list[idx].auto_indent)
editor_close_block(idx, pos - 1);
break;
}
@@ -406,7 +405,7 @@
get_indent(sci, pos, FALSE);
sci_add_text(sci, indent);
- if (editor_prefs.indent_mode == INDENT_ADVANCED)
+ if (editor_prefs.indent_mode > INDENT_BASIC)
{
// add extra indentation for Python after colon
if (FILETYPE_ID(doc_list[idx].file_type) == GEANY_FILETYPES_PYTHON &&
@@ -489,7 +488,7 @@
{
if (linebuf[i] == ' ' || linebuf[i] == '\t') // simple indentation
indent[j++] = linebuf[i];
- else if (editor_prefs.indent_mode != INDENT_ADVANCED)
+ else if (editor_prefs.indent_mode <= INDENT_BASIC)
break;
else if (use_this_line)
break;
@@ -580,15 +579,19 @@
}
-/* Called after typing '}', if editor_prefs.indent_mode is INDENT_ADVANCED. */
+/* Called after typing '}'. */
void editor_close_block(gint idx, gint pos)
{
gint x = 0, cnt = 0;
- gint start_brace, line, line_len, eol_char_len;
+ gint line, line_len, eol_char_len;
gchar *text, *line_buf;
ScintillaObject *sci;
+ gint line_indent, last_indent;
- if (idx == -1 || ! doc_list[idx].is_valid || doc_list[idx].file_type == NULL) return;
+ if (editor_prefs.indent_mode < INDENT_CURRENTCHARS)
+ return;
+ if (idx == -1 || ! doc_list[idx].is_valid || doc_list[idx].file_type == NULL)
+ return;
sci = doc_list[idx].sci;
@@ -611,34 +614,37 @@
}
g_free(line_buf);
- if ((line_len - eol_char_len - 1) != cnt) return;
+ if ((line_len - eol_char_len - 1) != cnt)
+ return;
- start_brace = brace_match(sci, pos); // same as sci_find_bracematch (Document::BraceMatch)?
-
- if (start_brace >= 0)
+ if (editor_prefs.indent_mode == INDENT_MATCHBRACES)
{
- gint line_start;
+ gint start_brace = brace_match(sci, pos);
- get_indent(sci, start_brace, TRUE);
- text = g_strconcat(indent, "}", NULL);
- line_start = sci_get_position_from_line(sci, line);
- sci_set_anchor(sci, line_start);
- SSM(sci, SCI_REPLACESEL, 0, (sptr_t) text);
- g_free(text);
- }
- else
- if (sci_get_lexer(sci) == SCLEX_HTML || sci_get_lexer(sci) == SCLEX_TCL)
- { /* For TCL & PHP brace_match doesn't work here (maybe lexer bugs?),
- * so this is a simple workaround. */
- gint line_indent = sci_get_line_indentation(sci, line);
- gint last_indent = sci_get_line_indentation(sci, line - 1);
+ if (start_brace >= 0)
+ {
+ gint line_start;
- if (line_indent < last_indent)
+ get_indent(sci, start_brace, TRUE);
+ text = g_strconcat(indent, "}", NULL);
+ line_start = sci_get_position_from_line(sci, line);
+ sci_set_anchor(sci, line_start);
+ SSM(sci, SCI_REPLACESEL, 0, (sptr_t) text);
+ g_free(text);
return;
- line_indent -= editor_prefs.tab_width;
- line_indent = MAX(0, line_indent);
- sci_set_line_indentation(sci, line, line_indent);
+ }
+ // fall through - unmatched brace (possibly because of TCL, PHP lexer bugs)
}
+
+ // INDENT_CURRENTCHARS
+ line_indent = sci_get_line_indentation(sci, line);
+ last_indent = sci_get_line_indentation(sci, line - 1);
+
+ if (line_indent < last_indent)
+ return;
+ line_indent -= editor_prefs.tab_width;
+ line_indent = MAX(0, line_indent);
+ sci_set_line_indentation(sci, line, line_indent);
}
Modified: trunk/src/editor.h
===================================================================
--- trunk/src/editor.h 2007-08-28 16:15:26 UTC (rev 1835)
+++ trunk/src/editor.h 2007-08-29 15:14:07 UTC (rev 1836)
@@ -35,7 +35,8 @@
{
INDENT_NONE = 0,
INDENT_BASIC,
- INDENT_ADVANCED
+ INDENT_CURRENTCHARS,
+ INDENT_MATCHBRACES
} IndentMode;
/* These are the default prefs when creating a new editor window.
Modified: trunk/src/interface.c
===================================================================
--- trunk/src/interface.c 2007-08-28 16:15:26 UTC (rev 1835)
+++ trunk/src/interface.c 2007-08-29 15:14:07 UTC (rev 1836)
@@ -3493,7 +3493,8 @@
(GtkAttachOptions) (GTK_FILL), 0, 0);
gtk_combo_box_append_text (GTK_COMBO_BOX (combo_auto_indent_mode), _("None"));
gtk_combo_box_append_text (GTK_COMBO_BOX (combo_auto_indent_mode), _("Basic"));
- gtk_combo_box_append_text (GTK_COMBO_BOX (combo_auto_indent_mode), _("Advanced"));
+ gtk_combo_box_append_text (GTK_COMBO_BOX (combo_auto_indent_mode), _("Current chars"));
+ gtk_combo_box_append_text (GTK_COMBO_BOX (combo_auto_indent_mode), _("Match braces"));
label195 = gtk_label_new (_("<b>Indentation</b>"));
gtk_widget_show (label195);
Modified: trunk/src/keyfile.c
===================================================================
--- trunk/src/keyfile.c 2007-08-28 16:15:26 UTC (rev 1835)
+++ trunk/src/keyfile.c 2007-08-29 15:14:07 UTC (rev 1836)
@@ -428,7 +428,7 @@
editor_prefs.long_line_column = utils_get_setting_integer(config, PACKAGE, "long_line_column", 72);
editor_prefs.autocompletion_max_height = utils_get_setting_integer(config, PACKAGE, "autocompletion_max_height", GEANY_MAX_AUTOCOMPLETE_HEIGHT);
editor_prefs.line_wrapping = utils_get_setting_boolean(config, PACKAGE, "line_breaking", FALSE); // default is off for better performance
- editor_prefs.indent_mode = utils_get_setting_integer(config, PACKAGE, "indent_mode", INDENT_ADVANCED);
+ editor_prefs.indent_mode = utils_get_setting_integer(config, PACKAGE, "indent_mode", INDENT_CURRENTCHARS);
editor_prefs.use_tab_to_indent = utils_get_setting_boolean(config, PACKAGE, "use_tab_to_indent", FALSE);
editor_prefs.use_indicators = utils_get_setting_boolean(config, PACKAGE, "use_indicators", TRUE);
editor_prefs.show_indent_guide = utils_get_setting_boolean(config, PACKAGE, "show_indent_guide", FALSE);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 1835
http://geany.svn.sourceforge.net/geany/?rev=1835&view=rev
Author: ntrel
Date: 2007-08-28 09:15:26 -0700 (Tue, 28 Aug 2007)
Log Message:
-----------
Add more complete information for adding a filetype.
Modified Paths:
--------------
trunk/ChangeLog
trunk/HACKING
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2007-08-28 15:45:54 UTC (rev 1834)
+++ trunk/ChangeLog 2007-08-28 16:15:26 UTC (rev 1835)
@@ -6,6 +6,8 @@
doc/geany.html:
Add hidden editor preference 'use_gtk_word_boundaries'.
Add docs appendix 'Hidden preferences'.
+ * HACKING:
+ Add more complete information for adding a filetype.
2007-08-28 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
Modified: trunk/HACKING
===================================================================
--- trunk/HACKING 2007-08-28 15:45:54 UTC (rev 1834)
+++ trunk/HACKING 2007-08-28 16:15:26 UTC (rev 1835)
@@ -82,7 +82,7 @@
Adding a filetype
-----------------
You can add a filetype without syntax highlighting or tag parsing, but check to see if those
-features have been written elsewhere.
+features have been written in other projects first.
For syntax highlighting, it may be possible to use an existing Scintilla lexer in the scintilla/
subdirectory - if not, you will need to find (or write) one, LexFoo.cxx. Try the Scintilla project
@@ -92,6 +92,10 @@
Add GEANY_FILETYPES_FOO to filetypes.h.
Initialize GEANY_FILETYPES_FOO in filetypes_init_types() of filetypes.c.
+The filetype::style_func_ptr is a callback for setting up styling information. The callback,
+styleset_foo(), should be added in highlighting.c. The first time it is called, the configuration
+should be loaded in styleset_foo_init(). For more details, see styleset_c(). If there isn't a
+Scintilla lexer, use styleset_none().
Rebuild Geany.
From your geany/ directory, run:
src/geany --generate-data-files
@@ -99,9 +103,30 @@
(The src/ prefix may be different, depending on where the binary is generated.)
This will update data/filetype_extensions.conf. Note that you need GEANY_DEBUG to be defined when
building Geany for the --generate-data-files argument to work - this is always defined in the SVN
-version.
+version. Alternatively, edit the file by hand.
+Most languages will also need a data/filetypes.foo configuration file. See data/filetypes.c
+for an example. For languages with a Scintilla lexer, there should be a [styling] section, to
+correspond to the styles used in styleset_foo().
+Programming languages should have:
+[keywords] if the lexer supports it.
+[settings] mostly for comment settings.
+[build_settings] for commands to run.
+
+Error message parsing is done in msgwin_parse_compiler_error_line() of msgwindow.c. See the
+ParseData typedef for more information. (In future this may be done with a regex).
+
+For brace indentation, see lexer_has_braces() in editor.c; other indentation is done from
+on_new_line_added().
+
+If the lexer has comment styles, you should add them in is_comment() in editor.c. For now,
+this prevents calltips and autocompletion when typing in a comment.
+
+If the Scintilla lexer supports user type keywords (e.g. SCLEX_CPP), see
+editor_lexer_get_type_keyword_idx() in editor.c.
+
+
Adding a TagManager parser
--------------------------
This assumes the Geany filetype already exists.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 1831
http://geany.svn.sourceforge.net/geany/?rev=1831&view=rev
Author: eht16
Date: 2007-08-28 03:48:52 -0700 (Tue, 28 Aug 2007)
Log Message:
-----------
Fix comment for PLUGIN_INFO.
Modified Paths:
--------------
trunk/plugins/demoplugin.c
Modified: trunk/plugins/demoplugin.c
===================================================================
--- trunk/plugins/demoplugin.c 2007-08-27 16:54:15 UTC (rev 1830)
+++ trunk/plugins/demoplugin.c 2007-08-28 10:48:52 UTC (rev 1831)
@@ -37,7 +37,7 @@
* for binary compatibility. */
VERSION_CHECK(7)
-/* All plugins must set name and description */
+/* All plugins must set name, description and version */
PLUGIN_INFO(_("Demo"), _("Example plugin."), "0.1")
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.