Revision: 4340 http://geany.svn.sourceforge.net/geany/?rev=4340&view=rev Author: ntrel Date: 2009-10-19 14:58:51 +0000 (Mon, 19 Oct 2009)
Log Message: ----------- Add filetype "lexer_filetype" key so custom filetypes can use an existing lexer.
Modified Paths: -------------- trunk/ChangeLog trunk/doc/geany.html trunk/doc/geany.txt trunk/src/filetypes.c trunk/src/filetypes.h trunk/src/highlighting.c
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2009-10-19 14:24:40 UTC (rev 4339) +++ trunk/ChangeLog 2009-10-19 14:58:51 UTC (rev 4340) @@ -8,6 +8,10 @@ Add filetype "tag_parser" key so custom filetypes can use an existing tag parser. Add tm_source_file_get_named_lang(). + * src/highlighting.c, src/filetypes.c, src/filetypes.h, doc/geany.txt, + doc/geany.html: + Add filetype "lexer_filetype" key so custom filetypes can use an + existing lexer.
2009-10-19 Frank Lanitz <frank(at)frank(dot)uvena(dot)de>
Modified: trunk/doc/geany.html =================================================================== --- trunk/doc/geany.html 2009-10-19 14:24:40 UTC (rev 4339) +++ trunk/doc/geany.html 2009-10-19 14:58:51 UTC (rev 4340) @@ -3967,13 +3967,22 @@ the '<tt class="docutils literal"><span class="pre">*</span></tt>' wildcard.</p> <p>Custom filetypes are not as powerful as built-in filetypes. The following have been implemented:</p> -<ul class="simple"> -<li>Recognizing and setting the filetype (after the user has manually edited -<tt class="docutils literal"><span class="pre">filetype_extensions.conf</span></tt>).</li> -<li>Filetype settings in the [settings] section (see <a class="reference" href="#format">Format</a>).</li> -<li>Build commands.</li> -<li>Tag parsing (<tt class="docutils literal"><span class="pre">tag_parser</span></tt> key).</li> +<ul> +<li><p class="first">Recognizing and setting the filetype (after the user has manually edited +<tt class="docutils literal"><span class="pre">filetype_extensions.conf</span></tt>).</p> +</li> +<li><dl class="first docutils"> +<dt>Filetype settings in the [settings] section (see <a class="reference" href="#format">Format</a>).</dt> +<dd><ul class="first last simple"> +<li>Using existing tag parsing (<tt class="docutils literal"><span class="pre">tag_parser</span></tt> key).</li> +<li>Using existing syntax highlighting (<tt class="docutils literal"><span class="pre">lexer_filetype</span></tt> key).</li> </ul> +</dd> +</dl> +</li> +<li><p class="first">Build commands.</p> +</li> +</ul> </div> <div class="section"> <h3><a class="toc-backref" href="#id174" id="system-files" name="system-files">System files</a></h3> @@ -4119,6 +4128,8 @@ </dd> <dt>tag_parser</dt> <dd>The TagManager language name, e.g. "C".</dd> +<dt>lexer_filetype</dt> +<dd>A filetype name to setup syntax highlighting from another filetype.</dd> </dl> </div> <div class="section"> @@ -5753,7 +5764,7 @@ <div class="footer"> <hr class="footer" /> <a class="reference" href="geany.txt">View document source</a>. -Generated on: 2009-10-19 14:14 UTC. +Generated on: 2009-10-19 14:50 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 2009-10-19 14:24:40 UTC (rev 4339) +++ trunk/doc/geany.txt 2009-10-19 14:58:51 UTC (rev 4340) @@ -3334,8 +3334,9 @@ * Recognizing and setting the filetype (after the user has manually edited ``filetype_extensions.conf``). * Filetype settings in the [settings] section (see `Format`_). + * Using existing tag parsing (``tag_parser`` key). + * Using existing syntax highlighting (``lexer_filetype`` key). * Build commands. -* Tag parsing (``tag_parser`` key).
System files ^^^^^^^^^^^^ @@ -3506,7 +3507,10 @@ tag_parser The TagManager language name, e.g. "C".
+lexer_filetype + A filetype name to setup syntax highlighting from another filetype.
+ [build_settings] Section ````````````````````````
Modified: trunk/src/filetypes.c =================================================================== --- trunk/src/filetypes.c 2009-10-19 14:24:40 UTC (rev 4339) +++ trunk/src/filetypes.c 2009-10-19 14:58:51 UTC (rev 4340) @@ -1244,6 +1244,15 @@ g_free(result); }
+ result = utils_get_setting_string(configh, "settings", "lexer_filetype", NULL); + if (!result) + result = utils_get_setting_string(config, "settings", "lexer_filetype", NULL); + if (result) + { + ft->lexer_filetype = filetypes_lookup_by_name(result); + g_free(result); + } + /* read build settings */ build_load_menu(config, GEANY_BCS_FT, (gpointer)ft); build_load_menu(configh, GEANY_BCS_HOME_FT, (gpointer)ft);
Modified: trunk/src/filetypes.h =================================================================== --- trunk/src/filetypes.h 2009-10-19 14:24:40 UTC (rev 4339) +++ trunk/src/filetypes.h 2009-10-19 14:58:51 UTC (rev 4340) @@ -119,6 +119,7 @@ gboolean comment_use_indent; GeanyFiletypeGroupID group; gchar *error_regex_string; + GeanyFiletype *lexer_filetype;
struct GeanyFiletypePrivate *priv; /* must be last, append fields before this item */ #ifdef GEANY_PRIVATE
Modified: trunk/src/highlighting.c =================================================================== --- trunk/src/highlighting.c 2009-10-19 14:24:40 UTC (rev 4339) +++ trunk/src/highlighting.c 2009-10-19 14:58:51 UTC (rev 4340) @@ -3243,6 +3243,13 @@ { filetypes_load_config(ft->id, FALSE); /* load filetypes.ext */
+ /* now settings are loaded, check lexer_filetype */ + if (ft->lexer_filetype) + { + highlighting_set_styles(sci, ft->lexer_filetype); + return; + } + /* load tags files (some lexers highlight global typenames) */ if (ft->id != GEANY_FILETYPES_NONE) symbols_global_tags_loaded(ft->id);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.