Add 'Make in base path' project file preference, on by default.

Add project_get_base_path(), separated from project_get_make_dir().


git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@2163 ea778897-0a13-0410-b9d1-a72fbfd435f5
This commit is contained in:
Nick Treleaven 2008-01-11 16:53:25 +00:00
parent a248c03f18
commit d4764a2bc9
6 changed files with 179 additions and 119 deletions

View File

@ -1,3 +1,11 @@
2008-01-11 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/build.c, src/project.c, src/project.h, doc/geany.txt,
doc/geany.html:
Add 'Make in base path' project file preference, on by default.
Add project_get_base_path(), separated from project_get_make_dir().
2008-01-11 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
* src/dialogs.c: Fix broken Rename functionality (closes #1868621).

View File

@ -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="2008-01-06" />
<meta name="date" content="2008-01-10" />
<style type="text/css">
/*
@ -133,7 +133,7 @@ dt {
<br />Nick Treleaven
<br />Frank Lanitz</td></tr>
<tr><th class="docinfo-name">Date:</th>
<td>2008-01-06</td></tr>
<td>2008-01-10</td></tr>
<tr><th class="docinfo-name">Version:</th>
<td>0.13</td></tr>
</tbody>
@ -238,74 +238,75 @@ of this program, and also in the chapter <a class="reference" href="#gnu-general
<li><a class="reference" href="#project-management" id="id64" name="id64">Project Management</a><ul>
<li><a class="reference" href="#new-project" id="id65" name="id65">New Project</a></li>
<li><a class="reference" href="#project-properties" id="id66" name="id66">Project Properties</a><ul>
<li><a class="reference" href="#run-command" id="id67" name="id67">Run command</a></li>
<li><a class="reference" href="#make-in-base-path" id="id67" name="id67">Make in base path</a></li>
<li><a class="reference" href="#run-command" id="id68" name="id68">Run command</a></li>
</ul>
</li>
<li><a class="reference" href="#close-project" id="id68" name="id68">Close Project</a></li>
<li><a class="reference" href="#open-project" id="id69" name="id69">Open Project</a></li>
<li><a class="reference" href="#close-project" id="id69" name="id69">Close Project</a></li>
<li><a class="reference" href="#open-project" id="id70" name="id70">Open Project</a></li>
</ul>
</li>
<li><a class="reference" href="#build-system" id="id70" name="id70">Build system</a><ul>
<li><a class="reference" href="#compile" id="id71" name="id71">Compile</a></li>
<li><a class="reference" href="#build" id="id72" name="id72">Build</a></li>
<li><a class="reference" href="#make-all" id="id73" name="id73">Make all</a></li>
<li><a class="reference" href="#make-custom-target" id="id74" name="id74">Make custom target</a></li>
<li><a class="reference" href="#make-object" id="id75" name="id75">Make object</a></li>
<li><a class="reference" href="#execute" id="id76" name="id76">Execute</a></li>
<li><a class="reference" href="#stopping-running-processes" id="id77" name="id77">Stopping running processes</a><ul>
<li><a class="reference" href="#terminal-emulators" id="id78" name="id78">Terminal emulators</a></li>
<li><a class="reference" href="#build-system" id="id71" name="id71">Build system</a><ul>
<li><a class="reference" href="#compile" id="id72" name="id72">Compile</a></li>
<li><a class="reference" href="#build" id="id73" name="id73">Build</a></li>
<li><a class="reference" href="#make-all" id="id74" name="id74">Make all</a></li>
<li><a class="reference" href="#make-custom-target" id="id75" name="id75">Make custom target</a></li>
<li><a class="reference" href="#make-object" id="id76" name="id76">Make object</a></li>
<li><a class="reference" href="#execute" id="id77" name="id77">Execute</a></li>
<li><a class="reference" href="#stopping-running-processes" id="id78" name="id78">Stopping running processes</a><ul>
<li><a class="reference" href="#terminal-emulators" id="id79" name="id79">Terminal emulators</a></li>
</ul>
</li>
<li><a class="reference" href="#set-includes-and-arguments" id="id79" name="id79">Set Includes and Arguments</a><ul>
<li><a class="reference" href="#one-step-compilation" id="id80" name="id80">One step compilation</a></li>
<li><a class="reference" href="#set-includes-and-arguments" id="id80" name="id80">Set Includes and Arguments</a><ul>
<li><a class="reference" href="#one-step-compilation" id="id81" name="id81">One step compilation</a></li>
</ul>
</li>
<li><a class="reference" href="#indicators" id="id81" name="id81">Indicators</a></li>
<li><a class="reference" href="#indicators" id="id82" name="id82">Indicators</a></li>
</ul>
</li>
<li><a class="reference" href="#printing-support" id="id82" name="id82">Printing support</a></li>
<li><a class="reference" href="#plugins" id="id83" name="id83">Plugins</a></li>
<li><a class="reference" href="#keybindings" id="id84" name="id84">Keybindings</a><ul>
<li><a class="reference" href="#switching-documents" id="id85" name="id85">Switching documents</a></li>
<li><a class="reference" href="#configurable-keybindings" id="id86" name="id86">Configurable keybindings</a></li>
<li><a class="reference" href="#printing-support" id="id83" name="id83">Printing support</a></li>
<li><a class="reference" href="#plugins" id="id84" name="id84">Plugins</a></li>
<li><a class="reference" href="#keybindings" id="id85" name="id85">Keybindings</a><ul>
<li><a class="reference" href="#switching-documents" id="id86" name="id86">Switching documents</a></li>
<li><a class="reference" href="#configurable-keybindings" id="id87" name="id87">Configurable keybindings</a></li>
</ul>
</li>
</ul>
</li>
<li><a class="reference" href="#configuration-files" id="id87" name="id87">Configuration files</a><ul>
<li><a class="reference" href="#global-configuration-file" id="id88" name="id88">Global configuration file</a></li>
<li><a class="reference" href="#filetype-definition-files" id="id89" name="id89">Filetype definition files</a><ul>
<li><a class="reference" href="#format" id="id90" name="id90">Format</a><ul>
<li><a class="reference" href="#styling-section" id="id91" name="id91">[styling] Section</a></li>
<li><a class="reference" href="#keywords-section" id="id92" name="id92">[keywords] Section</a></li>
<li><a class="reference" href="#settings-section" id="id93" name="id93">[settings] Section</a></li>
<li><a class="reference" href="#build-settings-section" id="id94" name="id94">[build_settings] Section</a></li>
<li><a class="reference" href="#configuration-files" id="id88" name="id88">Configuration files</a><ul>
<li><a class="reference" href="#global-configuration-file" id="id89" name="id89">Global configuration file</a></li>
<li><a class="reference" href="#filetype-definition-files" id="id90" name="id90">Filetype definition files</a><ul>
<li><a class="reference" href="#format" id="id91" name="id91">Format</a><ul>
<li><a class="reference" href="#styling-section" id="id92" name="id92">[styling] Section</a></li>
<li><a class="reference" href="#keywords-section" id="id93" name="id93">[keywords] Section</a></li>
<li><a class="reference" href="#settings-section" id="id94" name="id94">[settings] Section</a></li>
<li><a class="reference" href="#build-settings-section" id="id95" name="id95">[build_settings] Section</a></li>
</ul>
</li>
<li><a class="reference" href="#special-file-filetypes-common" id="id95" name="id95">Special file filetypes.common</a></li>
<li><a class="reference" href="#special-file-filetypes-common" id="id96" name="id96">Special file filetypes.common</a></li>
</ul>
</li>
<li><a class="reference" href="#filetype-extensions" id="id96" name="id96">Filetype extensions</a></li>
<li><a class="reference" href="#templates" id="id97" name="id97">Templates</a><ul>
<li><a class="reference" href="#template-metadata" id="id98" name="id98">Template metadata</a></li>
<li><a class="reference" href="#filetype-templates" id="id99" name="id99">Filetype templates</a></li>
<li><a class="reference" href="#customizing-templates" id="id100" name="id100">Customizing templates</a><ul>
<li><a class="reference" href="#template-wildcards" id="id101" name="id101">Template wildcards</a></li>
<li><a class="reference" href="#filetype-extensions" id="id97" name="id97">Filetype extensions</a></li>
<li><a class="reference" href="#templates" id="id98" name="id98">Templates</a><ul>
<li><a class="reference" href="#template-metadata" id="id99" name="id99">Template metadata</a></li>
<li><a class="reference" href="#filetype-templates" id="id100" name="id100">Filetype templates</a></li>
<li><a class="reference" href="#customizing-templates" id="id101" name="id101">Customizing templates</a><ul>
<li><a class="reference" href="#template-wildcards" id="id102" name="id102">Template wildcards</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><a class="reference" href="#contributing-to-this-document" id="id102" name="id102">Contributing to this document</a></li>
<li><a class="reference" href="#scintilla-keyboard-commands" id="id103" name="id103">Scintilla keyboard commands</a><ul>
<li><a class="reference" href="#keyboard-commands" id="id104" name="id104">Keyboard commands</a></li>
<li><a class="reference" href="#contributing-to-this-document" id="id103" name="id103">Contributing to this document</a></li>
<li><a class="reference" href="#scintilla-keyboard-commands" id="id104" name="id104">Scintilla keyboard commands</a><ul>
<li><a class="reference" href="#keyboard-commands" id="id105" name="id105">Keyboard commands</a></li>
</ul>
</li>
<li><a class="reference" href="#hidden-preferences" id="id105" name="id105">Hidden preferences</a></li>
<li><a class="reference" href="#compile-time-options" id="id106" name="id106">Compile-time options</a></li>
<li><a class="reference" href="#gnu-general-public-license" id="id107" name="id107">GNU General Public License</a></li>
<li><a class="reference" href="#license-for-scintilla-and-scite" id="id108" name="id108">License for Scintilla and SciTE</a></li>
<li><a class="reference" href="#hidden-preferences" id="id106" name="id106">Hidden preferences</a></li>
<li><a class="reference" href="#compile-time-options" id="id107" name="id107">Compile-time options</a></li>
<li><a class="reference" href="#gnu-general-public-license" id="id108" name="id108">GNU General Public License</a></li>
<li><a class="reference" href="#license-for-scintilla-and-scite" id="id109" name="id109">License for Scintilla and SciTE</a></li>
</ul>
</div>
<div class="section">
@ -1397,9 +1398,16 @@ used elsewhere by Geany.</p>
<p>The <em>Base path</em> field is used as the directory to run the Make and Make
custom commands in. It is also used as working directory for the project
specific <em>Run command</em>.
The specified path can be absolute or relative to the project's file name.</p>
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="#id67" id="run-command" name="run-command">Run command</a></h4>
<h4><a class="toc-backref" href="#id67" id="make-in-base-path" name="make-in-base-path">Make in base path</a></h4>
<p>This setting makes the <em>Build-&gt;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="#id68" 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>
@ -1412,17 +1420,17 @@ any command-line arguments.</p>
</div>
</div>
<div class="section">
<h3><a class="toc-backref" href="#id68" id="close-project" name="close-project">Close Project</a></h3>
<h3><a class="toc-backref" href="#id69" id="close-project" name="close-project">Close Project</a></h3>
<p>Project file settings are saved when the project is closed.</p>
</div>
<div class="section">
<h3><a class="toc-backref" href="#id69" id="open-project" name="open-project">Open Project</a></h3>
<h3><a class="toc-backref" href="#id70" 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>.</p>
</div>
</div>
<div class="section">
<h2><a class="toc-backref" href="#id70" id="build-system" name="build-system">Build system</a></h2>
<h2><a class="toc-backref" href="#id71" 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
@ -1446,7 +1454,7 @@ the following items:</p>
<li>Set Includes and Arguments</li>
</ul>
<div class="section">
<h3><a class="toc-backref" href="#id71" id="compile" name="compile">Compile</a></h3>
<h3><a class="toc-backref" href="#id72" 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>
@ -1456,7 +1464,7 @@ language supports it, or will run a syntax check, or failing that
will run the file in its language interpreter.</p>
</div>
<div class="section">
<h3><a class="toc-backref" href="#id72" id="build" name="build">Build</a></h3>
<h3><a class="toc-backref" href="#id73" 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
@ -1464,7 +1472,7 @@ in one step, producing just the executable binary.</p>
<p>Interpreted languages do not use the Build command.</p>
</div>
<div class="section">
<h3><a class="toc-backref" href="#id73" id="make-all" name="make-all">Make all</a></h3>
<h3><a class="toc-backref" href="#id74" id="make-all" name="make-all">Make all</a></h3>
<p>This effectively runs &quot;make all&quot; in the same directory as the
current file.</p>
<div class="note">
@ -1474,19 +1482,19 @@ set in the Tools tab of the Preferences dialog.</p>
</div>
</div>
<div class="section">
<h3><a class="toc-backref" href="#id74" id="make-custom-target" name="make-custom-target">Make custom target</a></h3>
<h3><a class="toc-backref" href="#id75" 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 &quot;make clean&quot;.</p>
</div>
<div class="section">
<h3><a class="toc-backref" href="#id75" id="make-object" name="make-object">Make object</a></h3>
<h3><a class="toc-backref" href="#id76" id="make-object" name="make-object">Make object</a></h3>
<p>Make object will run &quot;make current_file.o&quot; 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="#id76" id="execute" name="execute">Execute</a></h3>
<h3><a class="toc-backref" href="#id77" 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 -
@ -1497,7 +1505,7 @@ prompted to press the return key. This allows you to review any text
output from the program before the terminal window is closed.</p>
</div>
<div class="section">
<h3><a class="toc-backref" href="#id77" id="stopping-running-processes" name="stopping-running-processes">Stopping running processes</a></h3>
<h3><a class="toc-backref" href="#id78" 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))
@ -1506,7 +1514,7 @@ to stop the process. The used signal is SIGQUIT.</p>
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="#id78" id="terminal-emulators" name="terminal-emulators">Terminal emulators</a></h4>
<h4><a class="toc-backref" href="#id79" id="terminal-emulators" name="terminal-emulators">Terminal emulators</a></h4>
<p>Xterm is known to work properly. If you are using &quot;Terminal&quot;
(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
@ -1515,7 +1523,7 @@ tab in the terminal field.</p>
</div>
</div>
<div class="section">
<h3><a class="toc-backref" href="#id79" id="set-includes-and-arguments" name="set-includes-and-arguments">Set Includes and Arguments</a></h3>
<h3><a class="toc-backref" href="#id80" 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
@ -1532,14 +1540,14 @@ and any arguments you want to use when running Execute.</p>
different settings, then writing a Makefile and using the Make commands
is recommended.</p>
<div class="section">
<h4><a class="toc-backref" href="#id80" id="one-step-compilation" name="one-step-compilation">One step compilation</a></h4>
<h4><a class="toc-backref" href="#id81" 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="#id81" id="indicators" name="indicators">Indicators</a></h3>
<h3><a class="toc-backref" href="#id82" 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,
@ -1549,7 +1557,7 @@ dialog.</p>
</div>
</div>
<div class="section">
<h2><a class="toc-backref" href="#id82" id="printing-support" name="printing-support">Printing support</a></h2>
<h2><a class="toc-backref" href="#id83" 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
@ -1597,7 +1605,7 @@ command line).</p>
gtklp or similar programs can be used.</p>
</div>
<div class="section">
<h2><a class="toc-backref" href="#id83" id="plugins" name="plugins">Plugins</a></h2>
<h2><a class="toc-backref" href="#id84" 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
@ -1617,13 +1625,13 @@ You can also configure some plugin specific options when the plugin
provides some.</p>
</div>
<div class="section">
<h2><a class="toc-backref" href="#id84" id="keybindings" name="keybindings">Keybindings</a></h2>
<h2><a class="toc-backref" href="#id85" 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="#id85" id="switching-documents" name="switching-documents">Switching documents</a></h3>
<h3><a class="toc-backref" href="#id86" 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">
@ -1653,7 +1661,7 @@ listed below. These can also be overridden by custom keybindings.</p>
</table>
</div>
<div class="section">
<h3><a class="toc-backref" href="#id86" id="configurable-keybindings" name="configurable-keybindings">Configurable keybindings</a></h3>
<h3><a class="toc-backref" href="#id87" 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
@ -2043,9 +2051,9 @@ actions</a>.</td>
</div>
</div>
<div class="section">
<h1><a class="toc-backref" href="#id87" id="configuration-files" name="configuration-files">Configuration files</a></h1>
<h1><a class="toc-backref" href="#id88" id="configuration-files" name="configuration-files">Configuration files</a></h1>
<div class="section">
<h2><a class="toc-backref" href="#id88" id="global-configuration-file" name="global-configuration-file">Global configuration file</a></h2>
<h2><a class="toc-backref" href="#id89" 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
@ -2065,7 +2073,7 @@ need to do that.</p>
</div>
</div>
<div class="section">
<h2><a class="toc-backref" href="#id89" id="filetype-definition-files" name="filetype-definition-files">Filetype definition files</a></h2>
<h2><a class="toc-backref" href="#id90" 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
@ -2093,9 +2101,9 @@ configuration directory. Alternatively, you can create a file
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="#id90" id="format" name="format">Format</a></h3>
<h3><a class="toc-backref" href="#id91" id="format" name="format">Format</a></h3>
<div class="section">
<h4><a class="toc-backref" href="#id91" id="styling-section" name="styling-section">[styling] Section</a></h4>
<h4><a class="toc-backref" href="#id92" 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
@ -2105,7 +2113,7 @@ and italic are flags and should only be &quot;true&quot; or &quot;false&quot;. I
value is something other than &quot;true&quot; or &quot;false&quot;, &quot;false&quot; is assumed.</p>
</div>
<div class="section">
<h4><a class="toc-backref" href="#id92" id="keywords-section" name="keywords-section">[keywords] Section</a></h4>
<h4><a class="toc-backref" href="#id93" 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
@ -2116,7 +2124,7 @@ an existing list.</p>
</div>
</div>
<div class="section">
<h4><a class="toc-backref" href="#id93" id="settings-section" name="settings-section">[settings] Section</a></h4>
<h4><a class="toc-backref" href="#id94" 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
@ -2177,7 +2185,7 @@ context_action_cmd=firefox &quot;<a class="reference" href="http://www.php.net/%
</dl>
</div>
<div class="section">
<h4><a class="toc-backref" href="#id94" id="build-settings-section" name="build-settings-section">[build_settings] Section</a></h4>
<h4><a class="toc-backref" href="#id95" 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
@ -2210,7 +2218,7 @@ complete filename, e.g. for shell scripts.</p>
</div>
</div>
<div class="section">
<h3><a class="toc-backref" href="#id95" id="special-file-filetypes-common" name="special-file-filetypes-common">Special file filetypes.common</a></h3>
<h3><a class="toc-backref" href="#id96" 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>
@ -2320,7 +2328,7 @@ when moving, selecting and deleting across word boundaries
</div>
</div>
<div class="section">
<h2><a class="toc-backref" href="#id96" id="filetype-extensions" name="filetype-extensions">Filetype extensions</a></h2>
<h2><a class="toc-backref" href="#id97" 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
@ -2346,7 +2354,7 @@ Make=Makefile*;*.mk;Buildfile;
</pre>
</div>
<div class="section">
<h2><a class="toc-backref" href="#id97" id="templates" name="templates">Templates</a></h2>
<h2><a class="toc-backref" href="#id98" id="templates" name="templates">Templates</a></h2>
<p>Geany supports the following templates:</p>
<ul class="simple">
<li>ChangeLog entry</li>
@ -2369,7 +2377,7 @@ of a function or the function name cannot be determined, the inserted
function description won't contain the correct function name but &quot;unknown&quot;
instead.</p>
<div class="section">
<h3><a class="toc-backref" href="#id98" id="template-metadata" name="template-metadata">Template metadata</a></h3>
<h3><a class="toc-backref" href="#id99" 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 &quot;Templates&quot; (see
@ -2379,7 +2387,7 @@ restart Geany after making changes, because they are only read
at startup.</p>
</div>
<div class="section">
<h3><a class="toc-backref" href="#id99" id="filetype-templates" name="filetype-templates">Filetype templates</a></h3>
<h3><a class="toc-backref" href="#id100" 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>
@ -2400,7 +2408,7 @@ followed by a blank line.</p>
the New command is used without a filetype. This is empty by default.</p>
</div>
<div class="section">
<h3><a class="toc-backref" href="#id100" id="customizing-templates" name="customizing-templates">Customizing templates</a></h3>
<h3><a class="toc-backref" href="#id101" 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
@ -2408,7 +2416,7 @@ directory). Just open the desired template with an editor (ideally,
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="#id101" id="template-wildcards" name="template-wildcards">Template wildcards</a></h4>
<h4><a class="toc-backref" href="#id102" id="template-wildcards" name="template-wildcards">Template wildcards</a></h4>
<p>All wildcards must be enclosed by &quot;{&quot; and &quot;}&quot;, e.g. {date}.</p>
<table border="1" class="docutils">
<colgroup>
@ -2517,7 +2525,7 @@ templates.</td>
</div>
</div>
<div class="section">
<h1><a class="toc-backref" href="#id102" id="contributing-to-this-document" name="contributing-to-this-document">Contributing to this document</a></h1>
<h1><a class="toc-backref" href="#id103" 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 &quot;reST&quot;). 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
@ -2537,7 +2545,7 @@ to build the docs. The package is named <tt class="docutils literal"><span class
and Fedora systems.</p>
</div>
<div class="section">
<h1><a class="toc-backref" href="#id103" id="scintilla-keyboard-commands" name="scintilla-keyboard-commands">Scintilla keyboard commands</a></h1>
<h1><a class="toc-backref" href="#id104" id="scintilla-keyboard-commands" name="scintilla-keyboard-commands">Scintilla keyboard commands</a></h1>
<p>Copyright © 1998, 2006 Neil Hodgson &lt;neilh(at)scintilla(dot)org&gt;</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
@ -2546,7 +2554,7 @@ program and in the appendix of this document. See <a class="reference" href="#li
Scintilla and SciTE</a>.</p>
<p>20 June 2006</p>
<div class="section">
<h2><a class="toc-backref" href="#id104" id="keyboard-commands" name="keyboard-commands">Keyboard commands</a></h2>
<h2><a class="toc-backref" href="#id105" 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
@ -2646,7 +2654,7 @@ menus. Some less common commands with no menu equivalent are:</p>
</div>
</div>
<div class="section">
<h1><a class="toc-backref" href="#id105" id="hidden-preferences" name="hidden-preferences">Hidden preferences</a></h1>
<h1><a class="toc-backref" href="#id106" 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>
@ -2711,7 +2719,7 @@ available with GTK 2.12 or above).</td>
</table>
</div>
<div class="section">
<h1><a class="toc-backref" href="#id106" id="compile-time-options" name="compile-time-options">Compile-time options</a></h1>
<h1><a class="toc-backref" href="#id107" 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
@ -2861,7 +2869,7 @@ when building on a non-Win32 system.</em></td>
</table>
</div>
<div class="section">
<h1><a class="toc-backref" href="#id107" id="gnu-general-public-license" name="gnu-general-public-license">GNU General Public License</a></h1>
<h1><a class="toc-backref" href="#id108" 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
@ -3206,7 +3214,7 @@ Public License instead of this License.
</pre>
</div>
<div class="section">
<h1><a class="toc-backref" href="#id108" 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="#id109" 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 &lt;neilh(at)scintilla(dot)org&gt;</p>
<p>All Rights Reserved</p>
<p>Permission to use, copy, modify, and distribute this software and
@ -3226,7 +3234,7 @@ USE OR PERFORMANCE OF THIS SOFTWARE.</p>
<div class="footer">
<hr class="footer" />
<a class="reference" href="geany.txt">View document source</a>.
Generated on: 2008-01-10 16:57 UTC.
Generated on: 2008-01-11 16:41 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>

View File

@ -1249,7 +1249,16 @@ used elsewhere by Geany.
The *Base path* field is used as the directory to run the Make and Make
custom commands in. It is also used as working directory for the project
specific *Run command*.
The specified path can be absolute or relative to the project's file name.
The specified path can be an absolute path or relative to the project's
file name.
Make in base path
`````````````````
This setting makes the *Build->Make* command use the project's base
path. Uncheck this if you want to use the current file's directory
instead.
Run command

View File

@ -690,7 +690,7 @@ static gchar *prepare_run_script(gint idx, gchar **vte_cmd_nonscript)
if (have_project)
{
gchar *project_base_path = project_get_make_dir();
gchar *project_base_path = project_get_base_path();
working_dir = utils_get_locale_from_utf8(project_base_path);
g_free(project_base_path);
}

View File

@ -64,6 +64,7 @@ typedef struct _PropertyDialogElements
GtkWidget *description;
GtkWidget *file_name;
GtkWidget *base_path;
GtkWidget *make_in_base_path;
GtkWidget *run_cmd;
GtkWidget *patterns;
} PropertyDialogElements;
@ -332,7 +333,7 @@ void project_close(gboolean open_default)
}
void project_properties()
static void create_properties_dialog(PropertyDialogElements *e)
{
GtkWidget *vbox;
GtkWidget *table;
@ -342,11 +343,6 @@ void project_properties()
GtkWidget *label;
GtkWidget *swin;
GtkTooltips *tooltips = GTK_TOOLTIPS(lookup_widget(app->window, "tooltips"));
PropertyDialogElements *e = g_new(PropertyDialogElements, 1);
GeanyProject *p = app->project;
gint response;
g_return_if_fail(app->project != NULL);
e->dialog = gtk_dialog_new_with_buttons(_("Project Properties"), GTK_WINDOW(app->window),
GTK_DIALOG_DESTROY_WITH_PARENT,
@ -356,8 +352,6 @@ void project_properties()
vbox = ui_dialog_vbox_new(GTK_DIALOG(e->dialog));
entries_modified = FALSE;
table = gtk_table_new(6, 2, FALSE);
gtk_table_set_row_spacings(GTK_TABLE(table), 5);
gtk_table_set_col_spacings(GTK_TABLE(table), 10);
@ -366,7 +360,7 @@ void project_properties()
gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_misc_set_alignment(GTK_MISC(label), 1, 0);
gtk_misc_set_alignment(GTK_MISC(label), -1, 0);
e->name = gtk_entry_new();
gtk_entry_set_max_length(GTK_ENTRY(e->name), MAX_NAME_LEN);
@ -378,7 +372,7 @@ void project_properties()
gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_misc_set_alignment(GTK_MISC(label), 1, 0);
gtk_misc_set_alignment(GTK_MISC(label), -1, 0);
e->file_name = gtk_entry_new();
gtk_editable_set_editable(GTK_EDITABLE(e->file_name), FALSE); // read-only
@ -390,7 +384,7 @@ void project_properties()
gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_FILL), 0, 0);
gtk_misc_set_alignment(GTK_MISC(label), 1, 0);
gtk_misc_set_alignment(GTK_MISC(label), -1, 0);
e->description = gtk_text_view_new();
gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(e->description), GTK_WRAP_WORD);
@ -407,7 +401,7 @@ void project_properties()
gtk_table_attach(GTK_TABLE(table), label, 0, 1, 3, 4,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_misc_set_alignment(GTK_MISC(label), 1, 0);
gtk_misc_set_alignment(GTK_MISC(label), -1, 0);
e->base_path = gtk_entry_new();
gtk_tooltips_set_tip(tooltips, e->base_path,
@ -420,11 +414,16 @@ void project_properties()
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
label = gtk_label_new(_("Run command:"));
gtk_table_attach(GTK_TABLE(table), label, 0, 1, 4, 5,
e->make_in_base_path = gtk_check_button_new_with_label(_("Make in base path"));
gtk_table_attach(GTK_TABLE(table), e->make_in_base_path, 0, 3, 4, 5,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_misc_set_alignment(GTK_MISC(label), 1, 0);
label = gtk_label_new(_("Run command:"));
gtk_table_attach(GTK_TABLE(table), label, 0, 1, 5, 6,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
gtk_misc_set_alignment(GTK_MISC(label), -1, 0);
e->run_cmd = gtk_entry_new();
gtk_tooltips_set_tip(tooltips, e->run_cmd,
@ -439,17 +438,17 @@ void project_properties()
bbox = gtk_hbox_new(FALSE, 6);
gtk_box_pack_start_defaults(GTK_BOX(bbox), e->run_cmd);
gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
gtk_table_attach(GTK_TABLE(table), bbox, 1, 2, 4, 5,
gtk_table_attach(GTK_TABLE(table), bbox, 1, 2, 5, 6,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
#if 0
label = gtk_label_new(_("File patterns:"));
// <small>Separate multiple patterns by a new line</small>
gtk_table_attach(GTK_TABLE(table), label, 0, 1, 5, 6,
gtk_table_attach(GTK_TABLE(table), label, 0, 1, 6, 7,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_FILL), 0, 0);
gtk_misc_set_alignment(GTK_MISC(label), 1, 0);
gtk_misc_set_alignment(GTK_MISC(label), -1, 0);
e->patterns = gtk_text_view_new();
swin = gtk_scrolled_window_new(NULL, NULL);
@ -457,12 +456,26 @@ void project_properties()
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(swin), GTK_WIDGET(e->patterns));
gtk_table_attach(GTK_TABLE(table), swin, 1, 2, 5, 6,
gtk_table_attach(GTK_TABLE(table), swin, 1, 2, 6, 7,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
#endif
gtk_container_add(GTK_CONTAINER(vbox), table);
}
void project_properties()
{
PropertyDialogElements *e = g_new(PropertyDialogElements, 1);
GeanyProject *p = app->project;
gint response;
g_return_if_fail(app->project != NULL);
entries_modified = FALSE;
create_properties_dialog(e);
// fill the elements with the appropriate data
gtk_entry_set_text(GTK_ENTRY(e->name), p->name);
@ -496,6 +509,8 @@ void project_properties()
gtk_entry_set_text(GTK_ENTRY(e->file_name), p->file_name);
gtk_entry_set_text(GTK_ENTRY(e->base_path), p->base_path);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(e->make_in_base_path),
p->make_in_base_path);
if (p->run_cmd != NULL)
gtk_entry_set_text(GTK_ENTRY(e->run_cmd), p->run_cmd);
@ -584,8 +599,6 @@ static gboolean update_config(const PropertyDialogElements *e)
}
base_path = gtk_entry_get_text(GTK_ENTRY(e->base_path));
/* For now, the base path can be empty, so that Make uses the current directory.
* In future, it would be best to add a Make path setting for projects. */
if (NZV(base_path))
{ // check whether the given directory actually exists
gchar *locale_path = utils_get_locale_from_utf8(base_path);
@ -631,7 +644,7 @@ static gboolean update_config(const PropertyDialogElements *e)
p->file_name = g_strdup(file_name);
if (p->base_path != NULL) g_free(p->base_path);
p->base_path = g_strdup(base_path);
p->base_path = g_strdup(NZV(base_path) ? base_path : "./"); // use "." if base_path is empty
if (! new_project) // save properties specific fields
{
@ -639,6 +652,8 @@ static gboolean update_config(const PropertyDialogElements *e)
//gchar *tmp;
GtkTextBuffer *buffer;
p->make_in_base_path = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(e->make_in_base_path));
if (p->run_cmd != NULL) g_free(p->run_cmd);
p->run_cmd = g_strdup(gtk_entry_get_text(GTK_ENTRY(e->run_cmd)));
@ -862,6 +877,7 @@ static gboolean load_config(const gchar *filename)
p->description = utils_get_setting_string(config, "project", "description", "");
p->file_name = utils_get_utf8_from_locale(filename);
p->base_path = utils_get_setting_string(config, "project", "base_path", "");
p->make_in_base_path = utils_get_setting_boolean(config, "project", "make_in_base_path", TRUE);
p->run_cmd = utils_get_setting_string(config, "project", "run_cmd", "");
p->file_patterns = g_key_file_get_string_list(config, "project", "file_patterns", NULL, NULL);
@ -905,6 +921,7 @@ static gboolean write_config()
if (p->description)
g_key_file_set_string(config, "project", "description", p->description);
g_key_file_set_boolean(config, "project", "make_in_base_path", p->make_in_base_path);
if (p->run_cmd)
g_key_file_set_string(config, "project", "run_cmd", p->run_cmd);
if (p->file_patterns)
@ -936,24 +953,38 @@ static gboolean write_config()
* base path if it is absolute or it is built out of project file name's dir and base_path.
* If there is no project or project's base_path is invalid, NULL will be returned.
* The returned string should be freed when no longer needed. */
gchar *project_get_make_dir()
gchar *project_get_base_path()
{
if (app->project != NULL && NZV(app->project->base_path))
GeanyProject *project = app->project;
if (project && NZV(project->base_path))
{
if (g_path_is_absolute(app->project->base_path))
return g_strdup(app->project->base_path);
if (g_path_is_absolute(project->base_path))
return g_strdup(project->base_path);
else
{ // build base_path out of project file name's dir and base_path
gchar *path;
gchar *dir = g_path_get_dirname(app->project->file_name);
gchar *dir = g_path_get_dirname(project->file_name);
path = g_strconcat(dir, G_DIR_SEPARATOR_S, app->project->base_path, NULL);
path = g_strconcat(dir, G_DIR_SEPARATOR_S, project->base_path, NULL);
g_free(dir);
return path;
}
}
else
return NULL;
}
/* Returns: NULL if the default path should be used, or a UTF-8 path.
* Maybe in future this will support a separate project make path from base path. */
gchar *project_get_make_dir()
{
GeanyProject *project = app->project;
if (project && ! project->make_in_base_path)
return NULL;
else
return project_get_base_path();
}

View File

@ -41,6 +41,8 @@ struct _GeanyProject
// by a plugin
gchar **file_patterns; // array of filename extension patterns
gboolean make_in_base_path;
};
typedef struct
@ -62,6 +64,8 @@ void project_properties();
gboolean project_load_file(const gchar *locale_file_name);
gchar *project_get_base_path();
gchar *project_get_make_dir();