011fcde8ea
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@1551 ea778897-0a13-0410-b9d1-a72fbfd435f5
2692 lines
161 KiB
Plaintext
2692 lines
161 KiB
Plaintext
Geany 0.11
|
||
|
||
Enrico Tröger
|
||
|
||
Nick Treleaven
|
||
|
||
Frank Lanitz
|
||
|
||
Copyright © 2005-2007
|
||
|
||
This document is distributed under the terms of the GNU General Public License
|
||
as published by the Free Software Foundation; either version 2 of the License,
|
||
or (at your option) any later version. A copy of this license can be found in
|
||
the file COPYING included with the source code of this program and see
|
||
Appendix D, GNU General Public License.
|
||
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
Table of Contents
|
||
|
||
1. Introduction
|
||
|
||
About Geany
|
||
About this document
|
||
Where to get it
|
||
License
|
||
|
||
2. Installation
|
||
|
||
Requirements
|
||
Source compilation
|
||
Binary packages
|
||
|
||
Fedora
|
||
Debian
|
||
SuSE
|
||
Gentoo
|
||
|
||
3. Usage
|
||
|
||
Getting started
|
||
Command line options
|
||
General
|
||
|
||
Startup
|
||
Opening files from the command-line in a running instance
|
||
Virtual terminal emulator widget (VTE)
|
||
Defining own widget styles using .gtkrc-2.0
|
||
|
||
Character sets and Unicode Byte-Order-Mark (BOM)
|
||
|
||
Using character sets
|
||
Special encoding "None"
|
||
Unicode Byte-Order-Mark (BOM)
|
||
|
||
Editing
|
||
|
||
Drag and drop of text
|
||
Auto indentation
|
||
Construct completion
|
||
Bookmarks
|
||
Send text through definable commands
|
||
Context actions
|
||
|
||
Search, replace and go to
|
||
|
||
Find
|
||
Find usage
|
||
Find in files
|
||
Replace
|
||
Go to tag definition
|
||
Go to tag declaration
|
||
Go to line
|
||
Regular expressions
|
||
|
||
Tags
|
||
|
||
Workspace tags
|
||
Global tags
|
||
|
||
Preferences
|
||
Project Management
|
||
|
||
New Project
|
||
Project Properties
|
||
Close Project
|
||
Open Project
|
||
|
||
Build system
|
||
|
||
Compile
|
||
Build
|
||
Make all
|
||
Make custom target
|
||
Make object
|
||
Execute
|
||
Stopping running processes
|
||
Set Includes and Arguments
|
||
Indicators
|
||
File type configuration settings
|
||
|
||
Printing support
|
||
Keybindings
|
||
|
||
4. Configuration files
|
||
|
||
Filetype definition files
|
||
|
||
Format
|
||
Special file filetypes.common
|
||
|
||
Filetype extensions
|
||
Templates
|
||
|
||
Template metadata
|
||
Filetype templates
|
||
Customizing templates
|
||
|
||
A. Contributing to this document
|
||
B. Scintilla keyboard commands
|
||
|
||
Keyboard commands
|
||
|
||
C. Compile time options
|
||
D. GNU General Public License
|
||
|
||
Preamble
|
||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||
|
||
Section 0
|
||
Section 1
|
||
Section 2
|
||
Section 3
|
||
Section 4
|
||
Section 5
|
||
Section 6
|
||
Section 7
|
||
Section 8
|
||
Section 9
|
||
Section 10
|
||
Section 11 NO WARRANTY
|
||
Section 12
|
||
|
||
How to Apply These Terms to Your New Programs
|
||
|
||
E. License for Scintilla and SciTE
|
||
|
||
List of Figures
|
||
|
||
3.1. Find dialog
|
||
3.2. Find in files dialog
|
||
3.3. Replace dialog
|
||
3.4. General tab in preferences dialog
|
||
3.5. Interface tab in preferences dialog
|
||
3.6. Toolbar tab in preferences dialog
|
||
3.7. Files tab in preferences dialog
|
||
3.8. Editor tab in preferences dialog
|
||
3.9. Tools tab in preferences dialog
|
||
3.10. Template tab in preferences dialog
|
||
3.11. Keybinding tab in preferences dialog
|
||
3.12. VTE tab in preferences dialog
|
||
|
||
List of Tables
|
||
|
||
3.1. Command line Options
|
||
3.2. Regular expressions
|
||
3.3. Keybindings action table
|
||
4.1. General settings
|
||
4.2. Build settings
|
||
4.3. General settings
|
||
4.4. Template wildcards
|
||
B.1. Scintilla keyboard commands
|
||
C.1. Compile time options
|
||
|
||
List of Examples
|
||
|
||
4.1. Comment indentation
|
||
|
||
Chapter 1. Introduction
|
||
|
||
Table of Contents
|
||
|
||
About Geany
|
||
About this document
|
||
Where to get it
|
||
License
|
||
|
||
About Geany
|
||
|
||
Geany is a small and lightweight Integrated Development Environment. It was
|
||
developed to provide a small and fast IDE, which has only a few dependencies
|
||
from other packages. Another goal was to be as independent as possible from a
|
||
special Desktop Environment like KDE or GNOME, so Geany only requires the GTK2
|
||
toolkit and therefore you only need the GTK2 runtime libraries installed to run
|
||
it.
|
||
|
||
The basic features of Geany are:
|
||
|
||
● Syntax highlighting
|
||
|
||
● Code completion
|
||
|
||
● Auto completion of often-used constructs like "if", "for" and "while"
|
||
|
||
● Auto completion of XML and HTML tags
|
||
|
||
● Call tips
|
||
|
||
● Many supported filetypes including C, Java, PHP, HTML, Python, Perl,
|
||
Pascal, and others
|
||
|
||
● Tag/Symbol lists
|
||
|
||
About this document
|
||
|
||
This documentation is available in various formats like HTML, text and PDF. The
|
||
latest version is always available at http://geany.uvena.de.
|
||
|
||
Where to get it
|
||
|
||
You can obtain Geany from http://geany.uvena.de or perhaps from your
|
||
distributor.
|
||
|
||
License
|
||
|
||
Geany is distributed under the terms of the GNU General Public License as
|
||
published by the Free Software Foundation; either version 2 of the License, or
|
||
(at your option) any later version. A copy of this license can be found in the
|
||
file COPYING included with the source code of this program or see Appendix D,
|
||
GNU General Public License.
|
||
|
||
The included Scintilla library (found in the subdirectory scintilla/) has its
|
||
own license, which can be found in the appendix (see Appendix E, License for
|
||
Scintilla and SciTE).
|
||
|
||
Chapter 2. Installation
|
||
|
||
Table of Contents
|
||
|
||
Requirements
|
||
Source compilation
|
||
Binary packages
|
||
|
||
Fedora
|
||
Debian
|
||
SuSE
|
||
Gentoo
|
||
|
||
Requirements
|
||
|
||
For compiling Geany yourself, you will need the GTK (>= 2.6.0) libraries and
|
||
header files. You will also need the Pango, Glib and ATK libraries and header
|
||
files. All these files are available at http://www.gtk.org.
|
||
|
||
Furthermore you need, of course, a C compiler and the Make tool; a C++ compiler
|
||
is also required for the included Scintilla library. The GNU versions of these
|
||
tools are recommended.
|
||
|
||
Source compilation
|
||
|
||
Compiling Geany is quite easy. The following should do it:
|
||
|
||
% ./configure
|
||
% make
|
||
% make install
|
||
|
||
The configure script supports several common options, for a detailed list, type
|
||
|
||
% ./configure --help
|
||
|
||
There also some compile time options which can be found in src/geany.h. Please
|
||
see Appendix C, Compile time options for more information.
|
||
|
||
In the case that your system lacks dynamic linking loader support, you probably
|
||
want to pass the option --disable-vte to the configure script. This prevents
|
||
compiling Geany with dynamic linking loader support to automatically load
|
||
libvte.so.4 if available.
|
||
|
||
Geany has been successfully compiled and tested under Debian 3.1 Sarge, Debian
|
||
4.0 Etch, Fedora Core 3/4/5, LinuxFromScratch and FreeBSD 6.0. It also compiles
|
||
under Microsoft Windows™.
|
||
|
||
If there are any errors during compilation, check your build environment and
|
||
try to find the error, otherwise contact the author at <enrico.troeger@uvena.de
|
||
>.
|
||
|
||
Binary packages
|
||
|
||
Fedora
|
||
|
||
You can use the Fedora Core 4 repository from http://naturidentisch.de/packages
|
||
/fc4/.
|
||
|
||
You can also use the Fedora Core 5 repository from http://naturidentisch.de/
|
||
packages/fc5/.
|
||
|
||
Debian
|
||
|
||
Geany is available through the official Debian archives.
|
||
|
||
apt-get install geany
|
||
|
||
SuSE
|
||
|
||
Packages for SuSE are not yet available.
|
||
|
||
Gentoo
|
||
|
||
An ebuild for Gentoo can be found on http://bugs.gentoo.de.
|
||
|
||
Chapter 3. Usage
|
||
|
||
Table of Contents
|
||
|
||
Getting started
|
||
Command line options
|
||
General
|
||
|
||
Startup
|
||
Opening files from the command-line in a running instance
|
||
Virtual terminal emulator widget (VTE)
|
||
Defining own widget styles using .gtkrc-2.0
|
||
|
||
Character sets and Unicode Byte-Order-Mark (BOM)
|
||
|
||
Using character sets
|
||
Special encoding "None"
|
||
Unicode Byte-Order-Mark (BOM)
|
||
|
||
Editing
|
||
|
||
Drag and drop of text
|
||
Auto indentation
|
||
Construct completion
|
||
Bookmarks
|
||
Send text through definable commands
|
||
Context actions
|
||
|
||
Search, replace and go to
|
||
|
||
Find
|
||
Find usage
|
||
Find in files
|
||
Replace
|
||
Go to tag definition
|
||
Go to tag declaration
|
||
Go to line
|
||
Regular expressions
|
||
|
||
Tags
|
||
|
||
Workspace tags
|
||
Global tags
|
||
|
||
Preferences
|
||
Project Management
|
||
|
||
New Project
|
||
Project Properties
|
||
Close Project
|
||
Open Project
|
||
|
||
Build system
|
||
|
||
Compile
|
||
Build
|
||
Make all
|
||
Make custom target
|
||
Make object
|
||
Execute
|
||
Stopping running processes
|
||
Set Includes and Arguments
|
||
Indicators
|
||
File type configuration settings
|
||
|
||
Printing support
|
||
Keybindings
|
||
|
||
Getting started
|
||
|
||
You can start Geany in the following ways:
|
||
|
||
● From the Desktop Environment menu
|
||
|
||
Choose in your application menu of your used Desktop Environment:
|
||
Development → Geany.
|
||
|
||
● From the command line
|
||
|
||
To start Geany from a command line, type the following and press Return:
|
||
|
||
% geany
|
||
|
||
|
||
Command line options
|
||
|
||
Table 3.1. Command line Options
|
||
|
||
┌──────────┬────────────────┬─────────────────────────────────────────────────┐
|
||
│ Short │ Long option │ Function │
|
||
│ option │ │ │
|
||
├──────────┼────────────────┼─────────────────────────────────────────────────┤
|
||
│ │ --column │ Set initial column number for the first opened │
|
||
│ │ │ file. │
|
||
├──────────┼────────────────┼─────────────────────────────────────────────────┤
|
||
│ │ │ Use an alternate configuration directory. │
|
||
│ -c │ --config= │ Default configuration directory is ~/.geany/ │
|
||
│ dir_name │ directory_name │ and there resides geany.conf and other │
|
||
│ │ │ configuration files. │
|
||
├──────────┼────────────────┼─────────────────────────────────────────────────┤
|
||
│ -d │ --debug │ Run Geany in debug mode, which means being │
|
||
│ │ │ verbose and printing lots of information. │
|
||
├──────────┼────────────────┼─────────────────────────────────────────────────┤
|
||
│ │ │ Do not open files in a running instance, force │
|
||
│ -i │ --new-instance │ opening a new instance. Only available if Geany │
|
||
│ │ │ was compiled with support for Sockets. │
|
||
├──────────┼────────────────┼─────────────────────────────────────────────────┤
|
||
│ -l │ --line │ Set initial line number for the first opened │
|
||
│ │ │ file. │
|
||
├──────────┼────────────────┼─────────────────────────────────────────────────┤
|
||
│ │ │ Do not show the message window. Use this option │
|
||
│ -m │ --no-msgwin │ if you do not need compiler messages or VTE │
|
||
│ │ │ support. │
|
||
├──────────┼────────────────┼─────────────────────────────────────────────────┤
|
||
│ -n │ --no-ctags │ Do not load auto completion and call tip data. │
|
||
│ │ │ Use this option if you do not want to use them. │
|
||
├──────────┼────────────────┼─────────────────────────────────────────────────┤
|
||
│ -s │ --no-session │ Don't load the previous session's files. │
|
||
├──────────┼────────────────┼─────────────────────────────────────────────────┤
|
||
│ │ │ Do not load terminal support. Use this option │
|
||
│ │ │ if you do not want to load the virtual terminal │
|
||
│ -t │ --no-terminal │ emulator widget at startup. If you do not have │
|
||
│ │ │ libvte.so.4 installed, then terminal-support is │
|
||
│ │ │ automatically disabled. Only available if Geany │
|
||
│ │ │ was compiled with support for VTE. │
|
||
├──────────┼────────────────┼─────────────────────────────────────────────────┤
|
||
│ │ │ Specify explicitly the path including filename │
|
||
│ │ │ or only the filename to the VTE library, e.g. / │
|
||
│ │ --vte-lib │ usr/lib/libvte.so or libvte.so. This option is │
|
||
│ │ │ only needed when the autodetection does not │
|
||
│ │ │ work. Only available if Geany was compiled with │
|
||
│ │ │ support for VTE. │
|
||
├──────────┼────────────────┼─────────────────────────────────────────────────┤
|
||
│ -v │ --version │ Show version information and exit. │
|
||
├──────────┼────────────────┼─────────────────────────────────────────────────┤
|
||
│ -? │ --help │ Show help information and exit. │
|
||
├──────────┼────────────────┼─────────────────────────────────────────────────┤
|
||
│ │ │ Open all given files at startup. This option │
|
||
│ │ [files ...] │ causes Geany to ignore loading stored files │
|
||
│ │ │ from the last session (if enabled). │
|
||
└──────────┴────────────────┴─────────────────────────────────────────────────┘
|
||
|
||
|
||
Geany supports all generic GTK options, a list is available on the help screen.
|
||
|
||
General
|
||
|
||
Startup
|
||
|
||
At startup, Geany loads all files from the last time Geany was launched. You
|
||
can disable this feature in the preferences dialog(see Figure 3.4, “General tab
|
||
in preferences dialog”). If you specify some files on the command line, only
|
||
these files will be opened, but you can find the files from the last session in
|
||
the file menu under the "Recent files" item. By default this contains the last
|
||
10 recently opened files. You can change the amount of recently opened files in
|
||
the preferences dialog.
|
||
|
||
You can start several instances of Geany, but only the first will load files
|
||
from the last session. To run a second instance of Geany, do not specify any
|
||
filenames on the command-line, or disable opening files in a running instance
|
||
using the appropriate command line option.
|
||
|
||
Opening files from the command-line in a running instance
|
||
|
||
Geany detects an already running instance of itself and opens files from the
|
||
command-line in the already running instance. So, Geany can be used to view and
|
||
edit files by opening them from other programs such as a file manager. If you
|
||
do not like this for some reason, you can disable using the first instance by
|
||
using the appropriate command line option - see the section called “Command
|
||
line options”.
|
||
|
||
Virtual terminal emulator widget (VTE)
|
||
|
||
If you have installed libvte.so in your system, it is loaded automatically by
|
||
Geany, and you will have a terminal widget in the notebook at the bottom.
|
||
|
||
If Geany cannot find libvte.so at startup, the terminal widget will not be
|
||
loaded. So there is no need to install the package containing this file in
|
||
order to run Geany. Additionally, you can disable the use of the terminal
|
||
widget by command line option, for more information see the section called
|
||
“Command line options”.
|
||
|
||
You can use this terminal (from now on called VTE) nearly as an usual terminal
|
||
program like xterm. There is basic clipboard support. You can paste the
|
||
contents of the clipboard by pressing the right mouse button to open the popup
|
||
menu and choosing Paste. To copy text from the VTE, just select the desired
|
||
text and then press the right mouse button and choose Copy from the popup menu.
|
||
On systems running the X Window System you can paste the last selected text by
|
||
pressing the middle mouse button in the VTE (on 2-button mice, the middle
|
||
button can often be simulated by pressing both mouse buttons together).
|
||
|
||
In the preferences dialog you can specify a shell which should be started in
|
||
the VTE. To make the specified shell a login shell just use the appropriate
|
||
command line options for the shell. These options should be found in the manual
|
||
page of the shell. For zsh and bash you can use the argument --login.
|
||
|
||
Note
|
||
|
||
Geany tries to load libvte.so. If this fails, it tries to load libvte.so.4. If
|
||
this fails too, you should check whether you installed libvte correctly. Again,
|
||
Geany also runs without this library.
|
||
|
||
It could be, that the library is called something else than libvte.so.4 (e.g.
|
||
on FreeBSD 6.0 it is called libvte.so.8). So please set a link to the correct
|
||
file (as root).
|
||
|
||
# ln -s /usr/lib/libvte.so.X /usr/lib/libvte.so.4
|
||
|
||
Obviously, you have to adjust the paths and set X to the number of your
|
||
libvte.so.
|
||
|
||
Defining own widget styles using .gtkrc-2.0
|
||
|
||
You can define your widget style for many of Geany's GUI parts. To do this,
|
||
just edit your .gtkrc-2.0 (usually found in your home directory on UNIX-like
|
||
systems and in the etc subdirectory of your Geany installation on Windows).
|
||
|
||
To get a defined style get noticed by Geany you must it assign to one of
|
||
Geany's widgets. To do so, use the following line:
|
||
|
||
widget "Geany*" style "geany_style"
|
||
|
||
This would assign your already defined style "geany_style" to all Geany
|
||
widgets. You can also assign styles only to specific widgets. At the moment you
|
||
can use the following widgets:
|
||
|
||
1. GeanyMainWindow
|
||
|
||
2. GeanyEditMenu
|
||
|
||
3. GeanyToolbarMenu
|
||
|
||
4. GeanyDialog
|
||
|
||
5. GeanyDialogPrefs
|
||
|
||
6. GeanyDialogProject
|
||
|
||
7. GeanyDialogSearch
|
||
|
||
Example of a simple .gtkrc-2.0:
|
||
|
||
style "geanyStyle"
|
||
{
|
||
font_name="Sans 12"
|
||
}
|
||
widget "GeanyMainWindow" style "geanyStyle"
|
||
|
||
style "geanyStyle"
|
||
{
|
||
font_name="Sans 10"
|
||
}
|
||
widget "GeanyPrefsDialog" style "geanyStyle"
|
||
|
||
Character sets and Unicode Byte-Order-Mark (BOM)
|
||
|
||
Using character sets
|
||
|
||
Geany provides support for detecting and converting character sets. So you can
|
||
open and save files in different character sets and even can convert a file
|
||
from a character set to another one. To do this, Geany uses the character
|
||
conversion capabilities of the GLib.
|
||
|
||
Only text files are supported, i.e. opening files which contain NUL-bytes may
|
||
fail. Geany will try to open the file anyway but it is likely that the file
|
||
will be truncated because it can only opened up to the first occurrence of the
|
||
first NUL-byte. All characters after this position are lost and are not written
|
||
when you save the file.
|
||
|
||
Geany tries to detect the encoding of a file while opening it. It might be that
|
||
the encoding of a file cannot be detected correctly so you have to set manually
|
||
the encoding of the file in order to display it correctly. You can this in the
|
||
file open dialog by selecting an encoding in the drop down box or by reloading
|
||
the file with the file menu item "Reload as". The auto detection works well for
|
||
most encodings but there are also some encodings known where auto detection has
|
||
its problems. Auto detecting the encoding of a file is not easy and sometimes
|
||
an encoding might be detected not correctly.
|
||
|
||
There are different ways to use different encodings in Geany:
|
||
|
||
1. Using the file open dialog
|
||
|
||
This opens the file with the encoding specified in the encoding drop down
|
||
box. If the encoding is set to "Detect from file" auto detection will be
|
||
used. If the encoding is set to "Without encoding (None)" the file will be
|
||
opened without any character conversion and Geany will not try to auto
|
||
detect the encoding(see below for more information).
|
||
|
||
2. Using the "Reload as" menu item
|
||
|
||
This item reloads the current file with the specified encoding. It can help
|
||
if you opened a file and found out that a wrong encoding was used.
|
||
|
||
3. Using the "Set encoding" menu item
|
||
|
||
In contrary to the above two options, this will not change or reload the
|
||
current file unless you save it. It is useful when you want to change the
|
||
encoding of the file.
|
||
|
||
Special encoding "None"
|
||
|
||
There is a special encoding "None" which is actually no real encoding. It is
|
||
useful when you know that Geany cannot auto detect the encoding of a file and
|
||
it is not displayed correctly. Especially when the file contains NUL-bytes this
|
||
can be useful to skip auto detection and open the file properly at least until
|
||
the occurrence of the first NUL-byte. Using this encoding opens the file as it
|
||
is without any character conversion.
|
||
|
||
Unicode Byte-Order-Mark (BOM)
|
||
|
||
Furthermore, Geany detects an Unicode Byte Order Mark (see http://
|
||
en.wikipedia.org/wiki/Byte_Order_Mark for details). Of course, this feature is
|
||
only available if the opened file is in an unicode encoding. The Byte Order
|
||
Mark helps to detect the encoding of a file, e.g. whether it is UTF-16LE or
|
||
UTF-16BE and so on. On Unix-like systems using a Byte Order Mark could cause
|
||
some problems, e.g. the gcc stops with stray errors, PHP does not parse a
|
||
script containing a BOM and script files starting with a she-bang maybe cannot
|
||
be started. In the status bar you can easily see whether the file starts with a
|
||
BOM or not. If you want to set a BOM for a file or if you want to remove it
|
||
from a file, just use the document menu and toggle the checkbox.
|
||
|
||
Note
|
||
|
||
If you are unsure what a BOM is or if you do not understand where to use it,
|
||
then it is not important for you and you can safely ignore it.
|
||
|
||
Editing
|
||
|
||
Drag and drop of text
|
||
|
||
If you drag selected text in the editor widget of Geany the text is moved to
|
||
the position where the mouse pointer is when releasing the mouse button.
|
||
Holding Control when releasing the mouse button will copy the text instead.
|
||
This behaviour was changed in Geany 0.11 - before the selected text was copied
|
||
to the new position.
|
||
|
||
Auto indentation
|
||
|
||
Geany knows three types of auto indentation: None, Basic and Advanced.
|
||
|
||
Auto indentation types
|
||
|
||
None
|
||
|
||
Disables auto indentation completely.
|
||
|
||
Basic
|
||
|
||
Adds the same amount of whitespace on a new line as on the last line.
|
||
|
||
Advanced
|
||
|
||
Does the same as Basic but also indents curly brackets and adds a tabulator
|
||
character (or spaces) on a new line after an opening '{' brace.
|
||
|
||
Construct completion
|
||
|
||
Built-in construct completion is available for C-like languages. By default the
|
||
Tab key is used straight after typing the construct keyword.
|
||
|
||
Example: for<TAB>
|
||
|
||
typed into a C file expands to:
|
||
|
||
for (i = 0; i < ; i++)
|
||
{
|
||
|
||
}
|
||
|
||
Bookmarks
|
||
|
||
Geany provides a handy bookmarking feature that lets you mark one or more lines
|
||
in a document, and return the cursor to them using a key combination.
|
||
|
||
To place a mark on a line, either left-mouse-click in the left margin of the
|
||
editor window, or else use Ctrl-m. Either way, this will produce a small green
|
||
plus symbol in the margin. You can have as many marks in a document as you
|
||
like. Click again (or use Ctrl-m again) to remove the bookmark. To remove all
|
||
the marks in a given document, use "Remove Markers" in the Document menu.
|
||
|
||
To navigate down your document, jumping from one mark to the next, use Ctrl-.
|
||
(control period). To go in the opposite direction on the page, use Ctrl-,
|
||
(control comma). Using the bookmarking feature together with the commands to
|
||
switch from one editor tab to another (Ctrl-PgUp/PgDn and Ctrl-Tab) provides a
|
||
particularly fast way to navigate around multiple files.
|
||
|
||
Send text through definable commands
|
||
|
||
You can define several custom commands in Geany and send the current selection
|
||
to one of these commands. The output of the command will be used to replace the
|
||
current selection. So, it is possible to use text formatting tools with Geany
|
||
in a general way. The selected text will be sent to the standard input of the
|
||
executed command, so the command should be able to read from it and it should
|
||
print all results to its standard output which will be read by Geany. To help
|
||
finding errors in executing the command, the output of the program's standard
|
||
error will be printed on Geany's standard output.
|
||
|
||
To add a custom command, just go to the Set Custom Commands dialog in the
|
||
Format sub menu of the Edit and Popup menu. Then click on Add to get a new text
|
||
entry and type the command. You can also specify some command line options. To
|
||
delete a command, just clear the text entry and press Ok. It will be deleted
|
||
automatically.
|
||
|
||
Context actions
|
||
|
||
You can execute a specified command on the current word near the cursor
|
||
position or an available selection and this word is passed as an argument to
|
||
this command. It can be used for example to open some API documentation in a
|
||
browser window or open any other external program. To do this, there is an menu
|
||
entry in the popup menu of the editor widget and also a keyboard shortcut(see
|
||
the section called “Keybindings”).
|
||
|
||
The command can be specified in the preferences dialog and additionally for
|
||
each filetype (see "context_action_cmd" in the section called “Format”). At
|
||
executing, the filetype specific command is used if available otherwise the
|
||
command specified in the preferences dialog is executed.
|
||
|
||
The passed word can be referred with the wildcard "%s" everywhere in the
|
||
command, before executing it will be replaced by the current word. For example,
|
||
the command to open the PHP API documentation would be:
|
||
|
||
firefox "http://www.php.net/%s"
|
||
|
||
when executing the command, the %s is substituted by the word near the cursor
|
||
position or by the current selection. If the cursor is at the word "echo", a
|
||
browser window will open(assumed your browser is called firefox) and it will
|
||
open the address: http://www.php.net/echo.
|
||
|
||
Search, replace and go to
|
||
|
||
This section describes search-related commands from the Search menu and the
|
||
editor window's popup menu:
|
||
|
||
● Find
|
||
|
||
● Find usage *
|
||
|
||
● Find in files
|
||
|
||
● Replace
|
||
|
||
● Go to tag definition *
|
||
|
||
● Go to tag declaration *
|
||
|
||
● Go to line
|
||
|
||
* These items are available from the editor window's popup menu, or by using a
|
||
keyboard shortcut (see the section called “Keybindings”).
|
||
|
||
Find
|
||
|
||
The Find dialog is used for finding text in one or more open documents.
|
||
|
||
Figure 3.1. Find dialog
|
||
|
||
Find dialog
|
||
|
||
|
||
Matching options
|
||
|
||
The syntax for the Use regular expressions option is shown in Table 3.2,
|
||
“Regular expressions”.
|
||
|
||
The Use escape sequences option will transform any escaped characters into
|
||
their UTF-8 equivalent. For example, \t will be transformed into a tab
|
||
character. Other recognised symbols are: \\, \n, \r, \uXXXX (Unicode
|
||
chararacters).
|
||
|
||
Find all
|
||
|
||
To find all matches, click on the Find All expander. This will reveal several
|
||
options:
|
||
|
||
● In Document
|
||
|
||
● In Session
|
||
|
||
● Mark
|
||
|
||
Find All In Document will show a list of matching lines in the current document
|
||
in the Messages tab of the Message Window. Find All In Session does the same
|
||
for all open documents.
|
||
|
||
Mark will set markers for all matching lines in the current document, if the
|
||
Markers margin is visible. If not, the background colour of matching lines will
|
||
be highlighted. Markers and highlighting can be removed by selecting the Remove
|
||
Markers command from the Document menu.
|
||
|
||
Find usage
|
||
|
||
Find usage searches all open files. It is similar to the Find All In Session
|
||
Find dialog command.
|
||
|
||
If there is a selection, then it is used as the search text; otherwise the
|
||
current word is used. The current word is either taken from the word nearest
|
||
the edit cursor, or the word underneath the popup menu click position when the
|
||
popup menu is used. The search results are shown in the Messages tab of the
|
||
Message Window.
|
||
|
||
Find in files
|
||
|
||
Find in files is a more powerful version of Find usage that searches all files
|
||
in a certain directory using the Grep tool. The Grep tool must be correctly set
|
||
in Preferences to the path of the system's Grep utility. GNU Grep is
|
||
recommended.
|
||
|
||
Figure 3.2. Find in files dialog
|
||
|
||
Find in files dialog
|
||
|
||
|
||
The Extra options field is used to pass any additional arguments to the grep
|
||
tool.
|
||
|
||
Filtering out version control files
|
||
|
||
When using the Recurse in subfolders option with a directory that's under
|
||
version control, you can set the Extra options field to use grep's --exclude
|
||
flag to filter out filenames.
|
||
|
||
SVN Example: --exclude=*.svn-base
|
||
|
||
Note
|
||
|
||
The GNU Grep project added support for excluding directories, using the
|
||
--exclude-dir flag. At the time of writing (April 2007) this is unreleased
|
||
outside of version control. Check your Grep manual to see if your version
|
||
supports it.
|
||
|
||
Example: --exclude-dir=.* --exclude-dir=CVS
|
||
|
||
Replace
|
||
|
||
The Replace dialog is used for replacing text in one or more open documents.
|
||
|
||
Figure 3.3. Replace dialog
|
||
|
||
Replace dialog
|
||
|
||
|
||
The Replace dialog has the same options for matching text as the Find dialog.
|
||
See the section called “Matching options”.
|
||
|
||
The Use regular expressions option applies both to the search string and to the
|
||
replacement text; for the latter back references can be used - see the entry
|
||
for '\n' in Table 3.2, “Regular expressions”.
|
||
|
||
Replace all
|
||
|
||
To replace several matches, click on the Replace All expander. This will reveal
|
||
several options:
|
||
|
||
● In Document
|
||
|
||
● In Session
|
||
|
||
● In Selection
|
||
|
||
Replace All In Document will replace all matching text in the current document.
|
||
Replace All In Session does the same for all open documents. Replace All In
|
||
Selection will replace all matching text in the current selection of the
|
||
current document.
|
||
|
||
Go to tag definition
|
||
|
||
If the current word is the name of a tag definition (like a function body) and
|
||
the file containing the tag definition is open, this command will switch to
|
||
that file and go to the corresponding line number. The current word is either
|
||
taken from the word nearest the edit cursor, or the word underneath the popup
|
||
menu click position when the popup menu is used.
|
||
|
||
Go to tag declaration
|
||
|
||
Like Go to tag definition, but for a forward declaration such as a function
|
||
prototype or extern declaration instead of a function body.
|
||
|
||
Go to line
|
||
|
||
Go to a particular line number in the current file.
|
||
|
||
Regular expressions
|
||
|
||
You can use regular expressions in the Find and Replace dialogs by selecting
|
||
the Use regular expressions check box. The syntax is POSIX-like, as described
|
||
below in Table 3.2, “Regular expressions”.
|
||
|
||
Note
|
||
|
||
Searching backwards with regular expressions is not supported.
|
||
|
||
Table 3.2. Regular expressions
|
||
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ In a regular expression, the following characters are interpreted: │
|
||
├────────┬────────────────────────────────────────────────────────────────────┤
|
||
│ . │ Matches any character. │
|
||
├────────┼────────────────────────────────────────────────────────────────────┤
|
||
│ ( │ This marks the start of a region for tagging a match. │
|
||
├────────┼────────────────────────────────────────────────────────────────────┤
|
||
│ ) │ This marks the end of a tagged region. │
|
||
├────────┼────────────────────────────────────────────────────────────────────┤
|
||
│ │ Where n is 1 through 9 refers to the first through ninth tagged │
|
||
│ \n │ region when replacing. For example, if the search string was Fred │
|
||
│ │ ([1-9])XXX and the replace string was Sam\1YYY, when applied to │
|
||
│ │ Fred2XXX this would generate Sam2YYY. │
|
||
├────────┼────────────────────────────────────────────────────────────────────┤
|
||
│ \< │ This matches the start of a word. │
|
||
├────────┼────────────────────────────────────────────────────────────────────┤
|
||
│ \> │ This matches the end of a word. │
|
||
├────────┼────────────────────────────────────────────────────────────────────┤
|
||
│ │ This allows you to use a character x that would otherwise have a │
|
||
│ \x │ special meaning. For example, \[ would be interpreted as [ and not │
|
||
│ │ as the start of a character set. Use \\ for a literal backslash. │
|
||
├────────┼────────────────────────────────────────────────────────────────────┤
|
||
│ │ This indicates a set of characters, for example, [abc] means any │
|
||
│ [...] │ of the characters a, b or c. You can also use ranges, for example │
|
||
│ │ [a-z] for any lower case character. │
|
||
├────────┼────────────────────────────────────────────────────────────────────┤
|
||
│ [^...] │ The complement of the characters in the set. For example, [^ │
|
||
│ │ A-Za-z] means any character except an alphabetic character. │
|
||
├────────┼────────────────────────────────────────────────────────────────────┤
|
||
│ ^ │ This matches the start of a line (unless used inside a set, see │
|
||
│ │ above). │
|
||
├────────┼────────────────────────────────────────────────────────────────────┤
|
||
│ $ │ This matches the end of a line. │
|
||
├────────┼────────────────────────────────────────────────────────────────────┤
|
||
│ * │ This matches 0 or more times. For example, Sa*m matches Sm, Sam, │
|
||
│ │ Saam, Saaam and so on. │
|
||
├────────┼────────────────────────────────────────────────────────────────────┤
|
||
│ + │ This matches 1 or more times. For example, Sa+m matches Sam, Saam, │
|
||
│ │ Saaam and so on. │
|
||
└────────┴────────────────────────────────────────────────────────────────────┘
|
||
|
||
|
||
Partial POSIX compatibility
|
||
|
||
Note that the POSIX '?' regular expression character for optional matching is
|
||
not supported by the Find and Replace dialogs.
|
||
|
||
Tags
|
||
|
||
Workspace tags
|
||
|
||
Tags for each document are parsed whenever a file is loaded or saved. These are
|
||
shown in the Symbol list in the Sidebar. These tags are also used for
|
||
autocompletion and calltips in other documents open in the current session.
|
||
|
||
The Go to Tag commands can be used with all workspace tags. See the section
|
||
called “Go to tag definition”.
|
||
|
||
Global tags
|
||
|
||
Global tags are used to provide autocompletion and calltips without having to
|
||
open the corresponding source files. This is intended for library APIs, as the
|
||
tags file only has to be updated when you upgrade the library.
|
||
|
||
You can load a custom global tags file in two ways:
|
||
|
||
● Using the Load Tags command in the File menu.
|
||
|
||
● By creating a directory ~/.geany/tags, and moving or symlinking the tags
|
||
files there before starting Geany.
|
||
|
||
You can either download these files or generate your own. They have the format:
|
||
|
||
libraryname.lang_ext.tags
|
||
|
||
lang_ext is one of the extensions set for the filetype associated with the
|
||
tags. See the section called “Filetype extensions” for more information.
|
||
|
||
Default global tags files
|
||
|
||
For some languages, a list of global tags is loaded when the corresponding
|
||
filetype is first used. Currently these are for:
|
||
|
||
● C - GTK+ and GLib
|
||
|
||
● Pascal
|
||
|
||
● PHP
|
||
|
||
● HTML - &symbol; completion, e.g. for ampersand, copyright, etc.
|
||
|
||
● LaTeX
|
||
|
||
Generating a global tags file
|
||
|
||
Filetypes support
|
||
|
||
Currently this is not yet supported for Pascal, PHP and LaTeX filetypes.
|
||
|
||
You can generate your own global tags files by parsing a list of source files.
|
||
The command is:
|
||
|
||
geany -g <Tag File> <File list>
|
||
|
||
● Tag File should be in the format described earlier - see the section called
|
||
“Global tags”.
|
||
|
||
● File list is a list of filenames, each with a full path (unless you are
|
||
generating C/C++ tags and have set the CFLAGS environment variable
|
||
appropriately).
|
||
|
||
Example for the wxD library for the D programming language:
|
||
|
||
geany -g wxd.d.tags /home/username/wxd/wx/*.d
|
||
|
||
Generating C/C++ tag files
|
||
|
||
For C/C++ tag files, gcc and grep are required, so that header files can be
|
||
preprocessed to include any other headers they depend upon.
|
||
|
||
For C/C++ files, the environment variable CFLAGS should be set with appropriate
|
||
-I/path include paths. The following example works with the bash shell,
|
||
generating tags for the GnomeUI library:
|
||
|
||
CFLAGS=`pkg-config --cflags libgnomeui-2.0` geany -g gnomeui.c.tags
|
||
/usr/include/libgnomeui-2.0/gnome.h
|
||
|
||
You can adapt this command to use CFLAGS and header files appropriate for
|
||
whichever libraries you want.
|
||
|
||
Replacing the default C/C++ tags file
|
||
|
||
Geany currently uses a default global tags file global.tags for C and C++,
|
||
commonly installed in /usr/share/geany. This file can be replaced with one
|
||
containing tags parsed from a different set of header files. When Geany is next
|
||
started, your custom tags file will be loaded instead of the default
|
||
global.tags. You should keep a copy of the generated tags file because it will
|
||
get overwritten when upgrading Geany.
|
||
|
||
This is a temporary solution - in later versions this will be unnecessary.
|
||
|
||
Preferences
|
||
|
||
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 sessions. Note that most
|
||
settings here have descriptive popup bubble help -- just hover the mouse over
|
||
the item in question to get help on it.
|
||
|
||
You may also adjust some View settings (under the View menu) that persist
|
||
between Geany sessions. The settings under the Document menu, however, are only
|
||
for the current document and revert to defaults when restarting Geany.
|
||
|
||
Note, in the paragraphs that follow, the text describing a dialog tab (if
|
||
present) comes after the screenshot of that tab.
|
||
|
||
Figure 3.4. General tab in preferences dialog
|
||
|
||
General tab in preferences dialog
|
||
|
||
|
||
The "Context Activation" setting needs to be documented.
|
||
|
||
Figure 3.5. Interface tab in preferences dialog
|
||
|
||
Interface tab in preferences dialog
|
||
|
||
|
||
The open files list and the editor tabs are two different ways to switch
|
||
between documents using the mouse. When you hit the key combination to move
|
||
between tabs, the order is determined by the tab order, not alphabetical as
|
||
shown in the open files list (regardless whether or not editor tabs are
|
||
visible).
|
||
|
||
Figure 3.6. Toolbar tab in preferences dialog
|
||
|
||
Toolbar tab in preferences dialog
|
||
|
||
|
||
Figure 3.7. Files tab in preferences dialog
|
||
|
||
Files tab in preferences dialog
|
||
|
||
|
||
Figure 3.8. Editor tab in preferences dialog
|
||
|
||
Editor tab in preferences dialog
|
||
|
||
|
||
Line wrapping refers to the display of the text in the editor. Currently, there
|
||
is no setting to have Geany automatically insert newlines into your document
|
||
while you type.
|
||
|
||
Figure 3.9. Tools tab in preferences dialog
|
||
|
||
Tools tab in preferences dialog
|
||
|
||
|
||
Figure 3.10. Template tab in preferences dialog
|
||
|
||
Template tab in preferences dialog
|
||
|
||
|
||
Figure 3.11. Keybinding tab in preferences dialog
|
||
|
||
Keybinding tab in preferences dialog
|
||
|
||
|
||
There are some handy commands in here that are not, by default, bound to a key
|
||
combination, and may in fact not even be available as a menu item (for example,
|
||
the very handy "Hide and show all additional widgets").
|
||
|
||
Note
|
||
|
||
For more information see the section called “Keybindings”.
|
||
|
||
Figure 3.12. VTE tab in preferences dialog
|
||
|
||
VTE tab in preferences dialog
|
||
|
||
|
||
Project Management
|
||
|
||
Project Management is optional in Geany. Currently it can be used for:
|
||
|
||
● Running Make from the project's base directory.
|
||
|
||
● Setting a custom Run command specific to the project.
|
||
|
||
As long as a project is open, the Make and Run commands will use the project's
|
||
settings, instead of the defaults. These will be used whichever document is
|
||
currently displayed.
|
||
|
||
The current project's settings are saved when it is closed, or when Geany is
|
||
shutdown. When restarting Geany, the previously opened project file that was in
|
||
use at the end of the last session will be reopened.
|
||
|
||
New Project
|
||
|
||
To create a new project, fill in the Name field. By default this will setup a
|
||
new project file ~/projects/name.geany. Usually it's best to store all your
|
||
project files in the same directory (they are independent of any source
|
||
directory trees).
|
||
|
||
The Base path text field is setup to use ~/projects/name. This can safely be
|
||
set to any existing path - it will not touch the file structure contained in
|
||
it.
|
||
|
||
Project Properties
|
||
|
||
You can set an optional description for the project, but it is not used
|
||
elsewhere by Geany.
|
||
|
||
The Base path field is used as the directory to run the Make command in.
|
||
|
||
The Run command 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.
|
||
|
||
Close Project
|
||
|
||
Project file settings are saved when the project is closed.
|
||
|
||
Open Project
|
||
|
||
The Open command displays a standard file chooser, starting in ~/projects.
|
||
|
||
Build system
|
||
|
||
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 to the current file before
|
||
building.
|
||
|
||
Secondly the output for Compile, Build and Make actions will be captured in the
|
||
Compiler notebook tab of the messages window (assuming you have it visible). If
|
||
there are any warnings or errors with line numbers shown in the Compiler output
|
||
tab, you can double click on them and Geany will switch to the relevant source
|
||
file (if it is open) and mark the line number so the problem can be corrected.
|
||
Geany will also set indicators for warnings or errors with line numbers.
|
||
|
||
Depending on the current file's filetype, the Build menu will contain the
|
||
following items:
|
||
|
||
● Compile
|
||
|
||
● Build
|
||
|
||
● Make all
|
||
|
||
● Make custom target
|
||
|
||
● Make object
|
||
|
||
● Execute
|
||
|
||
● Set Includes and Arguments
|
||
|
||
Compile
|
||
|
||
The Compile command has different uses for different kinds of files.
|
||
|
||
For compilable languages such as C and C++, the Compile command is setup to
|
||
compile the current source file into a binary object file.
|
||
|
||
Java source files will be compiled to class file bytecode. Interpreted
|
||
languages such as Perl, Python, Ruby will compile to bytecode if the language
|
||
supports it, or will run a syntax check, or failing that will run the file in
|
||
its language interpreter.
|
||
|
||
Build
|
||
|
||
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 in one step,
|
||
producing just the executable binary.
|
||
|
||
Interpreted languages do not use the Build command.
|
||
|
||
Make all
|
||
|
||
This effectively runs "make all" in the same directory as the current file.
|
||
|
||
Note
|
||
|
||
For each of the Make commands, The Make tool path must be correctly set in the
|
||
Tools tab of the Preferences dialog.
|
||
|
||
Make custom target
|
||
|
||
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".
|
||
|
||
Make object
|
||
|
||
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.
|
||
|
||
Execute
|
||
|
||
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 - you can use any terminal
|
||
program that runs a Bourne compatible shell and accept the "-e" command line
|
||
argument to start a command.
|
||
|
||
After your program or script has finished executing, you will be prompted to
|
||
press the return key. This allows you to review any text output from the
|
||
program before the terminal window is closed.
|
||
|
||
Stopping running processes
|
||
|
||
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)) to stop the process. The used signal is
|
||
SIGQUIT.
|
||
|
||
Depending on the process you started it might occur that the process cannot be
|
||
stopped. This can happen when the process creates more than one child process.
|
||
Therefore stopping any make actions is not possible because make creates child
|
||
processes and these child processes creates again child process. There might be
|
||
some other programs which cannot be stopped correctly. Xterm is known to work
|
||
properly. If you are using "Terminal" (the terminal program of Xfce), you
|
||
should add the command line option "--disable-server" otherwise the started
|
||
process cannot be stopped. Just add this option in the preferences dialog on
|
||
the Tools tab in the terminal field.
|
||
|
||
Set Includes and Arguments
|
||
|
||
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 flags for the compiler, any
|
||
library names and paths for the linker, and any arguments you want to use when
|
||
running Execute.
|
||
|
||
Note
|
||
|
||
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.
|
||
|
||
These settings are not saved when Geany is shut down. See below for how to set
|
||
permanent arguments.
|
||
|
||
If you need complex settings for your build system, or several different
|
||
settings, then writing a Makefile and using the Make commands is recommended.
|
||
|
||
Indicators
|
||
|
||
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, just click on "Remove all
|
||
indicators" in the document file menu.
|
||
|
||
If you do not like this feature, you can disable it in the preferences dialog.
|
||
|
||
File type configuration settings
|
||
|
||
You can set the commands to run for compiling, building or executing by opening
|
||
the relevant filetypes.* configuration file, and checking the [build_settings]
|
||
section. See the section called “Filetype definition files” for more
|
||
information.
|
||
|
||
Printing support
|
||
|
||
Geany has basic printing support. This means you can print a file by passing
|
||
the filename of the current file to a command which actually prints the file.
|
||
However, the printed document contains no syntax highlighting. You can adjust
|
||
the command to which the filename is passed in the preferences dialog. The
|
||
default command is:
|
||
|
||
% lpr %f
|
||
|
||
%f will be substituted by the filename of the current file. Geany will not show
|
||
errors from the command itself, so you should make sure that it works before
|
||
(e.g. by trying to execute it from the command line).
|
||
|
||
A nicer example, which I prefer is:
|
||
|
||
% a2ps -1 --medium=A4 -o - %f | xfprint4
|
||
|
||
But this depends on a2ps and xfprint4. As a replacement for xfprint4, gtklp or
|
||
similar programs can be used.
|
||
|
||
Note
|
||
|
||
The printing support of Geany will be improved in the future. With GTK 2.10,
|
||
better printing (including syntax highlighting) will be possible.
|
||
|
||
Keybindings
|
||
|
||
Geany supports the default keyboard shortcuts for the Scintilla editing widget.
|
||
For a list of these commands, see Appendix B, Scintilla keyboard commands. The
|
||
Scintilla keyboard shortcuts will be overridden by any custom keybindings with
|
||
the same keyboard shortcut.
|
||
|
||
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 want and it will be saved
|
||
when you press OK. You can define only one key combination for one action.
|
||
|
||
Some of the default key combinations cannot be changed, e.g. menu_new or
|
||
menu_open. These are set by GTK and should be kept, but you can still add other
|
||
key combinations for these actions. For example to execute menu_open by default
|
||
Ctrl-O is set, but you can also define Alt-O, so that the file open dialog is
|
||
shown by pressing either Ctrl-O or Alt-O.
|
||
|
||
The following table lists all customizable keyboard shortcuts.
|
||
|
||
Table 3.3. Keybindings action table
|
||
|
||
┌──────────────┬──────────────────────────────────────────────────────────────┐
|
||
│ Action │ Description │
|
||
├──────────────┴──────────────────────────────────────────────────────────────┤
|
||
│ Menu items │
|
||
├──────────────┬──────────────────────────────────────────────────────────────┤
|
||
│ New │ Creates a new file. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Open │ Opens a file. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Save │ Saves the current file. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Save As │ Saves the current file under a new name. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Save all │ Saves all open files. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Close all │ Closes all open files. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Close │ Closes the current file. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Reload file │ Reloads the current file. All unsaved changes will be lost. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Print │ Prints the current file. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Undo │ Undoes the last action. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Redo │ Redoes the last action. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Select all │ Makes a selection of all text in the current document. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Insert date │ Inserts a customisable date. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Preferences │ Opens preferences dialog. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Find Next │ Finds next result. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Find │ Finds previous result. │
|
||
│ Previous │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Replace │ Opens the Replace dialog. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Find in │ Opens the Find in files dialog. │
|
||
│ files │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Next message │ Jumps to the line with the next message from the last call │
|
||
│ │ to Find usage. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Go to line │ Opens the Go to line dialog. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Show Colour │ Opens the Colour Chooser dialog. │
|
||
│ Chooser │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Fullscreen │ Switches to fullscreen mode. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Toggle │ Toggles the message window (status and compiler messages) on │
|
||
│ Messages │ and off. │
|
||
│ Window │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Toggle │ Shows or hides the sidebar. │
|
||
│ Sidebar │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Toggle all │ Hide and show all additional widgets like the notebook tabs, │
|
||
│ additional │ the toolbar, the messages window and the statusbar. │
|
||
│ widgets │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Zoom In │ Zooms in the text │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Zoom Out │ Zooms out the text │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Replace tabs │ Replaces all tabs with the right amount of spaces. │
|
||
│ by space │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Fold all │ Folds all contractible code blocks. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Unfold all │ Unfolds all contracted code blocks. │
|
||
├──────────────┴──────────────────────────────────────────────────────────────┤
|
||
│ Build options │
|
||
├──────────────┬──────────────────────────────────────────────────────────────┤
|
||
│ Compile │ Compiles the current file. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Build │ Builds (compiles if necessary and links) the current file. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Make all │ Builds the current file with the Make tool. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Make custom │ Builds the current file with the Make tool and a given │
|
||
│ target │ target. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Make object │ Compiles the current file with the Make tool. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Next error │ Jumps to the line with the next error from the last build │
|
||
│ │ process. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Run │ Executes the current file in a terminal emulation. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Run │ │
|
||
│ (alternative │ Executes the current file in a terminal emulation. │
|
||
│ command) │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Build │ Opens the build options dialog. │
|
||
│ options │ │
|
||
├──────────────┴──────────────────────────────────────────────────────────────┤
|
||
│ Miscellaneous │
|
||
├──────────────┬──────────────────────────────────────────────────────────────┤
|
||
│ Reload │ Reloads the tag/symbol list. │
|
||
│ symbol list │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Switch to │ Switches to editor widget. │
|
||
│ Editor │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Switch to │ Switches to scribble widget. │
|
||
│ Scribble │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Switch to │ Switches to VTE widget. │
|
||
│ VTE │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Switch to │ Switches to the search bar in the toolbar (if visible). │
|
||
│ Search Bar │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Switch to │ │
|
||
│ left │ Switches to the previous open document. │
|
||
│ document │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Switch to │ │
|
||
│ right │ Switches to the next open document. │
|
||
│ document │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Switch to │ │
|
||
│ last used │ Switches to the previously selected open document. │
|
||
│ document │ │
|
||
├──────────────┴──────────────────────────────────────────────────────────────┤
|
||
│ Editing operations │
|
||
├──────────────┬──────────────────────────────────────────────────────────────┤
|
||
│ Convert │ │
|
||
│ selection to │ Converts the current selection to lower case. │
|
||
│ lower case │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Convert │ │
|
||
│ selection to │ Converts the current selection to upper case. │
|
||
│ upper case │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Duplicate │ │
|
||
│ line or │ Duplicates the current line or selection. │
|
||
│ selection │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Comment line │ Comments current line or selection. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Uncomment │ Uncomments current line or selection. │
|
||
│ line │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Toggle line │ Comments a line if it is not commented or removes a comment │
|
||
│ commentation │ if the line is commented. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Increase │ Indents the current line or selection by one tabulator. │
|
||
│ indent │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Decrease │ Removes one tabulator from the indentation of the current │
|
||
│ indent │ line or selection. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Goto │ If the cursor is ahead or behind a brace, then it is moved │
|
||
│ matching │ to the brace which belongs to the current one. If this │
|
||
│ brace │ keyboard shortcut is pressed again, the cursor is moved back │
|
||
│ │ to the first brace. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Toggle │ Set a marker on the current line, or clear the marker if │
|
||
│ marker │ there already is one. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Goto next │ Goto the next marker in the current document. │
|
||
│ marker │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Goto │ │
|
||
│ previous │ Goto the previous marker in the current document. │
|
||
│ marker │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Complete │ Shows auto completion list. │
|
||
│ word │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Show calltip │ Shows call tips for the current function or method. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Show macro │ Shows a list of available macros and variables in the │
|
||
│ list │ workspace. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Complete │ If you type a construct like if or for and press this key, │
|
||
│ construct │ it will be completed with a matching template. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ │ If you type a construct like if or for and press this key, │
|
||
│ │ it will not be completed, and a space or tab will be │
|
||
│ Suppress │ inserted, depending on what the construct completion │
|
||
│ construct │ keybinding is set to. For example, if you have set the │
|
||
│ completion │ construct completion keybinding to space, then setting this │
|
||
│ │ to Shift+space will prevent construct completion and insert │
|
||
│ │ a space. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Select │ Selects the current word under the cursor. │
|
||
│ current word │ │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Insert │ Inserts a tabulator character when spaces should be used for │
|
||
│ alternative │ indentation and inserts space characters of the amount of a │
|
||
│ whitespace │ tabulator width when tabulators should be used for │
|
||
│ │ indentation. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ │ Finds all occurrences of the current word (near the keyboard │
|
||
│ Find Usage │ cursor) or selection and displays them in the messages │
|
||
│ │ window. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ │ Jump to the definition of the current word (near the │
|
||
│ Go to tag │ keyboard cursor). If the definition cannot be found (e.g. │
|
||
│ definition │ the relevant file is not open) Geany will beep and do │
|
||
│ │ nothing. See the section called “Go to tag definition”. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ │ Jump to the declaration of the current word (near the │
|
||
│ Go to tag │ keyboard cursor). If the declaration cannot be found (e.g. │
|
||
│ declaration │ the relevant file is not open) Geany will beep and do │
|
||
│ │ nothing. See the section called “Go to tag definition”. │
|
||
├──────────────┼──────────────────────────────────────────────────────────────┤
|
||
│ Context │ Executes a command and passes the current word (near the │
|
||
│ Action │ cursor postion) or selection as an argument. See the section │
|
||
│ │ called “Context actions”. │
|
||
└──────────────┴──────────────────────────────────────────────────────────────┘
|
||
|
||
|
||
Chapter 4. Configuration files
|
||
|
||
Table of Contents
|
||
|
||
Filetype definition files
|
||
|
||
Format
|
||
Special file filetypes.common
|
||
|
||
Filetype extensions
|
||
Templates
|
||
|
||
Template metadata
|
||
Filetype templates
|
||
Customizing templates
|
||
|
||
Filetype definition files
|
||
|
||
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 word delimiter characters as well
|
||
as compiler and linker settings.
|
||
|
||
The system-wide configuration files can be found in $prefix/share/geany and are
|
||
called filetypes.$ext, where $prefix is the path where Geany is installed
|
||
(commonly /usr/local) and $ext is the name of the filetype. For every filetype
|
||
there is a corresponding definition file. There is one exception:
|
||
filetypes.common - this file is for general settings, which are not specific to
|
||
a certain filetype. It is not recommended to edit the system-wide files,
|
||
because they will be overridden when Geany is updated.
|
||
|
||
To change the settings, copy a file from $prefix/share/geany to the
|
||
subdirectory filedefs in your configuration directory (usually ~/.geany/).
|
||
|
||
For example:
|
||
|
||
% cp /usr/local/share/geany/filetypes.c /home/username/.geany/filedefs/
|
||
|
||
Then you can edit the file and the changes are also available after an update
|
||
of Geany because they reside in your configuration directory. Alternatively,
|
||
you can create a file ~/.geany/filedefs/filetypes.X and add only these settings
|
||
you want to change. All missing settings will be read from the corresponding
|
||
global definition file in $prefix/share/geany.
|
||
|
||
Format
|
||
|
||
[styling] Section
|
||
|
||
In this section the colours for syntax highlighting are defined. The format is
|
||
always: key=forground_colour;background_colour;bold;italic
|
||
|
||
Colours have to be specified as RGB hex values prefixed by 0x. For example red
|
||
is 0xff0000, blue is 0x0000ff. The values are case-insensitive, but it is a
|
||
good idea to use small letters. Bold and italic are flags and should only be
|
||
"true" or "false". If their value is something other than "true" or "false",
|
||
"false" is assumed.
|
||
|
||
[keywords] Section
|
||
|
||
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 an existing list.
|
||
|
||
Important
|
||
|
||
The keywords list must be in one line without line ending characters.
|
||
|
||
[settings] Section
|
||
|
||
Table 4.1. General settings
|
||
|
||
┌────────────────────┬───────────────────────────────────┬────────────────────┐
|
||
│ Key │ Description │ Example │
|
||
├────────────────────┼───────────────────────────────────┼────────────────────┤
|
||
│ │ These characters define word │ │
|
||
│ wordchars │ boundaries when making selections │ (look at system │
|
||
│ │ and searching using word matching │ filetypes.* files) │
|
||
│ │ options. │ │
|
||
├────────────────────┼───────────────────────────────────┼────────────────────┤
|
||
│ │ A character or string which is │ │
|
||
│ │ used to comment code. If you want │ │
|
||
│ comment_open │ to use multiline comments, also │ comment_open=/* │
|
||
│ │ set comment_close, otherwise │ │
|
||
│ │ leave it empty. │ │
|
||
├────────────────────┼───────────────────────────────────┼────────────────────┤
|
||
│ │ If multiline comments are used, │ │
|
||
│ comment_close │ this is the character or string │ comment_close=*/ │
|
||
│ │ to close the comment. │ │
|
||
├────────────────────┼───────────────────────────────────┼────────────────────┤
|
||
│ │ Set this to false if a comment │ │
|
||
│ │ character or string should start │ │
|
||
│ │ at column 0 of a line. If set to │ │
|
||
│ │ true it uses any indentation of │ │
|
||
│ │ the line. │ │
|
||
│ │ │ │
|
||
│ │ Example 4.1. Comment indentation │ │
|
||
│ │ │ │
|
||
│ │ comment_use_indent=true would │ │
|
||
│ │ generate this if a line is │ │
|
||
│ │ commented (e.g. with Ctrl-D) │ │
|
||
│ │ │ │
|
||
│ comment_use_indent │ #command_example(); │ comment_use_indent │
|
||
│ │ │ =true │
|
||
│ │ comment_use_indent=false would │ │
|
||
│ │ generate this if a line is │ │
|
||
│ │ commented (e.g. with Ctrl-D) │ │
|
||
│ │ │ │
|
||
│ │ # command_example(); │ │
|
||
│ │ │ │
|
||
│ │ │ │
|
||
│ │ Note │ │
|
||
│ │ │ │
|
||
│ │ This setting only works for │ │
|
||
│ │ single line comments (like '//', │ │
|
||
│ │ '#' or ';'). │ │
|
||
├────────────────────┼───────────────────────────────────┼────────────────────┤
|
||
│ │ A command which can be executed │ │
|
||
│ │ on a certain word or the current │ │
|
||
│ │ selection. Example usage: Open │ │
|
||
│ │ the API documentation for the │ │
|
||
│ │ current function call at the │ │
|
||
│ │ cursor position. The command can │ │
|
||
│ │ be set for every filetype or if │ │
|
||
│ │ not set, a global command will be │ │
|
||
│ │ used. The command itself can be │ │
|
||
│ │ specified without the full path, │ │
|
||
│ │ then it is searched in $PATH. But │ context_action_cmd │
|
||
│ context_action_cmd │ for security reasons, it is │ =devhelp -s "%s" │
|
||
│ │ recommended to specify the full │ │
|
||
│ │ path to the command. The wildcard │ │
|
||
│ │ %s will be replaced by the │ │
|
||
│ │ current word at the cursor │ │
|
||
│ │ position or by the current │ │
|
||
│ │ selection. │ │
|
||
│ │ │ │
|
||
│ │ Hint: for PHP files the following │ │
|
||
│ │ could be quite useful: │ │
|
||
│ │ context_action_cmd=firefox "http: │ │
|
||
│ │ //www.php.net/%s" │ │
|
||
└────────────────────┴───────────────────────────────────┴────────────────────┘
|
||
|
||
|
||
[build_settings] Section
|
||
|
||
Table 4.2. Build settings
|
||
|
||
┌──────────┬───────────────────────────────────────────────────────┬──────────┐
|
||
│ Key │ Description │ Example │
|
||
├──────────┼───────────────────────────────────────────────────────┼──────────┤
|
||
│ │ This item specifies the command to compile source │ │
|
||
│ │ code files. But it is also possible to use it with │ │
|
||
│ │ interpreted languages like Perl or Python. With these │ │
|
||
│ │ filetypes you can use this option as a kind of syntax │ │
|
||
│ │ parser, which sends output to the compiler message │ │
|
||
│ │ window. │ compiler │
|
||
│ compiler │ │ =gcc │
|
||
│ │ You should quote the filename to also support │ -Wall -c │
|
||
│ │ filenames with spaces. The following wildcards for │ "%f" │
|
||
│ │ filenames are available: │ │
|
||
│ │ │ │
|
||
│ │ ● %f - complete filename without path │ │
|
||
│ │ │ │
|
||
│ │ ● %e - filename without path and without extension │ │
|
||
├──────────┼───────────────────────────────────────────────────────┼──────────┤
|
||
│ │ This item specifies the command to link the file. If │ │
|
||
│ │ the file is not already compiled, it will be compiled │ linker= │
|
||
│ linker │ while linking. The -o option is automatically added │ gcc │
|
||
│ │ by Geany. This item works well with GNU gcc, but may │ -Wall │
|
||
│ │ be problematic with other compilers (esp. with the │ "%f" │
|
||
│ │ linker). │ │
|
||
├──────────┼───────────────────────────────────────────────────────┼──────────┤
|
||
│ │ Use this item to execute your file. It has to have │ │
|
||
│ │ been built already. Use the %e wildcard to have only │ run_cmd= │
|
||
│ run_cmd │ the name of the executable (i.e. without extension) │ "./%e" │
|
||
│ │ or use the %f wildcard if you need the complete │ │
|
||
│ │ filename, e.g. for shell scripts. │ │
|
||
└──────────┴───────────────────────────────────────────────────────┴──────────┘
|
||
|
||
|
||
Special file filetypes.common
|
||
|
||
There is a special filetype definition file called filetypes.common. This file
|
||
defines some general non-filetype-specific settings.
|
||
|
||
Table 4.3. General settings
|
||
|
||
┌────────────────────┬───────────────────────────────────┬────────────────────┐
|
||
│ Key │ Description │ Example │
|
||
├────────────────────┼───────────────────────────────────┼────────────────────┤
|
||
│ │ This is the default style. It is │ default=0x000000; │
|
||
│ default │ used for styling files without a │ 0xffffff;false; │
|
||
│ │ filetype set. │ false │
|
||
├────────────────────┼───────────────────────────────────┼────────────────────┤
|
||
│ │ The style for colouring selected │ │
|
||
│ │ text. The format is: │ │
|
||
│ │ │ │
|
||
│ │ ● Foreground colour │ │
|
||
│ │ │ │
|
||
│ │ ● Background colour │ │
|
||
│ │ │ │
|
||
│ │ ● Use foreground colour │ selection= │
|
||
│ selection │ │ 0xc0c0c0;0x00007F; │
|
||
│ │ ● Use background colour │ true;true │
|
||
│ │ │ │
|
||
│ │ The colours are only set if the │ │
|
||
│ │ 3rd or 4th argument is true. When │ │
|
||
│ │ the colours are not overridden, │ │
|
||
│ │ the default is a dark grey │ │
|
||
│ │ background with syntax │ │
|
||
│ │ highlighted foreground text. │ │
|
||
├────────────────────┼───────────────────────────────────┼────────────────────┤
|
||
│ │ The style for brace highlighting │ brace_good= │
|
||
│ brace_good │ when a matching brace was found. │ 0xff0000;0xFFFFFF; │
|
||
│ │ │ true;false │
|
||
├────────────────────┼───────────────────────────────────┼────────────────────┤
|
||
│ │ The style for brace highlighting │ brace_bad= │
|
||
│ brace_bad │ when no matching brace was found. │ 0x0000ff;0xFFFFFF; │
|
||
│ │ │ true;false │
|
||
├────────────────────┼───────────────────────────────────┼────────────────────┤
|
||
│ │ The style for colouring the caret │ caret=0x000000; │
|
||
│ caret │ (the blinking cursor). Only the │ 0x0;false;false │
|
||
│ │ first argument is interpreted. │ │
|
||
├────────────────────┼───────────────────────────────────┼────────────────────┤
|
||
│ │ The width for the caret(the │ │
|
||
│ │ blinking cursor). Only the first │ │
|
||
│ │ argument is interpreted. The │ caret=1;0;false; │
|
||
│ caret_width │ width is specified in pixels with │ false │
|
||
│ │ a maximum of three pixel. Use the │ │
|
||
│ │ width 0 to make the caret │ │
|
||
│ │ invisible. │ │
|
||
├────────────────────┼───────────────────────────────────┼────────────────────┤
|
||
│ │ The style for colouring the │ │
|
||
│ │ background of the current line. │ │
|
||
│ │ Only the second and third │ │
|
||
│ │ arguments are interpreted. The │ current_line=0x0; │
|
||
│ current_line │ second argument is the background │ 0xe5e5e5;true; │
|
||
│ │ colour. Use the third argument to │ false │
|
||
│ │ enable or disable background │ │
|
||
│ │ highlighting for the current line │ │
|
||
│ │ (has to be true/false). │ │
|
||
├────────────────────┼───────────────────────────────────┼────────────────────┤
|
||
│ │ The style for colouring the │ indent_guide= │
|
||
│ indent_guide │ indentation guides. Only the │ 0xc0c0c0;0xffffff; │
|
||
│ │ first and second arguments are │ false;false │
|
||
│ │ interpreted. │ │
|
||
├────────────────────┼───────────────────────────────────┼────────────────────┤
|
||
│ │ The style for colouring the white │ │
|
||
│ │ space if it is shown. The first │ │
|
||
│ │ both arguments define the │ │
|
||
│ │ foreground and background │ │
|
||
│ │ colours, the third argument sets │ white_space= │
|
||
│ white_space │ whether to use the defined │ 0xc0c0c0;0xffffff; │
|
||
│ │ foreground colour or to use the │ true;true │
|
||
│ │ colour defined by each filetype │ │
|
||
│ │ for the white space. The fourth │ │
|
||
│ │ argument defines whether to use │ │
|
||
│ │ the background colour. │ │
|
||
├────────────────────┼───────────────────────────────────┼────────────────────┤
|
||
│ │ The style of folding icons. Only │ │
|
||
│ │ first and second arguments are │ │
|
||
│ │ used. │ │
|
||
│ │ │ │
|
||
│ │ Valid values for the first │ │
|
||
│ │ argument are: │ │
|
||
│ │ │ │
|
||
│ │ ● 1 - for boxes │ folding_style=1;1; │
|
||
│ folding_style │ │ false;false │
|
||
│ │ ● 2 - for circles │ │
|
||
│ │ │ │
|
||
│ │ Valid values for the second │ │
|
||
│ │ argument are: │ │
|
||
│ │ │ │
|
||
│ │ ● 1 - for straight lines │ │
|
||
│ │ │ │
|
||
│ │ ● 2 - for curved lines │ │
|
||
├────────────────────┼───────────────────────────────────┼────────────────────┤
|
||
│ │ Draw a thin horizontal line at │ │
|
||
│ │ the line where text is folded. │ │
|
||
│ │ Only first argument is used. │ │
|
||
│ │ │ │
|
||
│ │ Valid values for the first │ │
|
||
│ │ argument are: │ │
|
||
│ │ │ folding_horiz_line │
|
||
│ folding_horiz_line │ ● 0 - disable, do not draw a │ =0;0;false;false │
|
||
│ │ line │ │
|
||
│ │ │ │
|
||
│ │ ● 1 - draw the line above │ │
|
||
│ │ folded text │ │
|
||
│ │ │ │
|
||
│ │ ● 2 - draw the line below │ │
|
||
│ │ folded text │ │
|
||
├────────────────────┼───────────────────────────────────┼────────────────────┤
|
||
│ │ Whether to invert all defined │ │
|
||
│ │ colours. This is useful if you │ │
|
||
│ │ like a dark background colour │ │
|
||
│ │ (e.g. black) and do not want to │ │
|
||
│ │ change every single line. Please │ │
|
||
│ invert_all │ note, at time of writing this was │ invert_all=0;0; │
|
||
│ │ only tested with the C syntax │ false;false │
|
||
│ │ highlighting. │ │
|
||
│ │ │ │
|
||
│ │ Only first argument is │ │
|
||
│ │ interpreted. Set it to 1 to │ │
|
||
│ │ invert all colours. │ │
|
||
└────────────────────┴───────────────────────────────────┴────────────────────┘
|
||
|
||
|
||
Filetype extensions
|
||
|
||
You can override the default extensions that Geany uses for each filetype using
|
||
the filetype_extensions.conf file.
|
||
|
||
To override the system-wide configuration file, copy it from $prefix/share/
|
||
geany to your configuration directory, usually ~/.geany/. $prefix is the path
|
||
where Geany is installed (commonly /usr/local).
|
||
|
||
For example:
|
||
|
||
% cp /usr/local/share/geany/filetype_extensions.conf /home/username/.geany/
|
||
|
||
Then edit it and remove all the lines for filetype extensions that you do not
|
||
want to override. The remaining lines can be edited after the = sign, using a
|
||
semi-colon separated list of patterns which should be matched for that
|
||
filetype.
|
||
|
||
For example, to set the filetype extensions for Make, the /home/username/.geany
|
||
/filetype_extensions.conf file should look like:
|
||
|
||
|
||
[Extensions]
|
||
Make=Makefile*;*.mk;Buildfile;
|
||
|
||
Templates
|
||
|
||
Geany supports the following templates:
|
||
|
||
● ChangeLog entry
|
||
|
||
● File header
|
||
|
||
● Function description
|
||
|
||
● Short GPL notice
|
||
|
||
● Short BSD notice
|
||
|
||
● Filetype template
|
||
|
||
To use these templates, just open the Edit menu or open the popup menu by
|
||
right-clicking in the editor widget, and choose "Insert Comments" and insert
|
||
templates as you want.
|
||
|
||
Some templates (like File header or ChangeLog entry) will always be inserted at
|
||
the top of the file.
|
||
|
||
To insert a function description, the cursor must be inside of the function, so
|
||
that the function name can be determined automatically. The description will be
|
||
positioned correctly one line above the function, just check it out. If the
|
||
cursor is not inside of a function or the function name cannot be determined,
|
||
you cannot insert a function description.
|
||
|
||
Template metadata
|
||
|
||
Metadata can be used with all templates, but by default user set metadata is
|
||
only used for the ChangeLog and File header templates.
|
||
|
||
In the configuration dialog you can find a tab "Templates" (see Figure 3.10,
|
||
“Template tab in preferences dialog”). You can define the default values which
|
||
will be inserted in the templates. You should restart Geany after making
|
||
changes, because they are only read at startup.
|
||
|
||
Filetype templates
|
||
|
||
Filetype templates are templates used as the basis of a new file. To use them,
|
||
choose the New (with Template) menu item from the File menu.
|
||
|
||
By default, templates are created for some filetypes. Other filetype templates
|
||
can be added by creating the appropriate template file and restarting Geany.
|
||
You can also edit the default filetype templates.
|
||
|
||
Filetype template files are read from the ~/.geany/templates directory, and are
|
||
named 'filetype.' followed by the filetype name, e.g. filetype.python,
|
||
filetype.sh. If you are unsure about the filetype name extensions, they are the
|
||
same as the filetype configuration file extensions, commonly installed in /usr/
|
||
share/geany, with the prefix 'filetypes.'.
|
||
|
||
The file's contents are just the text to place in the document, except for the
|
||
optional {fileheader} template wildcard. This can be placed anywhere, but is
|
||
usually on the first line of the file, followed by a blank line.
|
||
|
||
There is also a template file template.none which is used when the New command
|
||
is used without a filetype. This is empty by default.
|
||
|
||
Customizing templates
|
||
|
||
Each template can be customized to your needs. The templates are stored in the
|
||
~/.geany/templates/ directory (see the section called “Command line options”
|
||
for further information about the configuration 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.
|
||
|
||
Template wildcards
|
||
|
||
All wildcards must be enclosed by "{" and "}", e.g. {date}.
|
||
|
||
Table 4.4. Template wildcards
|
||
|
||
┌──────────────┬──────────────────────────────────────┬───────────────────────┐
|
||
│ Wildcard │ Description │ Available in │
|
||
│ │ │ following templates │
|
||
├──────────────┼──────────────────────────────────────┼───────────────────────┤
|
||
│ │ │ filetypes, file │
|
||
│ │ │ header, function │
|
||
│ developer │ The name of the developer. │ description, │
|
||
│ │ │ ChangeLog entry, bsd, │
|
||
│ │ │ gpl │
|
||
├──────────────┼──────────────────────────────────────┼───────────────────────┤
|
||
│ │ │ filetypes, file │
|
||
│ │ The developer's initials, e.g. "ET" │ header, function │
|
||
│ initial │ for Enrico Tröger or "JFD" for John │ description, │
|
||
│ │ Foobar Doe. │ ChangeLog entry, bsd, │
|
||
│ │ │ gpl │
|
||
├──────────────┼──────────────────────────────────────┼───────────────────────┤
|
||
│ │ │ file header, function │
|
||
│ mail │ The email address of the developer. │ description, │
|
||
│ │ │ ChangeLog entry, bsd, │
|
||
│ │ │ gpl │
|
||
├──────────────┼──────────────────────────────────────┼───────────────────────┤
|
||
│ │ │ filetypes, file │
|
||
│ │ The company the developer is working │ header, function │
|
||
│ company │ for. │ description, │
|
||
│ │ │ ChangeLog entry, bsd, │
|
||
│ │ │ gpl │
|
||
├──────────────┼──────────────────────────────────────┼───────────────────────┤
|
||
│ │ │ filetypes, file │
|
||
│ │ │ header, function │
|
||
│ year │ The current year in the format: YYYY │ description, │
|
||
│ │ │ ChangeLog entry, bsd, │
|
||
│ │ │ gpl │
|
||
├──────────────┼──────────────────────────────────────┼───────────────────────┤
|
||
│ │ │ filetypes, file │
|
||
│ │ │ header, function │
|
||
│ version │ The initial version of a new file. │ description, │
|
||
│ │ │ ChangeLog entry, bsd, │
|
||
│ │ │ gpl │
|
||
├──────────────┼──────────────────────────────────────┼───────────────────────┤
|
||
│ │ │ filetypes, file │
|
||
│ │ The current date in the format: │ header, function │
|
||
│ date │ YYYY-MM-DD │ description, │
|
||
│ │ │ ChangeLog entry, bsd, │
|
||
│ │ │ gpl │
|
||
├──────────────┼──────────────────────────────────────┼───────────────────────┤
|
||
│ │ │ filetypes, file │
|
||
│ │ The string "untitled" (this will be │ header, function │
|
||
│ untitled │ translated to your locale), used in │ description, │
|
||
│ │ filetype templates │ ChangeLog entry, bsd, │
|
||
│ │ │ gpl │
|
||
├──────────────┼──────────────────────────────────────┼───────────────────────┤
|
||
│ │ │ filetypes, file │
|
||
│ │ The actual Geany version, e.g. │ header, function │
|
||
│ geanyversion │ "Geany 0.11" │ description, │
|
||
│ │ │ ChangeLog entry, bsd, │
|
||
│ │ │ gpl │
|
||
├──────────────┼──────────────────────────────────────┼───────────────────────┤
|
||
│ datetime │ The current date and time in the │ file header, function │
|
||
│ │ format: DD.MM.YYYY HH:mm:ss ZZZZ │ description │
|
||
├──────────────┼──────────────────────────────────────┼───────────────────────┤
|
||
│ │ The filename of the current file. │ │
|
||
│ filename │ Only available for the file header │ file header │
|
||
│ │ template. │ │
|
||
├──────────────┼──────────────────────────────────────┼───────────────────────┤
|
||
│ gpl │ This wildcard inserts a short GPL │ file header │
|
||
│ │ notice. │ │
|
||
├──────────────┼──────────────────────────────────────┼───────────────────────┤
|
||
│ bsd │ This wildcard inserts a short BSD │ file header │
|
||
│ │ licence notice. │ │
|
||
├──────────────┼──────────────────────────────────────┼───────────────────────┤
|
||
│ │ The function name of the function at │ │
|
||
│ functionname │ the cursor position. This wildcard │ function description │
|
||
│ │ will only be replaced in the │ │
|
||
│ │ function description template. │ │
|
||
├──────────────┼──────────────────────────────────────┼───────────────────────┤
|
||
│ │ The file header template. This │ │
|
||
│ fileheader │ wildcard will only be replaced in │ filetypes │
|
||
│ │ filetype templates. │ │
|
||
└──────────────┴──────────────────────────────────────┴───────────────────────┘
|
||
|
||
|
||
If you need any other wildcards or a special date/time format, please email the
|
||
author <enrico.troeger@uvena.de>.
|
||
|
||
Appendix A. Contributing to this document
|
||
|
||
This document is written in Docbook XML. The source file for it is located in
|
||
the subdirectory "doc" of the source directory of Geany. If you intend on
|
||
making changes, you should grab the source right from SVN to make sure you have
|
||
got the newest version. After editing that file, to build the docs and see how
|
||
your changes look, run "make doc" in the subdirectory "doc" of the source
|
||
directory of Geany to build HTML pages and a text file. Your updated HTML docs
|
||
will end up in the ./html directory. To generate a PDF file, use the command
|
||
"make pdf" which should generate a file called geany-0.11.pdf.
|
||
|
||
After you are happy with your changes, create a patch:
|
||
|
||
% svn diff geany.docbook > whatever.patch
|
||
|
||
and then submit that file to the mailing list for review.
|
||
|
||
Note, you will need the docbook-xml and xmlto software packages installed to
|
||
build the docs.
|
||
|
||
Scintilla keyboard commands
|
||
|
||
Copyright © 1998, 2006 Neil Hodgson <neilh@scintilla.org>
|
||
|
||
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 scintilla/License.txt
|
||
included with the source code of this program and in the appendix of this
|
||
document. See Appendix E, License for Scintilla and SciTE.
|
||
|
||
20 June 2006
|
||
|
||
Table of Contents
|
||
|
||
Keyboard commands
|
||
|
||
Keyboard commands
|
||
|
||
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 Shift key, and the
|
||
rectangular selection when holding the Shift and Alt keys. Some keys may not be
|
||
available with some national keyboards or because they are taken by the system
|
||
such as by a window manager on GTK+. Keyboard equivalents of menu commands are
|
||
listed in the menus. Some less common commands with no menu equivalent are:
|
||
|
||
Table B.1. Scintilla keyboard commands
|
||
|
||
┌──────────────────────────────────────────────┬──────────────────────┐
|
||
│ Action │ Shortcut key │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Magnify text size. │ Ctrl+Keypad+ │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Reduce text size. │ Ctrl+Keypad- │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Restore text size to normal. │ Ctrl+Keypad/ │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Indent block. │ Tab │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Dedent block. │ Shift+Tab │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Delete to start of word. │ Ctrl+BackSpace │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Delete to end of word. │ Ctrl+Delete │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Delete to start of line. │ Ctrl+Shift+BackSpace │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Delete to end of line. │ Ctrl+Shift+Delete │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Go to start of document. │ Ctrl+Home │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Extend selection to start of document. │ Ctrl+Shift+Home │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Go to start of display line. │ Alt+Home │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Extend selection to start of display line. │ Alt+Shift+Home │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Go to end of document. │ Ctrl+End │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Extend selection to end of document. │ Ctrl+Shift+End │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Go to end of display line. │ Alt+End │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Extend selection to end of display line. │ Alt+Shift+End │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Scroll up. │ Ctrl+Up │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Scroll down. │ Ctrl+Down │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Line cut. │ Ctrl+L │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Line copy. │ Ctrl+Shift+T │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Line delete. │ Ctrl+Shift+L │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Line transpose with previous. │ Ctrl+T │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Selection duplicate. │ Ctrl+D │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Previous paragraph. Shift extends selection. │ Ctrl+[ │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Next paragraph. Shift extends selection. │ Ctrl+] │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Previous word. Shift extends selection. │ Ctrl+Left │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Next word. Shift extends selection. │ Ctrl+Right │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Previous word part. Shift extends selection │ Ctrl+/ │
|
||
├──────────────────────────────────────────────┼──────────────────────┤
|
||
│ Next word part. Shift extends selection. │ Ctrl+\ │
|
||
└──────────────────────────────────────────────┴──────────────────────┘
|
||
|
||
|
||
Appendix C. Compile time options
|
||
|
||
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 “#define GEANY_*”. Any definitions which are not listed here should not be
|
||
changed.
|
||
|
||
Note
|
||
|
||
Most users should not need to change these options.
|
||
|
||
Table C.1. Compile time options
|
||
|
||
┌────────────────────────────────┬──────────────────────────────┬─────────────┐
|
||
│ Option │ Description │ Default │
|
||
├────────────────────────────────┼──────────────────────────────┼─────────────┤
|
||
│ │ These characters define word │ │
|
||
│ GEANY_WORDCHARS │ boundaries when making │ (look at │
|
||
│ │ selections and searching │ sourcecode) │
|
||
│ │ using word matching options. │ │
|
||
├────────────────────────────────┼──────────────────────────────┼─────────────┤
|
||
│ │ How many auto completion │ │
|
||
│ GEANY_MAX_AUTOCOMPLETE_WORDS │ suggestions should Geany │ 30 │
|
||
│ │ provide. │ │
|
||
├────────────────────────────────┼──────────────────────────────┼─────────────┤
|
||
│ │ How many suggestions should │ │
|
||
│ GEANY_MAX_AUTOCOMPLETE_HEIGHT │ be visible in the auto │ 10 │
|
||
│ │ completion list. │ │
|
||
├────────────────────────────────┼──────────────────────────────┼─────────────┤
|
||
│ │ The default filename │ │
|
||
│ │ extension for Geany project │ │
|
||
│ GEANY_PROJECT_EXT │ files. It is used when │ geany │
|
||
│ │ creating new projects and as │ │
|
||
│ │ filter mask for the project │ │
|
||
│ │ open dialog. │ │
|
||
├────────────────────────────────┼──────────────────────────────┼─────────────┤
|
||
│ │ A string used as the default │ │
|
||
│ │ name for new files. Be aware │ │
|
||
│ GEANY_STRING_UNTITLED │ that the string can be │ untitled │
|
||
│ │ translated, so change it │ │
|
||
│ │ only if you know what you │ │
|
||
│ │ are doing. │ │
|
||
├────────────────────────────────┼──────────────────────────────┼─────────────┤
|
||
│ │ Time in seconds between │ │
|
||
│ GEANY_CHECK_FILE_DELAY │ checking a file for external │ 30 │
|
||
│ │ changes. │ │
|
||
├────────────────────────────────┼──────────────────────────────┼─────────────┤
|
||
│ GEANY_WINDOW_MINIMAL_WIDTH │ The minimal width of the │ 620 │
|
||
│ │ main window. │ │
|
||
├────────────────────────────────┼──────────────────────────────┼─────────────┤
|
||
│ GEANY_WINDOW_MINIMAL_HEIGHT │ The minimal height of the │ 440 │
|
||
│ │ main window. │ │
|
||
├────────────────────────────────┼──────────────────────────────┼─────────────┤
|
||
│ │ The default width of the │ │
|
||
│ GEANY_WINDOW_DEFAULT_WIDTH │ main window at the first │ 900 │
|
||
│ │ start. │ │
|
||
├────────────────────────────────┼──────────────────────────────┼─────────────┤
|
||
│ │ The default height of the │ │
|
||
│ GEANY_WINDOW_DEFAULT_HEIGHT │ main window at the first │ 600 │
|
||
│ │ start. │ │
|
||
├────────────────────────────────┴──────────────────────────────┴─────────────┤
|
||
│ Default values │
|
||
├────────────────────────────────┬──────────────────────────────┬─────────────┤
|
||
│ GEANY_DEFAULT_TOOLS_MAKE │ The make tool. This can also │ "make" │
|
||
│ │ include a path. │ │
|
||
├────────────────────────────────┼──────────────────────────────┼─────────────┤
|
||
│ │ A terminal emulator. It has │ │
|
||
│ GEANY_DEFAULT_TOOLS_TERMINAL │ to accept the command line │ "xterm" │
|
||
│ │ option "-e". This can also │ │
|
||
│ │ include a path. │ │
|
||
├────────────────────────────────┼──────────────────────────────┼─────────────┤
|
||
│ GEANY_DEFAULT_TOOLS_BROWSER │ A web browser. This can also │ "mozilla" │
|
||
│ │ include a path. │ │
|
||
├────────────────────────────────┼──────────────────────────────┼─────────────┤
|
||
│ │ A printing tool. It should │ │
|
||
│ │ be able to accept and │ │
|
||
│ GEANY_DEFAULT_TOOLS_PRINTCMD │ process plain text files. │ "lpr" │
|
||
│ │ This can also include a │ │
|
||
│ │ path. │ │
|
||
├────────────────────────────────┼──────────────────────────────┼─────────────┤
|
||
│ │ A grep tool. It should be │ │
|
||
│ GEANY_DEFAULT_TOOLS_GREP │ compatible with GNU grep. │ "grep" │
|
||
│ │ This can also include a │ │
|
||
│ │ path. │ │
|
||
├────────────────────────────────┼──────────────────────────────┼─────────────┤
|
||
│ GEANY_DEFAULT_MRU_LENGHTH │ The length of the "Recent │ "10" │
|
||
│ │ files" list. │ │
|
||
├────────────────────────────────┼──────────────────────────────┼─────────────┤
|
||
│ GEANY_DEFAULT_FONT_SYMBOL_LIST │ The font used in sidebar to │ "Sans 9" │
|
||
│ │ show symbols and open files. │ │
|
||
├────────────────────────────────┼──────────────────────────────┼─────────────┤
|
||
│ GEANY_DEFAULT_FONT_MSG_WINDOW │ The font used in the │ "Sans 9" │
|
||
│ │ messages window. │ │
|
||
├────────────────────────────────┼──────────────────────────────┼─────────────┤
|
||
│ GEANY_DEFAULT_FONT_EDITOR │ The font used in the editor │ "Monospace │
|
||
│ │ window. │ 10" │
|
||
├────────────────────────────────┴──────────────────────────────┴─────────────┤
|
||
│ Windows specific │
|
||
├────────────────────────────────┬──────────────────────────────┬─────────────┤
|
||
│ │ Set this to 1 if you want to │ │
|
||
│ │ use the default Windows file │ │
|
||
│ │ open dialog instead GTK's │ │
|
||
│ │ file open dialog. The │ │
|
||
│ │ default Windows file open │ │
|
||
│ GEANY_USE_WIN32_DIALOG │ dialog is missing some nice │ 0 │
|
||
│ │ features like choosing a │ │
|
||
│ │ filetype or an encoding. Do │ │
|
||
│ │ not touch this setting when │ │
|
||
│ │ building on a non-Win32 │ │
|
||
│ │ system. │ │
|
||
└────────────────────────────────┴──────────────────────────────┴─────────────┘
|
||
|
||
|
||
GNU General Public License
|
||
|
||
Version 2, June 1991
|
||
|
||
Copyright © 1989, 1991 Free Software Foundation, Inc.
|
||
|
||
Free Software Foundation, Inc.
|
||
59 Temple Place, Suite 330,
|
||
Boston,
|
||
MA
|
||
02111-1307
|
||
USA
|
||
|
||
.
|
||
|
||
Everyone is permitted to copy and distribute verbatim copies of this license
|
||
document, but changing it is not allowed.
|
||
|
||
Version 2, June 1991
|
||
|
||
Table of Contents
|
||
|
||
Preamble
|
||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||
|
||
Section 0
|
||
Section 1
|
||
Section 2
|
||
Section 3
|
||
Section 4
|
||
Section 5
|
||
Section 6
|
||
Section 7
|
||
Section 8
|
||
Section 9
|
||
Section 10
|
||
Section 11 NO WARRANTY
|
||
Section 12
|
||
|
||
How to Apply These Terms to Your New Programs
|
||
|
||
Preamble
|
||
|
||
The licenses for most software are designed to take away your freedom to share
|
||
and change it. By contrast, the GNU General Public License is intended to
|
||
guarantee your freedom to share and change free software - to make sure the
|
||
software is free for all its users. This General Public License applies to most
|
||
of the Free Software Foundation's software and to any other program whose
|
||
authors commit to using it. (Some other Free Software Foundation software is
|
||
covered by the GNU Library General Public License instead.) You can apply it to
|
||
your programs, too.
|
||
|
||
When we speak of free software, we are referring to freedom, not price. Our
|
||
General Public Licenses are designed to make sure that you have the freedom to
|
||
distribute copies of free software (and charge for this service if you wish),
|
||
that you receive source code or can get it if you want it, that you can change
|
||
the software or use pieces of it in new free programs; and that you know you
|
||
can do these things.
|
||
|
||
To protect your rights, we need to make restrictions that forbid anyone to deny
|
||
you these rights or to ask you to surrender the rights. These restrictions
|
||
translate to certain responsibilities for you if you distribute copies of the
|
||
software, or if you modify it.
|
||
|
||
For example, if you distribute copies of such a program, whether gratis or for
|
||
a fee, you must give the recipients all the rights that you have. You must make
|
||
sure that they, too, receive or can get the source code. And you must show them
|
||
these terms so they know their rights.
|
||
|
||
We protect your rights with two steps:
|
||
|
||
1. copyright the software, and
|
||
|
||
2. offer you this license which gives you legal permission to copy, distribute
|
||
and/or modify the software.
|
||
|
||
Also, for each author's protection and ours, we want to make certain that
|
||
everyone understands that there is no warranty for this free software. If the
|
||
software is modified by someone else and passed on, we want its recipients to
|
||
know that what they have is not the original, so that any problems introduced
|
||
by others will not reflect on the original authors' reputations.
|
||
|
||
Finally, any free program is threatened constantly by software patents. We wish
|
||
to avoid the danger that redistributors of a free program will individually
|
||
obtain patent licenses, in effect making the program proprietary. To prevent
|
||
this, we have made it clear that any patent must be licensed for everyone's
|
||
free use or not licensed at all.
|
||
|
||
The precise terms and conditions for copying, distribution and modification
|
||
follow.
|
||
|
||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||
|
||
Section 0
|
||
|
||
This License applies to any program or other work which contains a notice
|
||
placed by the copyright holder saying it may be distributed under the terms of
|
||
this General Public License. The "Program", below, refers to any such program
|
||
or work, and a “work based on the Program ” means either the Program or any
|
||
derivative work under copyright law: that is to say, a work containing the
|
||
Program or a portion of it, either verbatim or with modifications and/or
|
||
translated into another language. (Hereinafter, translation is included without
|
||
limitation in the term “modification ”.) Each licensee is addressed as “you”.
|
||
|
||
Activities other than copying, distribution and modification are not covered by
|
||
this License; they are outside its scope. The act of running the Program is not
|
||
restricted, and the output from the Program is covered only if its contents
|
||
constitute a work based on the Program (independent of having been made by
|
||
running the Program). Whether that is true depends on what the Program does.
|
||
|
||
Section 1
|
||
|
||
You may copy and distribute verbatim copies of the Program's source code as you
|
||
receive it, in any medium, provided that you conspicuously and appropriately
|
||
publish on each copy an appropriate copyright notice and disclaimer of
|
||
warranty; keep intact all the notices that refer to this License and to the
|
||
absence of any warranty; and give any other recipients of the Program a copy of
|
||
this License along with the Program.
|
||
|
||
You may charge a fee for the physical act of transferring a copy, and you may
|
||
at your option offer warranty protection in exchange for a fee.
|
||
|
||
Section 2
|
||
|
||
You may modify your copy or copies of the Program or any portion of it, thus
|
||
forming a work based on the Program, and copy and distribute such modifications
|
||
or work under the terms of Section 1 above, provided that you also meet all of
|
||
these conditions:
|
||
|
||
1. You must cause the modified files to carry prominent notices stating that
|
||
you changed the files and the date of any change.
|
||
|
||
2. You must cause any work that you distribute or publish, that in whole or in
|
||
part contains or is derived from the Program or any part thereof, to be
|
||
licensed as a whole at no charge to all third parties under the terms of
|
||
this License.
|
||
|
||
3. If the modified program normally reads commands interactively when run, you
|
||
must cause it, when started running for such interactive use in the most
|
||
ordinary way, to print or display an announcement including an appropriate
|
||
copyright notice and a notice that there is no warranty (or else, saying
|
||
that you provide a warranty) and that users may redistribute the program
|
||
under these conditions, and telling the user how to view a copy of this
|
||
License.
|
||
|
||
Exception:
|
||
|
||
If the Program itself is interactive but does not normally print such an
|
||
announcement, your work based on the Program is not required to print an
|
||
announcement.)
|
||
|
||
These requirements apply to the modified work as a whole. If identifiable
|
||
sections of that work are not derived from the Program, and can be reasonably
|
||
considered independent and separate works in themselves, then this License, and
|
||
its terms, do not apply to those sections when you distribute them as separate
|
||
works. But when you distribute the same sections as part of a whole which is a
|
||
work based on the Program, the distribution of the whole must be on the terms
|
||
of this License, whose permissions for other licensees extend to the entire
|
||
whole, and thus to each and every part regardless of who wrote it.
|
||
|
||
Thus, it is not the intent of this section to claim rights or contest your
|
||
rights to work written entirely by you; rather, the intent is to exercise the
|
||
right to control the distribution of derivative or collective works based on
|
||
the Program.
|
||
|
||
In addition, mere aggregation of another work not based on the Program with the
|
||
Program (or with a work based on the Program) on a volume of a storage or
|
||
distribution medium does not bring the other work under the scope of this
|
||
License.
|
||
|
||
Section 3
|
||
|
||
You may copy and distribute the Program (or a work based on it, under Section 2
|
||
in object code or executable form under the terms of Sections 1 and 2 above
|
||
provided that you also do one of the following:
|
||
|
||
1. Accompany it with the complete corresponding machine-readable source code,
|
||
which must be distributed under the terms of Sections 1 and 2 above on a
|
||
medium customarily used for software interchange; or,
|
||
|
||
2. Accompany it with a written offer, valid for at least three years, to give
|
||
any third party, for a charge no more than your cost of physically
|
||
performing source distribution, a complete machine-readable copy of the
|
||
corresponding source code, to be distributed under the terms of Sections 1
|
||
and 2 above on a medium customarily used for software interchange; or,
|
||
|
||
3. Accompany it with the information you received as to the offer to
|
||
distribute corresponding source code. (This alternative is allowed only for
|
||
noncommercial distribution and only if you received the program in object
|
||
code or executable form with such an offer, in accord with Subsection b
|
||
above.)
|
||
|
||
The source code for a work means the preferred form of the work for making
|
||
modifications to it. For an executable work, complete source code means all the
|
||
source code for all modules it contains, plus any associated interface
|
||
definition files, plus the scripts used to control compilation and installation
|
||
of the executable. However, as a special exception, the source code distributed
|
||
need not include anything that is normally distributed (in either source or
|
||
binary form) with the major components (compiler, kernel, and so on) of the
|
||
operating system on which the executable runs, unless that component itself
|
||
accompanies the executable.
|
||
|
||
If distribution of executable or object code is made by offering access to copy
|
||
from a designated place, then offering equivalent access to copy the source
|
||
code from the same place counts as distribution of the source code, even though
|
||
third parties are not compelled to copy the source along with the object code.
|
||
|
||
Section 4
|
||
|
||
You may not copy, modify, sublicense, or distribute the Program except as
|
||
expressly provided under this License. Any attempt otherwise to copy, modify,
|
||
sublicense or distribute the Program is void, and will automatically terminate
|
||
your rights under this License. However, parties who have received copies, or
|
||
rights, from you under this License will not have their licenses terminated so
|
||
long as such parties remain in full compliance.
|
||
|
||
Section 5
|
||
|
||
You are not required to accept this License, since you have not signed it.
|
||
However, nothing else grants you permission to modify or distribute the Program
|
||
or its derivative works. These actions are prohibited by law if you do not
|
||
accept this License. Therefore, by modifying or distributing the Program (or
|
||
any work based on the Program), you indicate your acceptance of this License to
|
||
do so, and all its terms and conditions for copying, distributing or modifying
|
||
the Program or works based on it.
|
||
|
||
Section 6
|
||
|
||
Each time you redistribute the Program (or any work based on the Program), the
|
||
recipient automatically receives a license from the original licensor to copy,
|
||
distribute or modify the Program subject to these terms and conditions. You may
|
||
not impose any further restrictions on the recipients' exercise of the rights
|
||
granted herein. You are not responsible for enforcing compliance by third
|
||
parties to this License.
|
||
|
||
Section 7
|
||
|
||
If, as a consequence of a court judgment or allegation of patent infringement
|
||
or for any other reason (not limited to patent issues), conditions are imposed
|
||
on you (whether by court order, agreement or otherwise) that contradict the
|
||
conditions of this License, they do not excuse you from the conditions of this
|
||
License. If you cannot distribute so as to satisfy simultaneously your
|
||
obligations under this License and any other pertinent obligations, then as a
|
||
consequence you may not distribute the Program at all. For example, if a patent
|
||
license would not permit royalty-free redistribution of the Program by all
|
||
those who receive copies directly or indirectly through you, then the only way
|
||
you could satisfy both it and this License would be to refrain entirely from
|
||
distribution of the Program.
|
||
|
||
If any portion of this section is held invalid or unenforceable under any
|
||
particular circumstance, the balance of the section is intended to apply and
|
||
the section as a whole is intended to apply in other circumstances.
|
||
|
||
It is not the purpose of this section to induce you to infringe any patents or
|
||
other property right claims or to contest validity of any such claims; this
|
||
section has the sole purpose of protecting the integrity of the free software
|
||
distribution system, which is implemented by public license practices. Many
|
||
people have made generous contributions to the wide range of software
|
||
distributed through that system in reliance on consistent application of that
|
||
system; it is up to the author/donor to decide if he or she is willing to
|
||
distribute software through any other system and a licensee cannot impose that
|
||
choice.
|
||
|
||
This section is intended to make thoroughly clear what is believed to be a
|
||
consequence of the rest of this License.
|
||
|
||
Section 8
|
||
|
||
If the distribution and/or use of the Program is restricted in certain
|
||
countries either by patents or by copyrighted interfaces, the original
|
||
copyright holder who places the Program under this License may add an explicit
|
||
geographical distribution limitation excluding those countries, so that
|
||
distribution is permitted only in or among countries not thus excluded. In such
|
||
case, this License incorporates the limitation as if written in the body of
|
||
this License.
|
||
|
||
Section 9
|
||
|
||
The Free Software Foundation may publish revised and/or new versions of the
|
||
General Public License from time to time. Such new versions will be similar in
|
||
spirit to the present version, but may differ in detail to address new problems
|
||
or concerns.
|
||
|
||
Each version is given a distinguishing version number. If the Program specifies
|
||
a version number of this License which applies to it and "any later version",
|
||
you have the option of following the terms and conditions either of that
|
||
version or of any later version published by the Free Software Foundation. If
|
||
the Program does not specify a version number of this License, you may choose
|
||
any version ever published by the Free Software Foundation.
|
||
|
||
Section 10
|
||
|
||
If you wish to incorporate parts of the Program into other free programs whose
|
||
distribution conditions are different, write to the author to ask for
|
||
permission. For software which is copyrighted by the Free Software Foundation,
|
||
write to the Free Software Foundation; we sometimes make exceptions for this.
|
||
Our decision will be guided by the two goals of preserving the free status of
|
||
all derivatives of our free software and of promoting the sharing and reuse of
|
||
software generally.
|
||
|
||
Section 11 NO WARRANTY
|
||
|
||
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE
|
||
PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
|
||
STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
|
||
PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
|
||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||
FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
|
||
PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU
|
||
ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||
|
||
Section 12
|
||
|
||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY
|
||
COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
|
||
PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
|
||
INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
|
||
BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||
FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER
|
||
OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||
|
||
END OF TERMS AND CONDITIONS
|
||
|
||
How to Apply These Terms to Your New Programs
|
||
|
||
If you develop a new program, and you want it to be of the greatest possible
|
||
use to the public, the best way to achieve this is to make it free software
|
||
which everyone can redistribute and change under these terms.
|
||
|
||
To do so, attach the following notices to the program. It is safest to attach
|
||
them to the start of each source file to most effectively convey the exclusion
|
||
of warranty; and each file should have at least the "copyright" line and a
|
||
pointer to where the full notice is found.
|
||
|
||
<one line to give the program's name and a brief idea of what it does.>
|
||
Copyright (C) <year> <name of author>
|
||
|
||
This program is free software; you can redistribute it and/or modify it under
|
||
the terms of the GNU General Public License as published by the Free Software
|
||
Foundation; either version 2 of the License, or (at your option) any later
|
||
version.
|
||
|
||
This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||
PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||
|
||
You should have received a copy of the GNU General Public License along with
|
||
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
||
Place, Suite 330, Boston, MA 02111-1307 USA
|
||
|
||
Also add information on how to contact you by electronic and paper mail.
|
||
|
||
If the program is interactive, make it output a short notice like this when it
|
||
starts in an interactive mode:
|
||
|
||
Gnomovision version 69, Copyright (C) year name of author Gnomovision comes
|
||
with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software,
|
||
and you are welcome to redistribute it under certain conditions; type `show c'
|
||
for details.
|
||
|
||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||
parts of the General Public License. Of course, the commands you use may be
|
||
called something other than `show w' and `show c'; they could even be
|
||
mouse-clicks or menu items--whatever suits your program.
|
||
|
||
You should also get your employer (if you work as a programmer) or your school,
|
||
if any, to sign a "copyright disclaimer" for the program, if necessary. Here is
|
||
a sample; alter the names:
|
||
|
||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||
|
||
<signature of Ty Coon>, 1 April 1989 Ty Coon, President of Vice
|
||
|
||
This General Public License does not permit incorporating your program into
|
||
proprietary programs. If your program is a subroutine library, you may consider
|
||
it more useful to permit linking proprietary applications with the library. If
|
||
this is what you want to do, use the GNU Library General Public License instead
|
||
of this License.
|
||
|
||
Appendix E. License for Scintilla and SciTE
|
||
|
||
Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>
|
||
|
||
All Rights Reserved
|
||
|
||
Permission to use, copy, modify, and distribute this software and its
|
||
documentation for any purpose and without fee is hereby granted, provided that
|
||
the above copyright notice appear in all copies and that both that copyright
|
||
notice and this permission notice appear in supporting documentation.
|
||
|
||
NEIL HODGSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
|
||
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NEIL
|
||
HODGSON BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
|
||
DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||
|