SF.net SVN: geany: [2266] trunk

eht16 at users.sourceforge.net eht16 at xxxxx
Mon Feb 18 19:51:36 UTC 2008


Revision: 2266
          http://geany.svn.sourceforge.net/geany/?rev=2266&view=rev
Author:   eht16
Date:     2008-02-18 11:51:34 -0800 (Mon, 18 Feb 2008)

Log Message:
-----------
Add support for reading tags(only for C/C++) from a file which should be ignored while parsing the file (ctags command line option -I).

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/doc/geany.html
    trunk/doc/geany.txt
    trunk/src/symbols.c
    trunk/src/symbols.h
    trunk/tagmanager/options.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2008-02-18 17:18:50 UTC (rev 2265)
+++ trunk/ChangeLog	2008-02-18 19:51:34 UTC (rev 2266)
@@ -3,6 +3,10 @@
  * src/vte.c: Apply patch from Jeff Pohlmeyer to mark the VTE also as
               clean when Ctrl-C is pressed (thanks).
  * src/socket.c: Fix compiler warnings on Windows.
+ * doc/geany.html, doc/geany.txt, src/symbols.c, src/symbols.h,
+   tagmanager/options.c:
+   Add support for reading tags(only for C/C++) from a file which should
+   be ignored while parsing the file (ctags command line option -I).
 
 
 2008-02-17  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>

Modified: trunk/doc/geany.html
===================================================================
--- trunk/doc/geany.html	2008-02-18 17:18:50 UTC (rev 2265)
+++ trunk/doc/geany.html	2008-02-18 19:51:34 UTC (rev 2266)
@@ -221,94 +221,95 @@
 <li><a class="reference" href="#generating-a-global-tags-file" id="id53" name="id53">Generating a global tags file</a></li>
 </ul>
 </li>
+<li><a class="reference" href="#ignore-tags" id="id54" name="id54">Ignore tags</a></li>
 </ul>
 </li>
-<li><a class="reference" href="#preferences" id="id54" name="id54">Preferences</a><ul>
-<li><a class="reference" href="#general-tab-in-preferences-dialog" id="id55" name="id55">General tab in preferences dialog</a></li>
-<li><a class="reference" href="#interface-tab-in-preferences-dialog" id="id56" name="id56">Interface tab in preferences dialog</a></li>
-<li><a class="reference" href="#toolbar-tab-in-preferences-dialog" id="id57" name="id57">Toolbar tab in preferences dialog</a></li>
-<li><a class="reference" href="#display-tab-in-preferences-dialog" id="id58" name="id58">Display tab in preferences dialog</a></li>
-<li><a class="reference" href="#editor-tab-in-preferences-dialog" id="id59" name="id59">Editor tab in preferences dialog</a></li>
-<li><a class="reference" href="#files-tab-in-preferences-dialog" id="id60" name="id60">Files tab in preferences dialog</a></li>
-<li><a class="reference" href="#tools-tab-in-preferences-dialog" id="id61" name="id61">Tools tab in preferences dialog</a></li>
-<li><a class="reference" href="#template-tab-in-preferences-dialog" id="id62" name="id62">Template tab in preferences dialog</a></li>
-<li><a class="reference" href="#keybinding-tab-in-preferences-dialog" id="id63" name="id63">Keybinding tab in preferences dialog</a></li>
-<li><a class="reference" href="#printing-tab-in-preferences-dialog" id="id64" name="id64">Printing tab in preferences dialog</a></li>
-<li><a class="reference" href="#vte-tab-in-preferences-dialog" id="id65" name="id65">VTE tab in preferences dialog</a></li>
+<li><a class="reference" href="#preferences" id="id55" name="id55">Preferences</a><ul>
+<li><a class="reference" href="#general-tab-in-preferences-dialog" id="id56" name="id56">General tab in preferences dialog</a></li>
+<li><a class="reference" href="#interface-tab-in-preferences-dialog" id="id57" name="id57">Interface tab in preferences dialog</a></li>
+<li><a class="reference" href="#toolbar-tab-in-preferences-dialog" id="id58" name="id58">Toolbar tab in preferences dialog</a></li>
+<li><a class="reference" href="#display-tab-in-preferences-dialog" id="id59" name="id59">Display tab in preferences dialog</a></li>
+<li><a class="reference" href="#editor-tab-in-preferences-dialog" id="id60" name="id60">Editor tab in preferences dialog</a></li>
+<li><a class="reference" href="#files-tab-in-preferences-dialog" id="id61" name="id61">Files tab in preferences dialog</a></li>
+<li><a class="reference" href="#tools-tab-in-preferences-dialog" id="id62" name="id62">Tools tab in preferences dialog</a></li>
+<li><a class="reference" href="#template-tab-in-preferences-dialog" id="id63" name="id63">Template tab in preferences dialog</a></li>
+<li><a class="reference" href="#keybinding-tab-in-preferences-dialog" id="id64" name="id64">Keybinding tab in preferences dialog</a></li>
+<li><a class="reference" href="#printing-tab-in-preferences-dialog" id="id65" name="id65">Printing tab in preferences dialog</a></li>
+<li><a class="reference" href="#vte-tab-in-preferences-dialog" id="id66" name="id66">VTE tab in preferences dialog</a></li>
 </ul>
 </li>
-<li><a class="reference" href="#project-management" id="id66" name="id66">Project Management</a><ul>
-<li><a class="reference" href="#new-project" id="id67" name="id67">New Project</a></li>
-<li><a class="reference" href="#project-properties" id="id68" name="id68">Project Properties</a><ul>
-<li><a class="reference" href="#make-in-base-path" id="id69" name="id69">Make in base path</a></li>
-<li><a class="reference" href="#run-command" id="id70" name="id70">Run command</a></li>
+<li><a class="reference" href="#project-management" id="id67" name="id67">Project Management</a><ul>
+<li><a class="reference" href="#new-project" id="id68" name="id68">New Project</a></li>
+<li><a class="reference" href="#project-properties" id="id69" name="id69">Project Properties</a><ul>
+<li><a class="reference" href="#make-in-base-path" id="id70" name="id70">Make in base path</a></li>
+<li><a class="reference" href="#run-command" id="id71" name="id71">Run command</a></li>
 </ul>
 </li>
-<li><a class="reference" href="#open-project" id="id71" name="id71">Open Project</a></li>
-<li><a class="reference" href="#close-project" id="id72" name="id72">Close Project</a></li>
+<li><a class="reference" href="#open-project" id="id72" name="id72">Open Project</a></li>
+<li><a class="reference" href="#close-project" id="id73" name="id73">Close Project</a></li>
 </ul>
 </li>
-<li><a class="reference" href="#build-system" id="id73" name="id73">Build system</a><ul>
-<li><a class="reference" href="#compile" id="id74" name="id74">Compile</a></li>
-<li><a class="reference" href="#build" id="id75" name="id75">Build</a></li>
-<li><a class="reference" href="#make-all" id="id76" name="id76">Make all</a></li>
-<li><a class="reference" href="#make-custom-target" id="id77" name="id77">Make custom target</a></li>
-<li><a class="reference" href="#make-object" id="id78" name="id78">Make object</a></li>
-<li><a class="reference" href="#execute" id="id79" name="id79">Execute</a></li>
-<li><a class="reference" href="#stopping-running-processes" id="id80" name="id80">Stopping running processes</a><ul>
-<li><a class="reference" href="#terminal-emulators" id="id81" name="id81">Terminal emulators</a></li>
+<li><a class="reference" href="#build-system" id="id74" name="id74">Build system</a><ul>
+<li><a class="reference" href="#compile" id="id75" name="id75">Compile</a></li>
+<li><a class="reference" href="#build" id="id76" name="id76">Build</a></li>
+<li><a class="reference" href="#make-all" id="id77" name="id77">Make all</a></li>
+<li><a class="reference" href="#make-custom-target" id="id78" name="id78">Make custom target</a></li>
+<li><a class="reference" href="#make-object" id="id79" name="id79">Make object</a></li>
+<li><a class="reference" href="#execute" id="id80" name="id80">Execute</a></li>
+<li><a class="reference" href="#stopping-running-processes" id="id81" name="id81">Stopping running processes</a><ul>
+<li><a class="reference" href="#terminal-emulators" id="id82" name="id82">Terminal emulators</a></li>
 </ul>
 </li>
-<li><a class="reference" href="#set-includes-and-arguments" id="id82" name="id82">Set Includes and Arguments</a><ul>
-<li><a class="reference" href="#one-step-compilation" id="id83" name="id83">One step compilation</a></li>
+<li><a class="reference" href="#set-includes-and-arguments" id="id83" name="id83">Set Includes and Arguments</a><ul>
+<li><a class="reference" href="#one-step-compilation" id="id84" name="id84">One step compilation</a></li>
 </ul>
 </li>
-<li><a class="reference" href="#indicators" id="id84" name="id84">Indicators</a></li>
+<li><a class="reference" href="#indicators" id="id85" name="id85">Indicators</a></li>
 </ul>
 </li>
-<li><a class="reference" href="#printing-support" id="id85" name="id85">Printing support</a></li>
-<li><a class="reference" href="#plugins" id="id86" name="id86">Plugins</a></li>
-<li><a class="reference" href="#keybindings" id="id87" name="id87">Keybindings</a><ul>
-<li><a class="reference" href="#switching-documents" id="id88" name="id88">Switching documents</a></li>
-<li><a class="reference" href="#configurable-keybindings" id="id89" name="id89">Configurable keybindings</a></li>
+<li><a class="reference" href="#printing-support" id="id86" name="id86">Printing support</a></li>
+<li><a class="reference" href="#plugins" id="id87" name="id87">Plugins</a></li>
+<li><a class="reference" href="#keybindings" id="id88" name="id88">Keybindings</a><ul>
+<li><a class="reference" href="#switching-documents" id="id89" name="id89">Switching documents</a></li>
+<li><a class="reference" href="#configurable-keybindings" id="id90" name="id90">Configurable keybindings</a></li>
 </ul>
 </li>
 </ul>
 </li>
-<li><a class="reference" href="#configuration-files" id="id90" name="id90">Configuration files</a><ul>
-<li><a class="reference" href="#global-configuration-file" id="id91" name="id91">Global configuration file</a></li>
-<li><a class="reference" href="#filetype-definition-files" id="id92" name="id92">Filetype definition files</a><ul>
-<li><a class="reference" href="#format" id="id93" name="id93">Format</a><ul>
-<li><a class="reference" href="#styling-section" id="id94" name="id94">[styling] Section</a></li>
-<li><a class="reference" href="#keywords-section" id="id95" name="id95">[keywords] Section</a></li>
-<li><a class="reference" href="#settings-section" id="id96" name="id96">[settings] Section</a></li>
-<li><a class="reference" href="#build-settings-section" id="id97" name="id97">[build_settings] Section</a></li>
+<li><a class="reference" href="#configuration-files" id="id91" name="id91">Configuration files</a><ul>
+<li><a class="reference" href="#global-configuration-file" id="id92" name="id92">Global configuration file</a></li>
+<li><a class="reference" href="#filetype-definition-files" id="id93" name="id93">Filetype definition files</a><ul>
+<li><a class="reference" href="#format" id="id94" name="id94">Format</a><ul>
+<li><a class="reference" href="#styling-section" id="id95" name="id95">[styling] Section</a></li>
+<li><a class="reference" href="#keywords-section" id="id96" name="id96">[keywords] Section</a></li>
+<li><a class="reference" href="#settings-section" id="id97" name="id97">[settings] Section</a></li>
+<li><a class="reference" href="#build-settings-section" id="id98" name="id98">[build_settings] Section</a></li>
 </ul>
 </li>
-<li><a class="reference" href="#special-file-filetypes-common" id="id98" name="id98">Special file filetypes.common</a></li>
+<li><a class="reference" href="#special-file-filetypes-common" id="id99" name="id99">Special file filetypes.common</a></li>
 </ul>
 </li>
-<li><a class="reference" href="#filetype-extensions" id="id99" name="id99">Filetype extensions</a></li>
-<li><a class="reference" href="#templates" id="id100" name="id100">Templates</a><ul>
-<li><a class="reference" href="#template-metadata" id="id101" name="id101">Template metadata</a></li>
-<li><a class="reference" href="#filetype-templates" id="id102" name="id102">Filetype templates</a></li>
-<li><a class="reference" href="#customizing-templates" id="id103" name="id103">Customizing templates</a><ul>
-<li><a class="reference" href="#template-wildcards" id="id104" name="id104">Template wildcards</a></li>
+<li><a class="reference" href="#filetype-extensions" id="id100" name="id100">Filetype extensions</a></li>
+<li><a class="reference" href="#templates" id="id101" name="id101">Templates</a><ul>
+<li><a class="reference" href="#template-metadata" id="id102" name="id102">Template metadata</a></li>
+<li><a class="reference" href="#filetype-templates" id="id103" name="id103">Filetype templates</a></li>
+<li><a class="reference" href="#customizing-templates" id="id104" name="id104">Customizing templates</a><ul>
+<li><a class="reference" href="#template-wildcards" id="id105" name="id105">Template wildcards</a></li>
 </ul>
 </li>
 </ul>
 </li>
 </ul>
 </li>
-<li><a class="reference" href="#contributing-to-this-document" id="id105" name="id105">Contributing to this document</a></li>
-<li><a class="reference" href="#scintilla-keyboard-commands" id="id106" name="id106">Scintilla keyboard commands</a><ul>
-<li><a class="reference" href="#keyboard-commands" id="id107" name="id107">Keyboard commands</a></li>
+<li><a class="reference" href="#contributing-to-this-document" id="id106" name="id106">Contributing to this document</a></li>
+<li><a class="reference" href="#scintilla-keyboard-commands" id="id107" name="id107">Scintilla keyboard commands</a><ul>
+<li><a class="reference" href="#keyboard-commands" id="id108" name="id108">Keyboard commands</a></li>
 </ul>
 </li>
-<li><a class="reference" href="#hidden-preferences" id="id108" name="id108">Hidden preferences</a></li>
-<li><a class="reference" href="#compile-time-options" id="id109" name="id109">Compile-time options</a></li>
-<li><a class="reference" href="#gnu-general-public-license" id="id110" name="id110">GNU General Public License</a></li>
-<li><a class="reference" href="#license-for-scintilla-and-scite" id="id111" name="id111">License for Scintilla and SciTE</a></li>
+<li><a class="reference" href="#hidden-preferences" id="id109" name="id109">Hidden preferences</a></li>
+<li><a class="reference" href="#compile-time-options" id="id110" name="id110">Compile-time options</a></li>
+<li><a class="reference" href="#gnu-general-public-license" id="id111" name="id111">GNU General Public License</a></li>
+<li><a class="reference" href="#license-for-scintilla-and-scite" id="id112" name="id112">License for Scintilla and SciTE</a></li>
 </ul>
 </div>
 <div class="section">
@@ -1319,9 +1320,32 @@
 upgrading Geany.</p>
 </div>
 </div>
+<div class="section">
+<h3><a class="toc-backref" href="#id54" id="ignore-tags" name="ignore-tags">Ignore tags</a></h3>
+<p>You can also ignore certain tags if they would lead to wrong parsing of
+the code. Simply create a file called "ignore.tags" in your Geany
+configuration directory (usually <tt class="docutils literal"><span class="pre">~/.geany/</span></tt>). Then list all tags
+you want to ignore in this file, separated by spaces and/or newlines.</p>
+<p>More detailed information about the usage from the Exuberant Ctags
+manual page:</p>
+<pre class="literal-block">
+Specifies a list of identifiers which are to be specially handled
+while  parsing C and C++ source files. This option is specifically
+provided to handle special cases arising through the use of
+preprocessor macros. When the identifiers listed are simple identifiers,
+these identifiers will be ignored during parsing of the source files.
+If an identifier is suffixed with a '+' character, ctags will also
+ignore any parenthesis-enclosed argument list which may immediately
+follow the identifier in the source files.
+If two identifiers are separated with the '=' character, the first
+identifiers is replaced by the second identifiers for parsing purposes.
+</pre>
+<p>For even more detailed information please read the manual page of
+Exuberant Ctags.</p>
 </div>
+</div>
 <div class="section">
-<h2><a class="toc-backref" href="#id54" id="preferences" name="preferences">Preferences</a></h2>
+<h2><a class="toc-backref" href="#id55" id="preferences" name="preferences">Preferences</a></h2>
 <p>You may adjust Geany's settings using the Edit --> Preferences
 dialog. Any changes you make there can be applied by hitting either
 the Apply or the Ok button. These settings will persist between Geany
@@ -1339,12 +1363,12 @@
 (if present) comes after the screenshot of that tab.</p>
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id55" id="general-tab-in-preferences-dialog" name="general-tab-in-preferences-dialog">General tab in preferences dialog</a></h3>
+<h3><a class="toc-backref" href="#id56" id="general-tab-in-preferences-dialog" name="general-tab-in-preferences-dialog">General tab in preferences dialog</a></h3>
 <p>General tab in preferences dialog</p>
 <img alt="./images/pref_dialog_gen.png" src="./images/pref_dialog_gen.png" />
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id56" id="interface-tab-in-preferences-dialog" name="interface-tab-in-preferences-dialog">Interface tab in preferences dialog</a></h3>
+<h3><a class="toc-backref" href="#id57" id="interface-tab-in-preferences-dialog" name="interface-tab-in-preferences-dialog">Interface tab in preferences dialog</a></h3>
 <p>Interface tab in preferences dialog</p>
 <img alt="./images/pref_dialog_interface.png" src="./images/pref_dialog_interface.png" />
 <p>The documents list and the editor tabs are two different ways
@@ -1354,17 +1378,17 @@
 whether or not editor tabs are visible).</p>
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id57" id="toolbar-tab-in-preferences-dialog" name="toolbar-tab-in-preferences-dialog">Toolbar tab in preferences dialog</a></h3>
+<h3><a class="toc-backref" href="#id58" id="toolbar-tab-in-preferences-dialog" name="toolbar-tab-in-preferences-dialog">Toolbar tab in preferences dialog</a></h3>
 <p>Toolbar tab in preferences dialog</p>
 <img alt="./images/pref_dialog_toolbar.png" src="./images/pref_dialog_toolbar.png" />
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id58" id="display-tab-in-preferences-dialog" name="display-tab-in-preferences-dialog">Display tab in preferences dialog</a></h3>
+<h3><a class="toc-backref" href="#id59" id="display-tab-in-preferences-dialog" name="display-tab-in-preferences-dialog">Display tab in preferences dialog</a></h3>
 <p>This is for visual elements displayed in the editor window.</p>
 <img alt="./images/pref_dialog_display.png" src="./images/pref_dialog_display.png" />
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id59" id="editor-tab-in-preferences-dialog" name="editor-tab-in-preferences-dialog">Editor tab in preferences dialog</a></h3>
+<h3><a class="toc-backref" href="#id60" id="editor-tab-in-preferences-dialog" name="editor-tab-in-preferences-dialog">Editor tab in preferences dialog</a></h3>
 <p>Editor tab in preferences dialog</p>
 <img alt="./images/pref_dialog_edit.png" src="./images/pref_dialog_edit.png" />
 <p>Line wrapping refers to the display of the text in the
@@ -1372,22 +1396,22 @@
 insert newlines into your document while you type.)</p>
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id60" id="files-tab-in-preferences-dialog" name="files-tab-in-preferences-dialog">Files tab in preferences dialog</a></h3>
+<h3><a class="toc-backref" href="#id61" id="files-tab-in-preferences-dialog" name="files-tab-in-preferences-dialog">Files tab in preferences dialog</a></h3>
 <p>Files tab in preferences dialog</p>
 <img alt="./images/pref_dialog_files.png" src="./images/pref_dialog_files.png" />
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id61" id="tools-tab-in-preferences-dialog" name="tools-tab-in-preferences-dialog">Tools tab in preferences dialog</a></h3>
+<h3><a class="toc-backref" href="#id62" id="tools-tab-in-preferences-dialog" name="tools-tab-in-preferences-dialog">Tools tab in preferences dialog</a></h3>
 <p>Tools tab in preferences dialog</p>
 <img alt="./images/pref_dialog_tools.png" src="./images/pref_dialog_tools.png" />
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id62" id="template-tab-in-preferences-dialog" name="template-tab-in-preferences-dialog">Template tab in preferences dialog</a></h3>
+<h3><a class="toc-backref" href="#id63" id="template-tab-in-preferences-dialog" name="template-tab-in-preferences-dialog">Template tab in preferences dialog</a></h3>
 <p>Template tab in preferences dialog</p>
 <img alt="./images/pref_dialog_templ.png" src="./images/pref_dialog_templ.png" />
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id63" id="keybinding-tab-in-preferences-dialog" name="keybinding-tab-in-preferences-dialog">Keybinding tab in preferences dialog</a></h3>
+<h3><a class="toc-backref" href="#id64" id="keybinding-tab-in-preferences-dialog" name="keybinding-tab-in-preferences-dialog">Keybinding tab in preferences dialog</a></h3>
 <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,
@@ -1398,18 +1422,18 @@
 </div>
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id64" id="printing-tab-in-preferences-dialog" name="printing-tab-in-preferences-dialog">Printing tab in preferences dialog</a></h3>
+<h3><a class="toc-backref" href="#id65" id="printing-tab-in-preferences-dialog" name="printing-tab-in-preferences-dialog">Printing tab in preferences dialog</a></h3>
 <p>Printing tab in preferences dialog</p>
 <img alt="./images/pref_dialog_printing.png" src="./images/pref_dialog_printing.png" />
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id65" id="vte-tab-in-preferences-dialog" name="vte-tab-in-preferences-dialog">VTE tab in preferences dialog</a></h3>
+<h3><a class="toc-backref" href="#id66" id="vte-tab-in-preferences-dialog" name="vte-tab-in-preferences-dialog">VTE tab in preferences dialog</a></h3>
 <p>VTE tab in preferences dialog</p>
 <img alt="./images/pref_dialog_vte.png" src="./images/pref_dialog_vte.png" />
 </div>
 </div>
 <div class="section">
-<h2><a class="toc-backref" href="#id66" id="project-management" name="project-management">Project Management</a></h2>
+<h2><a class="toc-backref" href="#id67" id="project-management" name="project-management">Project Management</a></h2>
 <p>Project Management is optional in Geany. Currently it can be used for:</p>
 <ul class="simple">
 <li>Storing and opening session files on a project basis.</li>
@@ -1427,7 +1451,7 @@
 file that was in use at the end of the last session will be reopened.</p>
 <p>Below are the commands used to create, modify, open and close projects.</p>
 <div class="section">
-<h3><a class="toc-backref" href="#id67" id="new-project" name="new-project">New Project</a></h3>
+<h3><a class="toc-backref" href="#id68" id="new-project" name="new-project">New Project</a></h3>
 <p>To create a new project, fill in the <em>Name</em> field. By default this
 will setup a new project file <tt class="docutils literal"><span class="pre">~/projects/name.geany</span></tt>. Usually it's
 best to store all your project files in the same directory (they are
@@ -1437,7 +1461,7 @@
 structure contained in it.</p>
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id68" id="project-properties" name="project-properties">Project Properties</a></h3>
+<h3><a class="toc-backref" href="#id69" id="project-properties" name="project-properties">Project Properties</a></h3>
 <p>You can set an optional description for the project, but it is not
 used elsewhere by Geany.</p>
 <p>The <em>Base path</em> field is used as the directory to run the Make and Make
@@ -1446,13 +1470,13 @@
 The specified path can be an absolute path or relative to the project's
 file name.</p>
 <div class="section">
-<h4><a class="toc-backref" href="#id69" id="make-in-base-path" name="make-in-base-path">Make in base path</a></h4>
+<h4><a class="toc-backref" href="#id70" id="make-in-base-path" name="make-in-base-path">Make in base path</a></h4>
 <p>This setting makes the <em>Build->Make</em> command use the project's base
 path. Uncheck this if you want to use the current file's directory
 instead.</p>
 </div>
 <div class="section">
-<h4><a class="toc-backref" href="#id70" id="run-command" name="run-command">Run command</a></h4>
+<h4><a class="toc-backref" href="#id71" id="run-command" name="run-command">Run command</a></h4>
 <p>The <em>Run command</em> overrides the default run command. You can set this
 to the executable or main script file for the project, and append
 any command-line arguments.</p>
@@ -1465,7 +1489,7 @@
 </div>
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id71" id="open-project" name="open-project">Open Project</a></h3>
+<h3><a class="toc-backref" href="#id72" id="open-project" name="open-project">Open Project</a></h3>
 <p>The Open command displays a standard file chooser, starting in
 <tt class="docutils literal"><span class="pre">~/projects</span></tt>. Choose a project file named with the <tt class="docutils literal"><span class="pre">.geany</span></tt>
 extension.</p>
@@ -1473,14 +1497,14 @@
 open files and open the session files associated with the project.</p>
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id72" id="close-project" name="close-project">Close Project</a></h3>
+<h3><a class="toc-backref" href="#id73" id="close-project" name="close-project">Close Project</a></h3>
 <p>Project file settings are saved when the project is closed.</p>
 <p>When project session support is enabled, Geany will close the project
 session files and open any previously closed default session files.</p>
 </div>
 </div>
 <div class="section">
-<h2><a class="toc-backref" href="#id73" id="build-system" name="build-system">Build system</a></h2>
+<h2><a class="toc-backref" href="#id74" id="build-system" name="build-system">Build system</a></h2>
 <p>Geany has an integrated build system. Firstly this means that the
 current source file will be saved before it is processed. This is
 for convenience so that you don't need to keep saving small changes
@@ -1504,7 +1528,7 @@
 <li>Set Includes and Arguments</li>
 </ul>
 <div class="section">
-<h3><a class="toc-backref" href="#id74" id="compile" name="compile">Compile</a></h3>
+<h3><a class="toc-backref" href="#id75" id="compile" name="compile">Compile</a></h3>
 <p>The Compile command has different uses for different kinds of files.</p>
 <p>For compilable languages such as C and C++, the Compile command is
 setup to compile the current source file into a binary object file.</p>
@@ -1514,7 +1538,7 @@
 will run the file in its language interpreter.</p>
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id75" id="build" name="build">Build</a></h3>
+<h3><a class="toc-backref" href="#id76" id="build" name="build">Build</a></h3>
 <p>For compilable languages such as C and C++, the Build command will link
 the current source file's equivalent object file into an executable. If
 the object file does not exist, the source will be compiled and linked
@@ -1522,7 +1546,7 @@
 <p>Interpreted languages do not use the Build command.</p>
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id76" id="make-all" name="make-all">Make all</a></h3>
+<h3><a class="toc-backref" href="#id77" id="make-all" name="make-all">Make all</a></h3>
 <p>This effectively runs "make all" in the same directory as the
 current file.</p>
 <div class="note">
@@ -1532,19 +1556,19 @@
 </div>
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id77" id="make-custom-target" name="make-custom-target">Make custom target</a></h3>
+<h3><a class="toc-backref" href="#id78" id="make-custom-target" name="make-custom-target">Make custom target</a></h3>
 <p>This is similar to running 'Make all' but you will be prompted for
 the make target name to be passed to the Make tool. For example,
 typing 'clean' in the dialog prompt will run "make clean".</p>
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id78" id="make-object" name="make-object">Make object</a></h3>
+<h3><a class="toc-backref" href="#id79" id="make-object" name="make-object">Make object</a></h3>
 <p>Make object will run "make current_file.o" in the same directory as
 the current file, using its prefix for 'current_file'. It is useful
 for compiling just the current file without building the whole project.</p>
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id79" id="execute" name="execute">Execute</a></h3>
+<h3><a class="toc-backref" href="#id80" id="execute" name="execute">Execute</a></h3>
 <p>Execute will run the corresponding executable file, shell script or
 interpreted script in a terminal window. Note that the Terminal tool
 path must be correctly set in the Tools tab of the Preferences dialog -
@@ -1555,7 +1579,7 @@
 output from the program before the terminal window is closed.</p>
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id80" id="stopping-running-processes" name="stopping-running-processes">Stopping running processes</a></h3>
+<h3><a class="toc-backref" href="#id81" id="stopping-running-processes" name="stopping-running-processes">Stopping running processes</a></h3>
 <p>When there is a running program, the Run button in the toolbar
 becomes a stop button and you can stop the current action. This
 works by sending a signal to the process (and its child process(es))
@@ -1564,7 +1588,7 @@
 cannot be stopped. This can happen when the process creates more than
 one child process.</p>
 <div class="section">
-<h4><a class="toc-backref" href="#id81" id="terminal-emulators" name="terminal-emulators">Terminal emulators</a></h4>
+<h4><a class="toc-backref" href="#id82" id="terminal-emulators" name="terminal-emulators">Terminal emulators</a></h4>
 <p>Xterm is known to work properly. If you are using "Terminal"
 (the terminal program of Xfce), you should add the command line
 option <tt class="docutils literal"><span class="pre">--disable-server</span></tt> otherwise the started process cannot be
@@ -1573,7 +1597,7 @@
 </div>
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id82" id="set-includes-and-arguments" name="set-includes-and-arguments">Set Includes and Arguments</a></h3>
+<h3><a class="toc-backref" href="#id83" id="set-includes-and-arguments" name="set-includes-and-arguments">Set Includes and Arguments</a></h3>
 <p>By default the Compile and Build commands invoke the compiler and
 linker with only the basic arguments needed by all programs. Using
 Set Includes and Arguments you can add any include paths and compile
@@ -1590,14 +1614,14 @@
 different settings, then writing a Makefile and using the Make commands
 is recommended.</p>
 <div class="section">
-<h4><a class="toc-backref" href="#id83" id="one-step-compilation" name="one-step-compilation">One step compilation</a></h4>
+<h4><a class="toc-backref" href="#id84" id="one-step-compilation" name="one-step-compilation">One step compilation</a></h4>
 <p>If you are using the Build command to compile and link in one step,
 you will need to set both the compiler arguments and the linker
 arguments in the linker command setting.</p>
 </div>
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id84" id="indicators" name="indicators">Indicators</a></h3>
+<h3><a class="toc-backref" href="#id85" id="indicators" name="indicators">Indicators</a></h3>
 <p>Indicators are red squiggly underlines which are used to highlight
 errors which occured while compiling the current file. So you can
 easily see where your code failed to compile. To remove the indicators,
@@ -1607,7 +1631,7 @@
 </div>
 </div>
 <div class="section">
-<h2><a class="toc-backref" href="#id85" id="printing-support" name="printing-support">Printing support</a></h2>
+<h2><a class="toc-backref" href="#id86" id="printing-support" name="printing-support">Printing support</a></h2>
 <p>Since Geany 0.13 there is full printing support using GTK's printing API.
 The printed page(s) will look nearly the same as on your screen in Geany.
 Additionally, there are some options to modify the printed page(s). You
@@ -1655,7 +1679,7 @@
 gtklp or similar programs can be used.</p>
 </div>
 <div class="section">
-<h2><a class="toc-backref" href="#id86" id="plugins" name="plugins">Plugins</a></h2>
+<h2><a class="toc-backref" href="#id87" id="plugins" name="plugins">Plugins</a></h2>
 <p>Plugins are loaded at startup, if the <em>Enable plugin support</em>
 general preference is set. There is also a command-line option,
 <tt class="docutils literal"><span class="pre">-p</span></tt>, which prevents plugins being loaded. Plugins are scanned in
@@ -1675,13 +1699,13 @@
 provides some.</p>
 </div>
 <div class="section">
-<h2><a class="toc-backref" href="#id87" id="keybindings" name="keybindings">Keybindings</a></h2>
+<h2><a class="toc-backref" href="#id88" id="keybindings" name="keybindings">Keybindings</a></h2>
 <p>Geany supports the default keyboard shortcuts for the Scintilla
 editing widget. For a list of these commands, see <a class="reference" href="#scintilla-keyboard-commands">Scintilla
 keyboard commands</a>. The Scintilla keyboard shortcuts will be overridden
 by any custom keybindings with the same keyboard shortcut.</p>
 <div class="section">
-<h3><a class="toc-backref" href="#id88" id="switching-documents" name="switching-documents">Switching documents</a></h3>
+<h3><a class="toc-backref" href="#id89" id="switching-documents" name="switching-documents">Switching documents</a></h3>
 <p>There are a few non-configurable bindings to switch between documents,
 listed below. These can also be overridden by custom keybindings.</p>
 <table border="1" class="docutils">
@@ -1711,7 +1735,7 @@
 </table>
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id89" id="configurable-keybindings" name="configurable-keybindings">Configurable keybindings</a></h3>
+<h3><a class="toc-backref" href="#id90" id="configurable-keybindings" name="configurable-keybindings">Configurable keybindings</a></h3>
 <p>For all actions listed below you can define your own keybindings. Open
 the Preferences dialog, select the desired action and click on
 change. In the opening dialog you can press any key combination you
@@ -2214,9 +2238,9 @@
 </div>
 </div>
 <div class="section">
-<h1><a class="toc-backref" href="#id90" id="configuration-files" name="configuration-files">Configuration files</a></h1>
+<h1><a class="toc-backref" href="#id91" id="configuration-files" name="configuration-files">Configuration files</a></h1>
 <div class="section">
-<h2><a class="toc-backref" href="#id91" id="global-configuration-file" name="global-configuration-file">Global configuration file</a></h2>
+<h2><a class="toc-backref" href="#id92" id="global-configuration-file" name="global-configuration-file">Global configuration file</a></h2>
 <p>You can use a global configuration file for Geany which will be used if
 the user starts Geany for the first time and an user's configuration
 file was not yet created or in case an user deleted the configuration
@@ -2236,7 +2260,7 @@
 </div>
 </div>
 <div class="section">
-<h2><a class="toc-backref" href="#id92" id="filetype-definition-files" name="filetype-definition-files">Filetype definition files</a></h2>
+<h2><a class="toc-backref" href="#id93" id="filetype-definition-files" name="filetype-definition-files">Filetype definition files</a></h2>
 <p>All colour definitions and other filetype specific settings are
 stored in the filetype definition files. Those settings are colours
 for syntax highlighting, general settings like comment characters or
@@ -2264,9 +2288,9 @@
 to change. All missing settings will be read from the corresponding
 global definition file in <tt class="docutils literal"><span class="pre">$prefix/share/geany</span></tt>.</p>
 <div class="section">
-<h3><a class="toc-backref" href="#id93" id="format" name="format">Format</a></h3>
+<h3><a class="toc-backref" href="#id94" id="format" name="format">Format</a></h3>
 <div class="section">
-<h4><a class="toc-backref" href="#id94" id="styling-section" name="styling-section">[styling] Section</a></h4>
+<h4><a class="toc-backref" href="#id95" id="styling-section" name="styling-section">[styling] Section</a></h4>
 <p>In this section the colours for syntax highlighting are defined. The
 format is always: key=forground_colour;background_colour;bold;italic</p>
 <p>Colours have to be specified as RGB hex values prefixed by
@@ -2276,7 +2300,7 @@
 value is something other than "true" or "false", "false" is assumed.</p>
 </div>
 <div class="section">
-<h4><a class="toc-backref" href="#id95" id="keywords-section" name="keywords-section">[keywords] Section</a></h4>
+<h4><a class="toc-backref" href="#id96" id="keywords-section" name="keywords-section">[keywords] Section</a></h4>
 <p>This section contains keys for different keyword lists specific to
 the filetype. Some filetypes do not support keywords, so adding a
 new key will not work. You can only add or remove keywords to/from
@@ -2287,7 +2311,7 @@
 </div>
 </div>
 <div class="section">
-<h4><a class="toc-backref" href="#id96" id="settings-section" name="settings-section">[settings] Section</a></h4>
+<h4><a class="toc-backref" href="#id97" id="settings-section" name="settings-section">[settings] Section</a></h4>
 <dl class="docutils">
 <dt>extension</dt>
 <dd><p class="first">This is the default file extension used when saving files, not
@@ -2348,7 +2372,7 @@
 </dl>
 </div>
 <div class="section">
-<h4><a class="toc-backref" href="#id97" id="build-settings-section" name="build-settings-section">[build_settings] Section</a></h4>
+<h4><a class="toc-backref" href="#id98" id="build-settings-section" name="build-settings-section">[build_settings] Section</a></h4>
 <dl class="docutils">
 <dt>compiler</dt>
 <dd><p class="first">This item specifies the command to compile source code files. But
@@ -2381,7 +2405,7 @@
 </div>
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id98" id="special-file-filetypes-common" name="special-file-filetypes-common">Special file filetypes.common</a></h3>
+<h3><a class="toc-backref" href="#id99" id="special-file-filetypes-common" name="special-file-filetypes-common">Special file filetypes.common</a></h3>
 <p>There is a special filetype definition file called
 filetypes.common. This file defines some general non-filetype-specific
 settings.</p>
@@ -2491,7 +2515,7 @@
 </div>
 </div>
 <div class="section">
-<h2><a class="toc-backref" href="#id99" id="filetype-extensions" name="filetype-extensions">Filetype extensions</a></h2>
+<h2><a class="toc-backref" href="#id100" id="filetype-extensions" name="filetype-extensions">Filetype extensions</a></h2>
 <p>To change the default filetype extension used when saving a new file,
 see <a class="reference" href="#filetype-definition-files">Filetype definition files</a>.</p>
 <p>You can override the list of file extensions that Geany uses for each
@@ -2517,7 +2541,7 @@
 </pre>
 </div>
 <div class="section">
-<h2><a class="toc-backref" href="#id100" id="templates" name="templates">Templates</a></h2>
+<h2><a class="toc-backref" href="#id101" id="templates" name="templates">Templates</a></h2>
 <p>Geany supports the following templates:</p>
 <ul class="simple">
 <li>ChangeLog entry</li>
@@ -2540,7 +2564,7 @@
 function description won't contain the correct function name but "unknown"
 instead.</p>
 <div class="section">
-<h3><a class="toc-backref" href="#id101" id="template-metadata" name="template-metadata">Template metadata</a></h3>
+<h3><a class="toc-backref" href="#id102" id="template-metadata" name="template-metadata">Template metadata</a></h3>
 <p>Metadata can be used with all templates, but by default user set
 metadata is only used for the ChangeLog and File header templates.</p>
 <p>In the configuration dialog you can find a tab "Templates" (see
@@ -2550,7 +2574,7 @@
 at startup.</p>
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id102" id="filetype-templates" name="filetype-templates">Filetype templates</a></h3>
+<h3><a class="toc-backref" href="#id103" id="filetype-templates" name="filetype-templates">Filetype templates</a></h3>
 <p>Filetype templates are templates used as the basis of a new file. To
 use them, choose the <em>New (with Template)</em> menu item from the <em>File</em>
 menu.</p>
@@ -2571,7 +2595,7 @@
 the New command is used without a filetype. This is empty by default.</p>
 </div>
 <div class="section">
-<h3><a class="toc-backref" href="#id103" id="customizing-templates" name="customizing-templates">Customizing templates</a></h3>
+<h3><a class="toc-backref" href="#id104" id="customizing-templates" name="customizing-templates">Customizing templates</a></h3>
 <p>Each template can be customized to your needs. The templates are
 stored in the <tt class="docutils literal"><span class="pre">~/.geany/templates/</span></tt> directory (see the section called
 <a class="reference" href="#command-line-options">Command line options</a> for further information about the configuration
@@ -2579,7 +2603,7 @@
 Geany ;-) ) and edit the template to your needs. There are some
 wildcards which will be automatically replaced by Geany at startup.</p>
 <div class="section">
-<h4><a class="toc-backref" href="#id104" id="template-wildcards" name="template-wildcards">Template wildcards</a></h4>
+<h4><a class="toc-backref" href="#id105" id="template-wildcards" name="template-wildcards">Template wildcards</a></h4>
 <p>All wildcards must be enclosed by "{" and "}", e.g. {date}.</p>
 <table border="1" class="docutils">
 <colgroup>
@@ -2688,7 +2712,7 @@
 </div>
 </div>
 <div class="section">
-<h1><a class="toc-backref" href="#id105" id="contributing-to-this-document" name="contributing-to-this-document">Contributing to this document</a></h1>
+<h1><a class="toc-backref" href="#id106" id="contributing-to-this-document" name="contributing-to-this-document">Contributing to this document</a></h1>
 <p>This document (<tt class="docutils literal"><span class="pre">geany.txt</span></tt>) is written in <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>
 (or "reST"). The source file for it is located in Geany's <tt class="docutils literal"><span class="pre">doc</span></tt>
 subdirectory.  If you intend on making changes, you should grab the
@@ -2708,7 +2732,7 @@
 and Fedora systems.</p>
 </div>
 <div class="section">
-<h1><a class="toc-backref" href="#id106" id="scintilla-keyboard-commands" name="scintilla-keyboard-commands">Scintilla keyboard commands</a></h1>
+<h1><a class="toc-backref" href="#id107" id="scintilla-keyboard-commands" name="scintilla-keyboard-commands">Scintilla keyboard commands</a></h1>
 <p>Copyright © 1998, 2006 Neil Hodgson <neilh(at)scintilla(dot)org></p>
 <p>This appendix is distributed under the terms of the License for
 Scintilla and SciTE. A copy of this license can be found in the file
@@ -2717,7 +2741,7 @@
 Scintilla and SciTE</a>.</p>
 <p>20 June 2006</p>
 <div class="section">
-<h2><a class="toc-backref" href="#id107" id="keyboard-commands" name="keyboard-commands">Keyboard commands</a></h2>
+<h2><a class="toc-backref" href="#id108" id="keyboard-commands" name="keyboard-commands">Keyboard commands</a></h2>
 <p>Keyboard commands for Scintilla mostly follow common Windows and GTK+
 conventions. All move keys (arrows, page up/down, home and end)
 allows to extend or reduce the stream selection when holding the
@@ -2817,7 +2841,7 @@
 </div>
 </div>
 <div class="section">
-<h1><a class="toc-backref" href="#id108" id="hidden-preferences" name="hidden-preferences">Hidden preferences</a></h1>
+<h1><a class="toc-backref" href="#id109" id="hidden-preferences" name="hidden-preferences">Hidden preferences</a></h1>
 <p>There are some uncommon preferences that are not shown in the Preferences
 dialog. These can be set by editing <tt class="docutils literal"><span class="pre">~/.geany/geany.conf</span></tt>, then
 restarting Geany. Search for the key name, then edit the value. Example:</p>
@@ -2887,7 +2911,7 @@
 </table>
 </div>
 <div class="section">
-<h1><a class="toc-backref" href="#id109" id="compile-time-options" name="compile-time-options">Compile-time options</a></h1>
+<h1><a class="toc-backref" href="#id110" id="compile-time-options" name="compile-time-options">Compile-time options</a></h1>
 <p>There are some options which can only be changed at compile time. To
 change these options, edit the file src/geany.h. Look for a block of
 lines starting with <tt class="docutils literal"><span class="pre">#define</span> <span class="pre">GEANY_*</span></tt>. Any definitions which are
@@ -3037,7 +3061,7 @@
 </table>
 </div>
 <div class="section">
-<h1><a class="toc-backref" href="#id110" id="gnu-general-public-license" name="gnu-general-public-license">GNU General Public License</a></h1>
+<h1><a class="toc-backref" href="#id111" id="gnu-general-public-license" name="gnu-general-public-license">GNU General Public License</a></h1>
 <pre class="literal-block">
             GNU GENERAL PUBLIC LICENSE
                Version 2, June 1991
@@ -3382,7 +3406,7 @@
 </pre>
 </div>
 <div class="section">
-<h1><a class="toc-backref" href="#id111" id="license-for-scintilla-and-scite" name="license-for-scintilla-and-scite">License for Scintilla and SciTE</a></h1>
+<h1><a class="toc-backref" href="#id112" id="license-for-scintilla-and-scite" name="license-for-scintilla-and-scite">License for Scintilla and SciTE</a></h1>
 <p>Copyright 1998-2003 by Neil Hodgson <neilh(at)scintilla(dot)org></p>
 <p>All Rights Reserved</p>
 <p>Permission to use, copy, modify, and distribute this software and
@@ -3402,7 +3426,7 @@
 <div class="footer">
 <hr class="footer" />
 <a class="reference" href="geany.txt">View document source</a>.
-Generated on: 2008-02-16 11:20 UTC.
+Generated on: 2008-02-18 19: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	2008-02-18 17:18:50 UTC (rev 2265)
+++ trunk/doc/geany.txt	2008-02-18 19:51:34 UTC (rev 2266)
@@ -1124,7 +1124,32 @@
 upgrading Geany.
 
 
+Ignore tags
+^^^^^^^^^^^
 
+You can also ignore certain tags if they would lead to wrong parsing of
+the code. Simply create a file called "ignore.tags" in your Geany
+configuration directory (usually ``~/.geany/``). Then list all tags
+you want to ignore in this file, separated by spaces and/or newlines.
+
+More detailed information about the usage from the Exuberant Ctags
+manual page::
+
+    Specifies a list of identifiers which are to be specially handled
+    while  parsing C and C++ source files. This option is specifically
+    provided to handle special cases arising through the use of
+    preprocessor macros. When the identifiers listed are simple identifiers,
+    these identifiers will be ignored during parsing of the source files.
+    If an identifier is suffixed with a '+' character, ctags will also
+    ignore any parenthesis-enclosed argument list which may immediately
+    follow the identifier in the source files.
+    If two identifiers are separated with the '=' character, the first
+    identifiers is replaced by the second identifiers for parsing purposes.
+
+For even more detailed information please read the manual page of
+Exuberant Ctags.
+
+
 Preferences
 -----------
 

Modified: trunk/src/symbols.c
===================================================================
--- trunk/src/symbols.c	2008-02-18 17:18:50 UTC (rev 2265)
+++ trunk/src/symbols.c	2008-02-18 19:51:34 UTC (rev 2266)
@@ -86,7 +86,25 @@
 static void html_tags_loaded();
 static void load_user_tags(filetype_id ft_id);
 
+/* tags_ignore is a NULL-terminated array of strings, read from ~/.geany/ignore.tags.
+ * This file contains a space or newline separated list of symbols which should be ignored
+ * by the C/C++ parser, see -I command line option of ctags for details. */
+gchar **c_tags_ignore = NULL;
 
+static void load_c_ignore_tags()
+{
+	gchar *path = g_strconcat(app->configdir, G_DIR_SEPARATOR_S "ignore.tags", NULL);
+	gchar *content;
+
+	if (g_file_get_contents(path, &content, NULL, NULL))
+	{
+		c_tags_ignore = g_strsplit_set(content, " \n\r", -1);
+		g_free(content);
+	}
+	g_free(path);
+}
+
+
 // Ensure that the global tags file for the file_type_idx filetype is loaded.
 void symbols_global_tags_loaded(gint file_type_idx)
 {
@@ -98,6 +116,13 @@
 
 	load_user_tags(file_type_idx);
 
+	// load ignore list for C/C++ parser
+	if ((file_type_idx == GEANY_FILETYPES_C || file_type_idx == GEANY_FILETYPES_CPP) &&
+		c_tags_ignore == NULL)
+	{
+		load_c_ignore_tags();
+	}
+
 	switch (file_type_idx)
 	{
 		case GEANY_FILETYPES_PHP:
@@ -306,6 +331,7 @@
 void symbols_finalize()
 {
 	g_strfreev(html_entities);
+	g_strfreev(c_tags_ignore);
 }
 
 

Modified: trunk/src/symbols.h
===================================================================
--- trunk/src/symbols.h	2008-02-18 17:18:50 UTC (rev 2265)
+++ trunk/src/symbols.h	2008-02-18 19:51:34 UTC (rev 2266)
@@ -26,6 +26,7 @@
 #define GEANY_SYMBOLS_H 1
 
 extern const guint TM_GLOBAL_TYPE_MASK;
+extern gchar **c_tags_ignore;
 
 
 void symbols_global_tags_loaded(gint file_type_idx);

Modified: trunk/tagmanager/options.c
===================================================================
--- trunk/tagmanager/options.c	2008-02-18 17:18:50 UTC (rev 2265)
+++ trunk/tagmanager/options.c	2008-02-18 19:51:34 UTC (rev 2266)
@@ -24,6 +24,7 @@
 #include "options.h"
 #include "parse.h"
 
+#include <glib.h>
 
 #define CTAGS_ENVIRONMENT	"CTAGS"
 
@@ -150,6 +151,8 @@
     return FALSE;
 }
 
+// get the tags_ignore list, exported by Geany's symbols.h
+gchar **c_tags_ignore;
 
 /*  Determines whether or not "name" should be ignored, per the ignore list.
  */
@@ -157,7 +160,49 @@
 			      boolean *const pIgnoreParens,
 			      const char **const replacement)
 {
-    return FALSE;
+	boolean result = FALSE;
+
+	if (c_tags_ignore != NULL)
+	{
+		const size_t nameLen = strlen (name);
+		unsigned int i;
+		guint len = g_strv_length (c_tags_ignore);
+
+		if (pIgnoreParens != NULL)
+			*pIgnoreParens = FALSE;
+
+		for (i = 0  ;  i < len ;  ++i)
+		{
+			vString *token = vStringNewInit (c_tags_ignore[i]);
+
+			if (strncmp (vStringValue (token), name, nameLen) == 0)
+			{
+				const size_t tokenLen = vStringLength (token);
+
+				if (nameLen == tokenLen)
+				{
+					result = TRUE;
+					break;
+				}
+				else if (tokenLen == nameLen + 1  &&
+						vStringChar (token, tokenLen - 1) == '+')
+				{
+					result = TRUE;
+					if (pIgnoreParens != NULL)
+						*pIgnoreParens = TRUE;
+					break;
+				}
+				else if (vStringChar (token, nameLen) == '=')
+				{
+					if (replacement != NULL)
+						*replacement = vStringValue (token) + nameLen + 1;
+					break;
+				}
+			}
+			vStringDelete (token);
+		}
+	}
+	return result;
 }
 
 void addIgnoreListFromFile (const char *const fileName)


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