geany-1.23.1+dfsg/0000755000175000017500000000000012146174514014055 5ustar hyperairhyperairgeany-1.23.1+dfsg/Makefile.am0000644000175000017500000000573712146146074016125 0ustar hyperairhyperair## Process this file with automake to produce Makefile.in SUBDIRS = tagmanager scintilla src plugins icons po doc AUTOMAKE_OPTIONS = 1.7 ACLOCAL_AMFLAGS = -I m4 WIN32_BUILD_FILES = \ geany_private.rc \ win32-config.h \ makefile.win32 SYS_DATA_FILES = \ data/c99.tags \ data/php.tags \ data/python.tags \ data/pascal.tags \ data/html_entities.tags \ $(srcdir)/data/filetypes.* \ data/filetype_extensions.conf \ data/snippets.conf \ data/ui_toolbar.xml \ $(srcdir)/data/templates/* \ $(srcdir)/data/templates/files/* \ $(srcdir)/data/colorschemes/* \ $(top_srcdir)/data/geany.glade \ $(top_srcdir)/data/geany.gtkrc EXTRA_DIST = \ autogen.sh \ wscript \ waf \ geany.desktop.in \ geany.pc.in \ geany.spec \ ChangeLog.pre-0-17 \ ChangeLog.pre-1-22 \ HACKING \ README.I18N \ README.Packagers \ po/intl_stats.sh \ intltool-extract.in \ intltool-merge.in \ intltool-update.in \ $(SYS_DATA_FILES) \ $(WIN32_BUILD_FILES) DISTCLEANFILES = \ geany.desktop \ intltool-extract \ intltool-merge \ intltool-update uninstall-local: rm -rf $(DESTDIR)$(pkgdatadir); install-data-local: install-data-only @$(NORMAL_INSTALL) install-data-only: @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgdatadir); \ $(INSTALL_DATA) $(srcdir)/COPYING $(DESTDIR)$(pkgdatadir)/GPL-2; \ for file in $(srcdir)/data/*; do \ if test -f $$file; then \ $(INSTALL_DATA) $$file $(DESTDIR)$(pkgdatadir)/; \ fi \ done $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/templates; for file in $(srcdir)/data/templates/*; do \ if test -f $$file; then \ $(INSTALL_DATA) $$file $(DESTDIR)$(pkgdatadir)/templates/; \ fi \ done $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/templates/files; for file in $(srcdir)/data/templates/files/*; do \ if test -f $$file; then \ $(INSTALL_DATA) $$file $(DESTDIR)$(pkgdatadir)/templates/files/; \ fi \ done $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/colorschemes; for file in $(srcdir)/data/colorschemes/*; do \ if test -f $$file; then \ $(INSTALL_DATA) $$file $(DESTDIR)$(pkgdatadir)/colorschemes/; \ fi \ done dist-hook: @if test -d "$(top_srcdir)/.git"; then \ echo ' GEN ChangeLog'; \ ( cd "$(top_srcdir)" && \ echo '# Generated by Makefile. Do not edit.' && echo && \ git log --stat 0.21.0.. ) > ChangeLog.tmp \ && mv -f ChangeLog.tmp "$(distdir)/ChangeLog" \ || ( rm -f ChangeLog.tmp ; \ echo 'Failed to generate ChangeLog' >&2 ); \ else \ echo 'A git clone is required to generate a ChangeLog' >&2; \ fi sign: if test -f $(PACKAGE)-$(VERSION).tar.gz; then \ gpg --detach-sign --digest-algo SHA512 $(PACKAGE)-$(VERSION).tar.gz; fi if test -f $(PACKAGE)-$(VERSION).tar.bz2; then \ gpg --detach-sign --digest-algo SHA512 $(PACKAGE)-$(VERSION).tar.bz2; fi rpm: dist rpmbuild -ta $(distdir).tar.gz pkgconfig_DATA = geany.pc pkgconfigdir = $(libdir)/pkgconfig desktopdir = $(datadir)/applications desktop_in_files = geany.desktop desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) @INTLTOOL_DESKTOP_RULE@ geany-1.23.1+dfsg/doc/0000755000175000017500000000000012146150003014605 5ustar hyperairhyperairgeany-1.23.1+dfsg/doc/Makefile.am0000644000175000017500000000341612146146075016663 0ustar hyperairhyperairman_MANS=geany.1 DOCDIR = $(DESTDIR)$(docdir) IMAGE_FILES = images/*.png EXTRA_DIST = geany.html geany.css geany.txt geany.1 \ plugins.dox pluginsymbols.c pluginsignals.c \ stash-example.c stash-gui-example.c \ makefile.win32 \ $(srcdir)/$(IMAGE_FILES) pdf: geany.txt rst2latex -stg --documentoptions="10pt,a4paper" --output-encoding=utf8 $(srcdir)/geany.txt geany.tex pdflatex geany.tex rm -f geany.tex geany.aux geany.log geany.out mv $(srcdir)/geany.pdf geany-$(VERSION).pdf api-doc: Doxyfile doxygen hacking-doc: ../HACKING rst2html -stg --stylesheet=geany.css $^ hacking.html # when generating documentation, first try rst2html.py as it is the upstream default doc: geany.txt (rst2html.py --version) < /dev/null > /dev/null 2>&1 && \ rst2html.py -stg --stylesheet=geany.css $(srcdir)/geany.txt geany.html || \ rst2html -stg --stylesheet=geany.css $(srcdir)/geany.txt geany.html doc-clean: rm -f geany.html rm -f geany.1 rm -f *.pdf uninstall-local: rm -rf $(DOCDIR); install-data-local: $(mkinstalldirs) $(DOCDIR)/html/images for file in `ls $(srcdir)/$(IMAGE_FILES)`; do \ if [ -f $$file ]; then \ basefile=`echo $$file | sed -e 's,^.*/,,'`; \ $(INSTALL_DATA) $$file $(DOCDIR)/html/images/$$basefile; \ fi \ done $(INSTALL_DATA) $(srcdir)/geany.html $(DOCDIR)/html/index.html $(INSTALL_DATA) $(srcdir)/geany.txt $(DOCDIR)/manual.txt $(INSTALL_DATA) $(top_srcdir)/README $(DOCDIR) $(INSTALL_DATA) $(top_srcdir)/ChangeLog $(DOCDIR) $(INSTALL_DATA) $(top_srcdir)/NEWS $(DOCDIR) $(INSTALL_DATA) $(top_srcdir)/COPYING $(DOCDIR) $(INSTALL_DATA) $(top_srcdir)/AUTHORS $(DOCDIR) $(INSTALL_DATA) $(top_srcdir)/TODO $(DOCDIR) $(INSTALL_DATA) $(top_srcdir)/THANKS $(DOCDIR) $(INSTALL_DATA) $(top_srcdir)/scintilla/License.txt $(DOCDIR)/ScintillaLicense.txt geany-1.23.1+dfsg/doc/geany.1.in0000644000175000017500000001156412146147733016426 0ustar hyperairhyperair.TH "GEANY" "1" "May 19, 2013" "geany @VERSION@" "" .SH "NAME" Geany \(em a small and lightweight IDE .SH "SYNOPSIS" .PP \fBgeany\fR [\fBoption\fP] [\fP+number\fP] [\fBfiles ...\fP] .SH "DESCRIPTION" .PP Geany is a small and fast editor with basic features of an integrated development environment. .PP Some of its features: syntax highlighting, code completion, code folding, symbol/tag lists and many supported filetypes like C(++), Java, PHP, HTML, DocBook, Perl and more. .PP Homepage: http://www.geany.org/ .SH "OPTIONS" .IP "\fB\fP \fBfiles ...\fP " 10 A space-separated list of filenames. Absolute and relative filenames can be used. Geany also recognises line and column information when appended to the filename with colons, e.g. "geany foo.bar:10:5" will open the file foo.bar and place the cursor in line 10 at column 5. .IP "\fB\fP \fB\fP " 10 Projects can also be opened but a project file (*.geany) must be the first non-option argument. All additionally given files are ignored. .IP "\fB\fP \fB\+number\fP " 10 Set initial line .I number for the first opened file (same as \-\-line, do not put a space between the + sign and the number). E.g. "geany +7 foo.bar" will open the file foo.bar and place the cursor in line 7. .IP "\fB\fP \fB\-\-column\fP " 10 Set initial column number for the first opened file (useful in conjunction with \-\-line). .IP "\fB-c\fP, \fB\-\-config\fP " 10 Use an alternate configuration directory. Default configuration directory is ~/.config/geany/ and there resides geany.conf and some template files. .IP "\fB\fP \fB\-\-ft\-names\fP " 10 Print a list of Geany's internal filetype names (useful snippets configuration). .IP "\fB-g\fP, \fB\-\-generate\-tags\fP " 10 Generate a global tags file (see documentation). .IP "\fB-P\fP, \fB\-\-no\-preprocessing\fP " 10 Don't preprocess C/C++ files when generating tags. .IP "\fB-i\fP, \fB\-\-new-instance\fP " 10 Don't open files in a running instance, force opening a new instance. Only available if Geany was compiled with support for Sockets. .IP "\fB-l\fP, \fB\-\-line\fP " 10 Set initial line number for the first opened file. .IP "\fB\fP \fB\-\-list\-documents\fP " 10 Return a list of open documents in a running Geany instance. This can be used to read the currently opened documents in Geany from an external script or tool. The returned list is separated by newlines (LF) and consists of the full, UTF\-8 encoded filenames of the documents. Only available if Geany was compiled with support for Sockets. .IP "\fB-m\fP, \fB\-\-no-msgwin\fP " 10 Don't show the message window. Use this option if you don't need compiler messages or VTE support. .IP "\fB-n\fP, \fB\-\-no-ctags\fP " 10 Don't load symbol completion and call tip data. Use this option, if you don't want to use them. For more information please see documentation. .IP "\fB-p\fP, \fB\-\-no-plugins\fP " 10 Don't load plugin support. .IP "\fB\fP \fB\-\-print-prefix\fP " 10 Print installation prefix, the data directory, the lib directory and the locale directory (in this order) to stdout, each per line. This is mainly intended for plugin authors to detect installation paths. .IP "\fB-r\fP, \fB\-\-read-only\fP " 10 Open all files given on the command line in read-only mode. This only applies to files opened explicitly from the command line, so files from previous sessions or project files are unaffected. .IP "\fB-s\fP, \fB\-\-no-session\fP " 10 Don't load the previous session's files. .IP "\fB-t\fP, \fB\-\-no-terminal\fP " 10 Don't load terminal support. Use this option, if you don't want to load the virtual terminal emulator widget at startup. If you don't have libvte.so.4 installed, then terminal-support is automatically disabled. Only available if Geany was compiled with support for VTE. .IP "\fB\fP \fB\-\-socket-file\fP " 10 Use this socket filename for communication with a running Geany instance .IP "\fB\fP \fB\-\-vte-lib\fP " 10 Specify explicitly the path including filename or only the filename to the VTE library, e.g. /usr/lib/libvte.so or libvte.so. This option is only needed, when the autodetection doesn't work. Only available if Geany was compiled with support for VTE. .IP "\fB-v\fP, \fB\-\-verbose\fP " 10 Be verbose (print useful status messages). .IP "\fB-V\fP, \fB\-\-version\fP " 10 Show version information and exit. .IP "\fB-?\fP, \fB\-\-help\fP " 10 Show help information and exit. .PP Geany supports all generic GTK options, a list is available on the help screen. .SH "AUTHOR" .PP This manual page was written by the Geany developer team. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2. .PP The complete text of the GNU General Public License can be found in @GEANY_DATA_DIR@/GPL-2. geany-1.23.1+dfsg/doc/geany.txt0000644000175000017500000070151012146147733016475 0ustar hyperairhyperair.. |(version)| replace:: 1.23.1 ======= Geany ======= ------------------------- A fast, light, GTK+ IDE ------------------------- :Authors: Enrico Tröger, Nick Treleaven, Frank Lanitz, Colomban Wendling, Matthew Brush :Date: 2013-05-19 :Version: |(version)| Copyright © 2005-2012 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 also in the chapter `GNU General Public License`_. .. contents:: Introduction ============ 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 on other packages. Another goal was to be as independent as possible from a particular Desktop Environment like KDE or GNOME - Geany only requires the GTK2 runtime libraries. Some basic features of Geany: * Syntax highlighting * Code folding * Autocompletion of symbols/words * Construct completion/snippets * Auto-closing of XML and HTML tags * Calltips * Many supported filetypes including C, Java, PHP, HTML, Python, Perl, Pascal, and others * Symbol lists * Code navigation * Build system to compile and execute your code * Simple project management * Plugin interface Where to get it --------------- You can obtain Geany from http://www.geany.org/ or perhaps also from your distribution. For a list of available packages, please see http://www.geany.org/Download/ThirdPartyPackages. 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 and in the chapter, `GNU General Public License`_. The included Scintilla library (found in the subdirectory ``scintilla/``) has its own license, which can be found in the chapter, `License for Scintilla and SciTE`_. About this document ------------------- This documentation is available in HTML and text formats. The latest version can always be found at http://www.geany.org/. If you want to contribute to it, see `Contributing to this document`_. Installation ============ Requirements ------------ You will need the GTK (>= 2.16.0) libraries and their dependencies (Pango, GLib and ATK). Your distro should provide packages for these, usually installed by default. For Windows, you can download an installer from the website which bundles these libraries. Binary packages --------------- There are many binary packages available. For an up-to-date but maybe incomplete list see http://www.geany.org/Download/ThirdPartyPackages. Source compilation ------------------ Compiling Geany is quite easy. To do so, you need the GTK (>= 2.16.0) libraries and header files. You also need the Pango, GLib and ATK libraries and header files. All these files are available at http://www.gtk.org, but very often your distro will provide development packages to save the trouble of building these yourself. Furthermore you need, of course, a C and C++ compiler. The GNU versions of these tools are recommended. Autotools based build system ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The Autotools based build system is very mature and has been well tested. To use it, you just need the Make tool, preferably GNU Make. Then run the following commands:: $ ./configure $ make Then as root:: % make install Waf based build system ^^^^^^^^^^^^^^^^^^^^^^ The Waf build system is still quite young and under heavy development but already in a usable state. In contrast to the Autotools system, Waf needs Python. So before using Waf, you need to install Python on your system. The advantage of the Waf build system over the Autotools based build system is that the whole build process might be a bit faster. Especially when you use the Waf cache feature for repetitive builds (e.g. when changing only a few source files to test something) will become much faster since Waf will cache and re-use the unchanged built files and only compile the changed code again. See `Waf Cache`_ for details. To build Geany with Waf as run:: $ ./waf configure $ ./waf build Then as root:: % ./waf install Waf cache ````````` The Waf build system has a nice and interesting feature which can help to avoid a lot of unnecessary rebuilding of unchanged code. This often happens when developing new features or trying to debug something in Geany. Waf is able to store and retrieve the object files from a cache. This cache is declared using the environment variable ``WAFCACHE``. A possible location of the cache directory could be ``~/.cache/waf``. In order to make use of this, you first need to create this directory:: $ mkdir -p ~/.cache/waf then add the environment variable to your shell configuration (the following example is for Bash and should be adjusted to your used shell):: export WAFCACHE=/home/username/.cache/waf Remember to replace ``username`` with your actual username. More information about the Waf cache feature are available at http://code.google.com/p/waf/wiki/CacheObjectFiles. Cleaning the cache ****************** You should be careful about the size of the cache directory as it may grow rapidly over time. Waf doesn't do any cleaning or other house-keeping of the cache yet, so you need to keep it clean by yourself. An easy way to keep it clean is to run the following command regularly to remove old cached files:: $ find /home/username/.cache/waf -mtime +14 -exec rm {} \; This will delete all files in the cache directory which are older than 14 days. For details about the ``find`` command and its options, check its manual page. Custom installation ^^^^^^^^^^^^^^^^^^^ The configure script supports several common options, for a detailed list, type:: $ ./configure --help or:: $ ./waf --help (depending on which build system you use). You may also want to read the INSTALL file for advanced installation options. * See also `Compile-time options`_. Dynamic linking loader support and VTE ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 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 for automatically loading ``libvte.so.4`` if available. Build problems ^^^^^^^^^^^^^^ If there are any errors during compilation, check your build environment and try to find the error, otherwise contact the mailing list or one the authors. Sometimes you might need to ask for specific help from your distribution. Installation prefix ------------------- If you want to find Geany's system files after installation you may want to know the installation prefix. Pass the ``--print-prefix`` option to Geany to check this - see `Command line options`_. The first path is the prefix. On Unix-like systems this is commonly ``/usr`` if you installed from a binary package, or ``/usr/local`` if you build from source. .. note:: Editing system files is not necessary as you should use the per-user configuration files instead, which don't need root permissions. See `Configuration files`_. Usage ===== 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 The Geany workspace ------------------- The Geany window is shown in the following figure: .. image:: ./images/main_window.png The workspace has the following parts: * The menu. * An optional toolbar. * An optional sidebar that can show the following tabs: * Documents - A document list, and * Symbols - A list of symbols in your code. * The main editor window. * An optional message window which can show the following tabs: * Status - A list of status messages. * Compiler - The output of compiling or building programs. * Messages - Results of 'Find Usage', 'Find in Files' and other actions * Scribble - A text scratchpad for any use. * Terminal - An optional terminal window. * A status bar Most of these can be configured in the `Interface preferences`_, the `View menu`_, or the popup menu for the relevant area. Additional tabs may be added to the sidebar and message window by plugins. The position of the tabs can be selected in the interface preferences. The sizes of the sidebar and message window can be adjusted by dragging the dividers. Command line options -------------------- ============ ======================= ================================================= Short option Long option Function ============ ======================= ================================================= *none* +number Set initial line number for the first opened file (same as --line, do not put a space between the + sign and the number). E.g. "geany +7 foo.bar" will open the file foo.bar and place the cursor in line 7. *none* --column Set initial column number for the first opened file. -c dir_name --config=directory_name Use an alternate configuration directory. The default configuration directory is ``~/.config/geany/`` and that is where ``geany.conf`` and other configuration files reside. *none* --ft-names Print a list of Geany's internal filetype names (useful for snippets configuration). -g --generate-tags Generate a global tags file (see `Generating a global tags file`_). -P --no-preprocessing Don't preprocess C/C++ files when generating tags. -i --new-instance Do not open files in a running instance, force 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. *none* --list-documents Return a list of open documents in a running Geany instance. This can be used to read the currently opened documents in Geany from an external script or tool. The returned list is separated by newlines (LF) and consists of the full, UTF-8 encoded filenames of the documents. Only available if Geany was compiled with support for Sockets. -m --no-msgwin Do not show the message window. Use this option if you do not need compiler messages or VTE support. -n --no-ctags Do not load symbol completion and call tip data. Use this option if you do not want to use them. -p --no-plugins Do not load plugins or plugin support. *none* --print-prefix Print installation prefix, the data directory, the lib directory and the locale directory (in that order) to stdout, one line each. This is mainly intended for plugin authors to detect installation paths. -r --read-only Open all files given on the command line in read-only mode. This only applies to files opened explicitly from the command line, so files from previous sessions or project files are unaffected. -s --no-session Do not load the previous session's files. -t --no-terminal Do not load terminal support. Use this option if you do not want to load the virtual 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. *none* --socket-file Use this socket filename for communication with a running Geany instance. This can be used with the following command to execute Geany on the current workspace:: geany --socket-file=/tmp/geany-sock-$(xprop -root _NET_CURRENT_DESKTOP | awk '{print $3}') *none* --vte-lib Specify explicitly the path including filename or only the filename to the VTE library, e.g. ``/usr/lib/libvte.so`` or ``libvte.so``. This option is only needed when the auto-detection does not work. Only available if Geany was compiled with support for VTE. -v --verbose Be verbose (print useful status messages). -V --version Show version information and exit. -? --help Show help information and exit. *none* [files ...] Open all given files at startup. This option causes Geany to ignore loading stored files from the last session (if enabled). Geany also recognizes line and column information when appended to the filename with colons, e.g. "geany foo.bar:10:5" will open the file foo.bar and place the cursor in line 10 at column 5. Projects can also be opened but a project file (\*.geany) must be the first non-option argument. All additionally given files are ignored. ============ ======================= ================================================= You can also pass line number and column number information, e.g.:: geany some_file.foo:55:4 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 `General Startup preferences`_). You can start several instances of Geany, but only the first will load files from the last session. In the subsequent instances, you can find these files in the file menu under the "Recent files" item. By default this contains the last 10 recently opened files. You can change the number of recently opened files in the preferences dialog. 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 if there is an an instance of itself already running and opens files from the command-line in that instance. So, Geany can be used to view and edit files by opening them from other programs such as a file manager. You can also pass line number and column number information, e.g.:: geany some_file.foo:55:4 This would open the file ``some_file.foo`` with the cursor on line 55, column 4. 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`` on 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 any ``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) much as you would a 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 some other filenames. If this fails too, you should check whether you installed libvte correctly. Again note, Geany will run without this library. It could be, that the library is called something else than ``libvte.so`` (e.g. on FreeBSD 6.0 it is called ``libvte.so.8``). If so please set a link to the correct file (as root):: # ln -s /usr/lib/libvte.so.X /usr/lib/libvte.so Obviously, you have to adjust the paths and set X to the number of your ``libvte.so``. You can also specify the filename of the VTE library to use on the command line (see the section called `Command line options`_) or at compile time by specifying the command line option ``--with-vte-module-path`` to ./configure. 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 have a defined style used by Geany you must assign it to at least one of Geany's widgets. For example use the following line:: widget "Geany*" style "geanyStyle" This would assign your 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: * GeanyMainWindow * GeanyEditMenu * GeanyToolbarMenu * GeanyDialog * GeanyDialogPrefs * GeanyDialogProject * GeanyDialogSearch * GeanyMenubar * GeanyToolbar An 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" Documents --------- Switching between documents ^^^^^^^^^^^^^^^^^^^^^^^^^^^ The documents 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. It is not alphabetical as shown in the documents list (regardless of whether or not editor tabs are visible). See the `Notebook tab keybindings`_ section for useful shortcuts including for Most-Recently-Used document switching. Cloning documents ^^^^^^^^^^^^^^^^^ The `Document->Clone` menu item copies the current document's text, cursor position and properties into a new untitled document. If there is a selection, only the selected text is copied. This can be useful when making temporary copies of text or for creating documents with similar or identical contents. 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 convert a file from one character set to another. To do this, Geany uses the character conversion capabilities of the GLib library. Only text files are supported, i.e. opening files which contain NULL-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 be read up to the first occurrence of a NULL-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, but auto-detecting the encoding of a file is not easy and sometimes an encoding might not be detected correctly. In this case you have to set the encoding of the file manually 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 where it is known that auto-detection has problems. There are different ways to set different encodings in Geany: * 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). * 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 the wrong encoding was used. * Using the "Set encoding" menu item 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. * Specifying the encoding in the file itself As mentioned above, auto-detecting the encoding of a file may fail on some encodings. If you know that Geany doesn't open a certain file, you can add the specification line, described in the next section, to the beginning of the file to force Geany to use a specific encoding when opening the file. In-file encoding specification ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Geany detects meta tags of HTML files which contain charset information like:: and the specified charset is used when opening the file. This is useful if the encoding of the file cannot be detected properly. For non-HTML files you can also define a line like:: /* geany_encoding=ISO-8859-15 */ or:: # geany_encoding=ISO-8859-15 # to force an encoding to be used. The #, /\* and \*/ are examples of filetype-specific comment characters. It doesn't matter which characters are around the string " geany_encoding=ISO-8859-15 " as long as there is at least one whitespace character before and after this string. Whitespace characters are in this case a space or tab character. An example to use this could be you have a file with ISO-8859-15 encoding but Geany constantly detects the file encoding as ISO-8859-1. Then you simply add such a line to the file and Geany will open it correctly the next time. Since Geany 0.15 you can also use lines which match the regular expression used to find the encoding string: ``coding[\t ]*[:=][\t ]*([a-z0-9-]+)[\t ]*`` .. note:: These specifications must be in the first 512 bytes of the file. Anything after the first 512 bytes will not be recognized. Some examples are:: # encoding = ISO-8859-15 or:: # coding: ISO-8859-15 Special encoding "None" ^^^^^^^^^^^^^^^^^^^^^^^ There is a special encoding "None" which uses no 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 NULL-bytes this can be useful to skip auto detection and open the file properly at least until the occurrence of the first NULL-byte. Using this encoding opens the file as it is without any character conversion. Unicode Byte-Order-Mark (BOM) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Furthermore, Geany detects a 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 a 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 for programs not expecting it, e.g. the compiler 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 probably not important for you and you can safely ignore it. Editing ------- Folding ^^^^^^^ Geany provides basic code folding support. Folding means the ability to show and hide parts of the text in the current file. You can hide unimportant code sections and concentrate on the parts you are working on and later you can show hidden sections again. In the editor window there is a small grey margin on the left side with [+] and [-] symbols which show hidden parts and hide parts of the file respectively. By clicking on these icons you can simply show and hide sections which are marked by vertical lines within this margin. For many filetypes nested folding is supported, so there may be several fold points within other fold points. .. note:: You can customize the folding icon and line styles - see the filetypes.common `Folding Settings`_. If you don't like it or don't need it at all, you can simply disable folding support completely in the preferences dialog. The folding behaviour can be changed with the "Fold/Unfold all children of a fold point" option in the preference dialog. If activated, Geany will unfold all nested fold points below the current one if they are already folded (when clicking on a [+] symbol). When clicking on a [-] symbol, Geany will fold all nested fold points below the current one if they are unfolded. This option can be inverted by pressing the Shift key while clicking on a fold symbol. That means, if the "Fold/Unfold all children of a fold point" option is enabled, pressing Shift will disable it for this click and vice versa. Column mode editing (rectangular selections) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ There is basic support for column mode editing. To use it, create a rectangular selection by holding down the Control and Shift keys (or Alt and Shift on Windows) while selecting some text. Once a rectangular selection exists you can start editing the text within this selection and the modifications will be done for every line in the selection. It is also possible to create a zero-column selection - this is useful to insert text on multiple lines. 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. Indentation ^^^^^^^^^^^ Geany allows each document to indent either with a tab character, multiple spaces or a combination of both. The default indent settings are set in `Editor Indentation preferences`_ (see the link for more information). The default settings can be overridden per-document using the Document menu. They can also be overridden by projects - see `Project management`_. The indent mode for the current document is shown on the status bar as follows: TAB Indent with Tab characters. SP Indent with spaces. T/S Indent with tabs and spaces, depending on how much indentation is on a line. Applying new indentation settings ````````````````````````````````` After changing the default settings you may wish to apply the new settings to every document in the current session. To do this use the *Project->Apply Default Indentation* menu item. Detecting indent type ````````````````````` The *Detect from file* indentation preference can be used to scan each file as it's opened and set the indent type based on how many lines start with a tab vs. 2 or more spaces. Auto-indentation ^^^^^^^^^^^^^^^^ When enabled, auto-indentation happens when pressing *Enter* in the Editor. It adds a certain amount of indentation to the new line so the user doesn't always have to indent each line manually. Geany has four types of auto-indentation: None Disables auto-indentation completely. Basic Adds the same amount of whitespace on a new line as on the last line. Current chars Does the same as *Basic* but also indents a new line after an opening brace '{', and de-indents when typing a closing brace '}'. For Python, a new line will be indented after typing ':' at the end of the previous line. Match braces Similar to *Current chars* but the closing brace will be aligned to match the indentation of the line with the opening brace. There is also XML-tag auto-indentation. This is enabled when the mode is more than just Basic, and is also controlled by a filetype setting - see `xml_indent_tags`_. 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. 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. Code navigation history ^^^^^^^^^^^^^^^^^^^^^^^ To ease navigation in source files and especially between different files, Geany lets you jump between different navigation points. Currently, this works for the following: * `Go to tag declaration`_ * `Go to tag definition`_ * Symbol list items * Build errors * Message items When using one of these actions, Geany remembers your current position and jumps to the new one. If you decide to go back to your previous position in the file, just use "Navigate back a location". To get back to the new position again, just use "Navigate forward a location". This makes it easier to navigate in e.g. foreign code and between different files. Sending text through custom commands ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ You can define several custom commands in Geany and send the current selection to one of these commands using the *Edit->Format->Send Selection to* menu or keybindings. The output of the command will be used to replace the current selection. This makes it 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. If there is no selection, the whole current line is used instead. To add a custom command, use the *Send Selection to->Set Custom Commands* menu item. Click on *Add* to get a new item and type the command. You can also specify some command line options. Empty commands are not saved. Normal shell quoting is supported, so you can do things like: * ``sed 's/\./(dot)/g'`` The above example would normally be done with the `Replace all`_ function, but it can be handy to have common commands already set up. Context actions ^^^^^^^^^^^^^^^ You can execute the context action command on the current word at the cursor position or the available selection. This word or selection can be used as an argument to the command. The context action is invoked by a menu entry in the popup menu of the editor and also a keyboard shortcut (see the section called `Keybindings`_). The command can be specified in the preferences dialog and also for each filetype (see "context_action_cmd" in the section called `Filetype configuration`_). When the context action is invoked, the filetype specific command is used if available, otherwise the command specified in the preferences dialog is executed. The current word or selection can be referred with the wildcard "%s" in the command, it will be replaced by the current word or selection before the command is executed. For example a context action can be used to open API documentation in a browser window, 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. Autocompletion ^^^^^^^^^^^^^^ Geany can offer a list of possible completions for symbols defined in the tags and for all words in a document. The autocompletion list for symbols is presented when the first few characters of the symbol are typed (configurable, see `Editor Completions preferences`_, default 4) or when the *Complete word* keybinding is pressed (configurable, see `Editor keybindings`_, default Ctrl-Space). When the defined keybinding is typed and the *Autocomplete all words in document* preference (in `Editor Completions preferences`_) is selected then the autocompletion list will show all matching words in the document, if there are no matching symbols. If you don't want to use autocompletion it can be dismissed until the next symbol by pressing Escape. The autocompletion list is updated as more characters are typed so that it only shows completions that start with the characters typed so far. If no symbols begin with the sequence, the autocompletion window is closed. The up and down arrows will move the selected item. The highlighted item on the autocompletion list can be chosen from the list by pressing Enter/Return. You can also double-click to select an item. The sequence will be completed to match the chosen item, and if the *Drop rest of word on completion* preference is set (in `Editor Completions preferences`_) then any characters after the cursor that match a symbol or word are deleted. Word part completion ```````````````````` By default, pressing Tab will complete the selected item by word part; useful e.g. for adding the prefix ``gtk_combo_box_entry_`` without typing it manually: * gtk_com * gtk_combo_ * gtk_combo_box_ * gtk_combo_box_entry_ * gtk_combo_box_entry_set_text_column The key combination can be changed from Tab - See `Editor keybindings`_. If you clear/change the key combination for word part completion, Tab will complete the whole word instead, like Enter. Scope autocompletion ```````````````````` E.g.:: struct { int i; char c; } foo; When you type ``foo.`` it will show an autocompletion list with 'i' and 'c' symbols. It only works for languages that set parent scope names for e.g. struct members. Currently this means C-like languages. The C tag parser only parses global scopes, so this won't work for structs or objects declared in local scope. User-definable snippets ^^^^^^^^^^^^^^^^^^^^^^^ Snippets are small strings or code constructs which can be replaced or completed to a more complex string. So you can save a lot of time when typing common strings and letting Geany do the work for you. To know what to complete or replace Geany reads a configuration file called ``snippets.conf`` at startup. Maybe you need to often type your name, so define a snippet like this:: [Default] myname=Enrico Tröger Every time you write ``myname`` in Geany, it will replace "myname" with "Enrico Tröger". The key to start autocompletion can be changed in the preferences dialog, by default it is TAB. The corresponding keybinding is called `Complete snippet`. **Paths** You can override the default snippets using the user ``snippets.conf`` file. Use the *Tools->Configuration Files->snippets.conf* menu item. See also `Configuration file paths`_. This adds the default settings to the user file if the file doesn't exist. Alternatively the file can be created manually, adding only the settings you want to change. All missing settings will be read from the system snippets file. **Snippet groups** The file ``snippets.conf`` contains sections defining snippets that are available for particular filetypes and in general. The two sections "Default" and "Special" apply to all filetypes. "Default" contains all snippets which are available for every filetype and "Special" contains snippets which can only be used in other snippets. So you can define often used parts of snippets and just use the special snippet as a placeholder (see the ``snippets.conf`` for details). You can define sections with the name of a filetype eg "C++". The snippets in that section are only available for use in files with that filetype. Snippets in filetype sections will hide snippets with the same name in the "Default" section when used in a file of that filetype. **Substitution sequences for snippets** To define snippets you can use several special character sequences which will be replaced when using the snippet: ================ ========================================================= \\n or %newline% Insert a new line (it will be replaced by the used EOL char(s): LF, CR/LF, or CR). \\t or %ws% Insert an indentation step, it will be replaced according to the current document's indent mode. \\s \\s to force whitespace at beginning or end of a value ('key= value' won't work, use 'key=\\svalue') %cursor% Place the cursor at this position after completion has been done. You can define multiple %cursor% wildcards and use the keybinding `Move cursor in snippet` to jump to the next defined cursor position in the completed snippet. %...% "..." means the name of a key in the "Special" section. If you have defined a key "brace_open" in the "Special" section you can use %brace_open% in any other snippet. ================ ========================================================= Snippet names must not contain spaces otherwise they won't work correctly. But beside that you can define almost any string as a snippet and use it later in Geany. It is not limited to existing contructs of certain programming languages(like ``if``, ``for``, ``switch``). Define whatever you need. **Template wildcards** Since Geany 0.15 you can also use most of the available templates wildcards listed in `Template wildcards`_. All wildcards which are listed as `available in snippets` can be used. For instance to improve the above example:: [Default] myname=My name is {developer} mysystem=My system: {command:uname -a} this will replace ``myname`` with "My name is " and the value of the template preference ``developer``. **Word characters** You can change the way Geany recognizes the word to complete, that is how the start and end of a word is recognised when the snippet completion is requested. The section "Special" may contain a key "wordchars" which lists all characters a string may contain to be recognized as a word for completion. Leave it commented to use default characters or define it to add or remove characters to fit your needs. Snippet keybindings ``````````````````` Normally you would type the snippet name and press Tab. However, you can define keybindings for snippets under the *Keybindings* group in ``snippets.conf``:: [Keybindings] for=7 block_cursor=8 .. note:: Snippet keybindings may be overridden by Geany's configurable keybindings. Inserting Unicode characters ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ You can insert Unicode code points by hitting Ctrl-Shift-u, then still holding Ctrl-Shift, type some hex digits representing the code point for the character you want and hit Enter or Return (still holding Ctrl-Shift). If you release Ctrl-Shift before hitting Enter or Return (or any other character), the code insertion is completed, but the typed character is also entered. In the case of Enter/Return, it is a newline, as you might expect. In some earlier versions of Geany, you might need to first unbind Ctrl-Shift-u in the `keybinding preferences`_, then select *Tools->Reload Configuration* or restart Geany. Note that it works slightly differently from other GTK applications, in that you'll need to continue to hold down the Ctrl and Shift keys while typing the code point hex digits (and the Enter or Return to finish the code point). Search, replace and go to ------------------------- This section describes search-related commands from the Search menu and the editor window's popup menu: * Find * Find selection * Find usage * Find in files * Replace * Go to tag definition * Go to tag declaration * Go to line See also `Search`_ preferences. Toolbar entries ^^^^^^^^^^^^^^^ There are also two toolbar entries: * Search bar * Go to line entry There are keybindings to focus each of these - see `Focus keybindings`_. Pressing Escape will then focus the editor. Search bar `````````` The quickest way to find some text is to use the search bar entry in the toolbar. This performs a case-insensitive search in the current document whilst you type. Pressing Enter will search again, and pressing Shift-Enter will search backwards. Find ^^^^ The Find dialog is used for finding text in one or more open documents. .. image:: ./images/find_dialog.png Matching options ```````````````` The syntax for the *Use regular expressions* option is shown in `Regular expressions`_. .. note:: *Use escape sequences* is implied for 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 recognized symbols are: \\\\, \\n, \\r, \\uXXXX (Unicode characters). 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 highlight all matches in the current document with a colored box. These markers can be removed by selecting the Remove Markers command from the Document menu. Change font in search dialog text fields ```````````````````````````````````````` All search related dialogs use a Monospace for the text input fields to increase the readability of input text. This is useful when you are typing input such as regular expressions with spaces, periods and commas which might it hard to read with a proportional font. If you want to change the font, you can do this easily by inserting the following style into 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):: style "search_style" { font_name="Monospace 8" } widget "GeanyDialogSearch.*.GtkEntry" style:highest "search_style" Please note the addition of ":highest" in the last line which sets the priority of this style to the highest available. Otherwise, the style is ignored for the search dialogs. Find selection ^^^^^^^^^^^^^^ The *Find Next/Previous Selection* commands perform a search for the current selected text. If nothing is selected, by default the current word is used instead. This can be customized by the *find_selection_type* preference - see `Various preferences`_. ===== ============================================= Value *find_selection_type* behaviour ===== ============================================= 0 Use the current word (default). 1 Try the X selection first, then current word. 2 Repeat last search. ===== ============================================= Find usage ^^^^^^^^^^ Find usage searches all open files. It is similar to the Find All In Session option in the Find dialog. 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 (see note below). .. image:: ./images/find_in_files_dialog.png The *Search* field is initially set to the current word in the editor (depending on `Search`_ preferences). The *Files* setting allows to choose which files are included in the search, depending on the mode: All Search in all files; Project Use the current project's patterns, see `Project properties`_; Custom Use custom patterns. Both project and custom patterns use a glob-style syntax, each pattern separated by a space. To search all ``.c`` and ``.h`` files, use: ``*.c *.h``. Note that an empty pattern list searches in all files rather than none. The *Directory* field is initially set to the current document's directory, unless this field has already been edited and the current document has not changed. Otherwise, the current document's directory is prepended to the drop-down history. This can be disabled - see `Search`_ preferences. The *Encoding* field can be used to define the encoding of the files to be searched. The entered search text is converted to the chosen encoding and the search results are converted back to UTF-8. The *Extra options* field is used to pass any additional arguments to the grep tool. .. note:: The *Files* setting uses ``--include=`` when searching recursively, *Recurse in subfolders* uses ``-r``; both are GNU Grep options and may not work with other Grep implementations. 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 filter out version control files. If you have GNU Grep >= 2.5.2 you can use the ``--exclude-dir`` argument to filter out CVS and hidden directories like ``.svn``. Example: ``--exclude-dir=.svn --exclude-dir=CVS`` If you have an older Grep, you can try using the ``--exclude`` flag to filter out filenames. SVN Example: ``--exclude=*.svn-base`` The --exclude argument only matches the file name part, not the path. Replace ^^^^^^^ The Replace dialog is used for replacing text in one or more open documents. .. image:: ./images/replace_dialog.png The Replace dialog has the same options for matching text as the Find dialog. See the section `Matching options`_. The *Use regular expressions* option allows regular expressions to be used in the search string and back references in the replacement text -- see the entry for '\\n' in `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 or selection is the name of a tag definition (e.g. a function name) 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 the word nearest the edit cursor, or the word underneath the popup menu click position when the popup menu is used. .. note:: If the corresponding tag is on the current line, Geany will first look for a tag declaration instead, as this is more useful. Likewise *Go to tag declaration* will search for a tag definition first in this case also. Go to tag declaration ^^^^^^^^^^^^^^^^^^^^^ Like *Go to tag definition*, but for a forward declaration such as a C 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 (see `Matching options`_). The syntax is Perl compatible. Basic syntax is described in the table below. For full details, see http://www.geany.org/manual/gtk/glib/glib-regex-syntax.html. .. note:: 1. The *Use escape sequences* dialog option always applies for regular expressions. 2. Searching backwards with regular expressions is not supported. **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. \\n Where n is 1 through 9 refers to the first through ninth tagged region when searching or replacing. Searching for (Wiki)\\1 matches WikiWiki. If the search string was Fred([1-9])XXX and the replace string was Sam\\1YYY, when applied to Fred2XXX this would generate Sam2YYY. \\0 When replacing, the whole matching text. \\b This matches a word boundary. \\c A backslash followed by d, D, s, S, w or W, becomes a character class (both inside and outside sets []). * d: decimal digits * D: any char except decimal digits * s: whitespace (space, \\t \\n \\r \\f \\v) * S: any char except whitespace (see above) * w: alphanumeric & underscore * W: any char except alphanumeric & underscore \\x This allows you to use a character x that would otherwise have a special meaning. For example, \\[ would be interpreted as [ and not as the start of a character set. Use \\\\ for a literal backslash. [...] Matches one of the characters in the set. If the first character in the set is ^, it matches the characters NOT in the set, i.e. complements the set. A shorthand S-E (start dash end) is used to specify a set of characters S up to E, inclusive. The special characters ] and - have no special meaning if they appear first in the set. - can also be last in the set. To include both, put ] first: []A-Z-]. Examples:: []|-] matches these 3 chars []-|] matches from ] to | chars [a-z] any lowercase alpha [^]-] any char except - and ] [^A-Z] any char except uppercase alpha [a-zA-Z] any alpha ^ 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. \? This matches 0 or 1 time(s). For example, Joh?n matches John, Jon. ======= ============================================================ .. note:: This table is adapted from Scintilla and SciTE documentation, distributed under the `License for Scintilla and SciTE`_. View menu --------- The View menu allows various elements of the main window to be shown or hidden, and also provides various display-related editor options. Color schemes menu ^^^^^^^^^^^^^^^^^^ The Color schemes menu is available under the *View->Editor* submenu. It lists various color schemes for editor highlighting styles, including the default scheme first. Other items are available based on what color scheme files Geany found at startup. Color scheme files are read from the `Configuration file paths`_ under the ``colorschemes`` subdirectory. They should have the extension ``.conf``. The default color scheme is read from ``filetypes.common``. The `[named_styles] section`_ and `[named_colors] section`_ are the same as for ``filetypes.common``. The ``[theme_info]`` section can contain information about the theme. The ``name`` and ``description`` keys are read to set the menu item text and tooltip, respectively. These keys can have translations, e.g.:: key=Hello key[de]=Hallo key[fr_FR]=Bonjour Tags ---- Tags are information that relates symbols in a program with the source file location of the declaration and definition. Geany has built-in functionality for generating tag information (aka "workspace tags") for supported filetypes when you open a file. You can also have Geany automatically load external tag files (aka "global tags files") upon startup, or manually using *Tools --> Load Tags*. Geany uses its own tag file format, similar to what ``ctags`` uses (but is incompatible with ctags). You use Geany to generate global tags files, as described below. Workspace tags ^^^^^^^^^^^^^^ Tags for each document are parsed whenever a file is loaded, saved or modified (see *Symbol list update frequency* preference in the `Editor Completions preferences`_). These are shown in the Symbol list in the Sidebar. These tags are also used for autocompletion of symbols and calltips for all documents open in the current session that have the same filetype. The *Go to Tag* commands can be used with all workspace tags. See `Go to tag definition`_. Global tags ^^^^^^^^^^^ Global tags are used to provide autocompletion of symbols 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 Tools menu. * By moving or symlinking tags files to the ``tags`` subdirectory of one of the `configuration file paths`_ before starting Geany. You can either download these files or generate your own. They have the format:: name.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 * Pascal * PHP * HTML -- &symbol; completion, e.g. for ampersand, copyright, etc. * LaTeX * Python Global tags file format ``````````````````````` Global tags files can have two different formats: * Tagmanager format * Pipe-separated format The first line of global tags files should be a comment, introduced by ``#`` followed by a space and a string like ``format=pipe`` or ``format=tagmanager`` respectively, these are case-sensitive. This helps Geany to read the file properly. If this line is missing, Geany tries to auto-detect the used format but this might fail. The Tagmanager format is a bit more complex and is used for files created by the ``geany -g`` command. There is one tag per line. Different tag attributes like the return value or the argument list are separated with different characters indicating the type of the following argument. Pipe-separated format ********************* The Pipe-separated format is easier to read and write. There is one tag per line and different tag attributes are separated by the pipe character (``|``). A line looks like:: basename|string|(string path [, string suffix])| | The first field is the tag name (usually a function name). | The second field is the type of the return value. | The third field is the argument list for this tag. | The fourth field is the description for this tag but currently unused and should be left empty. Except for the first field (tag name), all other field can be left empty but the pipe separator must appear for them. You can easily write your own global tag files using this format. Just save them in your tags directory, as described earlier in the section `Global tags`_. Generating a global tags file ````````````````````````````` You can generate your own global tags files by parsing a list of source files. The command is:: geany -g [-P] * Tag File filename 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). * ``-P`` or ``--no-preprocessing`` disables using the C pre-processor to process ``#include`` directives for C/C++ source files. Use this option if you want to specify each source file on the command-line instead of using a 'master' header file. Also can be useful if you don't want to specify the CFLAGS environment variable. 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 ************************** You may need to first setup the `C ignore.tags`_ file. For C/C++ tag files gcc is required by default, so that header files can be preprocessed to include any other headers they depend upon. If you do not want this, use the ``-P`` option described above. For preprocessing, 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. Generating tag files on Windows ******************************* This works basically the same as on other platforms:: "c:\program files\geany\bin\geany" -g c:\mytags.php.tags c:\code\somefile.php C ignore.tags ^^^^^^^^^^^^^ You can ignore certain tags for C-based languages if they would lead to wrong parsing of the code. Use the *Tools->Configuration Files->ignore.tags* menu item to open the user ``ignore.tags`` file. See also `Configuration file paths`_. List all tag names you want to ignore in this file, separated by spaces and/or newlines. Example:: G_GNUC_NULL_TERMINATED G_GNUC_PRINTF G_GNUC_WARN_UNUSED_RESULT This will parse code like: ``gchar **utils_strv_new(const gchar *first, ...) G_GNUC_NULL_TERMINATED;`` More detailed information about ignore tags usage from the Exuberant Ctags manual page: Specifies a list of identifiers which are to be specially handled while parsing C and C++ source files. This option is specifically provided to handle special cases arising through the use of pre-processor macros. When the identifiers listed are simple identifiers, these identifiers will be ignored during parsing of the source files. If an identifier is suffixed with a '+' character, ctags will also ignore any parenthesis-enclosed argument list which may immediately follow the identifier in the source files. If two identifiers are separated with the '=' character, the first identifiers is replaced by the second identifiers for parsing purposes. For even more detailed information please read the manual page of Exuberant Ctags. Geany extends Ctags with a '*' character suffix - this means use prefix matching, e.g. G_GNUC_* will match G_GNUC_NULL_TERMINATED, etc. Note that prefix match items should be put after other items to ensure that items like G_GNUC_PRINTF+ get parsed correctly. 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 comes after the screenshot of that tab. General Startup preferences ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. image:: ./images/pref_dialog_gen_startup.png Startup ``````` Load files from the last session On startup, load the same files you had open the last time you used Geany. Load virtual terminal support Load the library for running a terminal in the message window area. Enable plugin support Allow plugins to be used in Geany. Shutdown ```````` Save window position and geometry Save the current position and size of the main window so next time you open Geany it's in the same location. Confirm Exit Have a dialog pop up to confirm that you really want to quit Geany. Paths ````` Startup path Path to start in when opening or saving files. It must be an absolute path. Project files Path to start in when opening project files. Extra plugin path By default Geany looks in the system installation and the user configuration - see `Plugins`_. In addition the path entered here will be searched. Usually you do not need to set an additional path to search for plugins. It might be useful when Geany is installed on a multi-user machine and additional plugins are available in a common location for all users. Leave blank to not set an additional lookup path. General Miscellaneous preferences ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. image:: ./images/pref_dialog_gen_misc.png Miscellaneous ````````````` Beep on errors when compilation has finished Have the computer make a beeping sound when compilation of your program has completed or any errors occurred. Switch status message list at new message Switch to the status message tab (in the notebook window at the bottom) once a new status message arrives. Suppress status messages in the status bar Remove all messages from the status bar. The messages are still displayed in the status messages window. .. tip:: Another option is to use the *Switch to Editor* keybinding - it reshows the document statistics on the status bar. See `Focus keybindings`_. Use Windows File Open/Save dialogs Defines whether to use the native Windows File Open/Save dialogs or whether to use the GTK default dialogs. Auto-focus widgets (focus follows mouse) Give the focus automatically to widgets below the mouse cursor. This works for the main editor widget, the scribble, the toolbar search field goto line fields and the VTE. Search `````` Always wrap search Always wrap search around the document when finding a match. Hide the Find dialog Hide the `Find`_ dialog after clicking Find Next/Previous. Use the current word under the cursor for Find dialogs Use current word under the cursor when opening the Find, Find in Files or Replace dialog and there is no selection. When this option is disabled, the search term last used in the appropriate Find dialog is used. Use the current file's directory for Find in Files When opening the Find in Files dialog, set the directory to search to the directory of the current active file. When this option is disabled, the directory of the last use of the Find in Files dialog is used. See `Find in Files`_ for details. Projects ```````` Use project-based session files Save your current session when closing projects. You will be able to resume different project sessions, automatically opening the files you had open previously. Store project file inside the project base directory When creating new projects, the default path for the project file contains the project base path. Without this option enabled, the default project file path is one level above the project base path. In either case, you can easily set the final project file path in the *New Project* dialog. This option provides the more common defaults automatically for convenience. Interface preferences ^^^^^^^^^^^^^^^^^^^^^ .. image:: ./images/pref_dialog_interface_interface.png Sidebar ``````` Show sidebar Whether to show the sidebar at all. Show symbol list Show the list of functions, variables, and other information in the current document you are editing. Show documents list Show all the documents you have open currently. This can be used to change between documents (see `Switching between documents`_) and to perform some common operations such as saving, closing and reloading. Position Whether to place the sidebar on the left or right of the editor window. Fonts ````` Editor Change the font used to display documents. Symbol list Change the font used for the Symbols sidebar tab. Message window Change the font used for the message window area. Miscellaneous ````````````` Show status bar Show the status bar at the bottom of the main window. It gives information about the file you are editing like the line and column you are on, whether any modifications were done, the file encoding, the filetype and other information. Interface Notebook tab preferences ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. image:: ./images/pref_dialog_interface_notebook.png Editor tabs ``````````` Show editor tabs Show a notebook tab for all documents so you can switch between them using the mouse (instead of using the Documents window). Show close buttons Make each tab show a close button so you can easily close open documents. Placement of new file tabs Whether to create a document with its notebook tab to the left or right of all existing tabs. Next to current Whether to place file tabs next to the current tab rather than at the edges of the notebook. Double-clicking hides all additional widgets Whether to call the View->Toggle All Additional Widgets command when double-clicking on a notebook tab. Tab positions ````````````` Editor Set the positioning of the editor's notebook tabs to the right, left, top, or bottom of the editing window. Sidebar Set the positioning of the sidebar's notebook tabs to the right, left, top, or bottom of the sidebar window. Message window Set the positioning of the message window's notebook tabs to the right, left, top, or bottom of the message window. Interface Toolbar preferences ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Affects the main toolbar underneath the menu bar. .. image:: ./images/pref_dialog_interface_toolbar.png Toolbar ``````` Show Toolbar Whether to show the toolbar. Append Toolbar to the Menu Allows to append the toolbar to the main menu bar instead of placing it below. This is useful to save vertical space. Customize Toolbar See `Customizing the toolbar`_. Appearance `````````` Icon Style Select the toolbar icon style to use - either icons and text, just icons or just text. The choice System default uses whatever icon style is set by GTK. Icon size Select the size of the icons you see (large, small or very small). The choice System default uses whatever icon size is set by GTK. Editor Features preferences ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. image:: ./images/pref_dialog_edit_features.png Features ```````` Line wrapping Show long lines wrapped around to new display lines. .. _smart_home_key: "Smart" home key Whether to move the cursor to the first non-whitespace character on the line when you hit the home key on your keyboard. Pressing it again will go to the very start of the line. Disable Drag and Drop Do not allow the dragging and dropping of selected text in documents. Code folding Allow groups of lines in a document to be collapsed for easier navigation/editing. Fold/Unfold all children of a fold point Whether to fold/unfold all child fold points when a parent line is folded. Use indicators to show compile errors Underline lines with compile errors using red squiggles to indicate them in the editor area. Newline strips trailing spaces Remove any whitespace at the end of the line when you hit the Enter/Return key. See also `Strip trailing spaces`_. Line breaking column The editor column number to insert a newline at when Line Breaking is enabled for the current document. Comment toggle marker A string which is added when toggling a line comment in a source file. It is used to mark the comment as toggled. Editor Indentation preferences ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. image:: ./images/pref_dialog_edit_indentation.png Indentation group ````````````````` See `Indentation`_ for more information. Width The width of a single indent size in spaces. By default the indent size is equivalent to 4 spaces. Detect width from file Try to detect and set the indent width based on file content, when a file is opened. Type When Geany inserts indentation, whether to use: * Just Tabs * Just Spaces * Tabs and Spaces, depending on how much indentation is on a line The *Tabs and Spaces* indent type is also known as *Soft tab support* in some other editors. Detect type from file Try to detect and set the indent type based on file content, when a file is opened. Auto-indent mode The type of auto-indentation you wish to use after pressing Enter, if any. Basic Just add the indentation of the previous line. Current chars Add indentation based on the current filetype and any characters at the end of the line such as ``{``, ``}`` for C, ``:`` for Python. Match braces Like *Current chars* but for C-like languages, make a closing ``}`` brace line up with the matching opening brace. Tab key indents If set, pressing tab will indent the current line or selection, and unindent when pressing Shift-tab. Otherwise, the tab key will insert a tab character into the document (which can be different from indentation, depending on the indent type). .. note:: There are also separate configurable keybindings for indent & unindent, but this preference allows the tab key to have different meanings in different contexts - e.g. for snippet completion. Editor Completions preferences ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. image:: ./images/pref_dialog_edit_completions.png Completions ``````````` Snippet Completion Whether to replace special keywords after typing Tab into a pre-defined text snippet. See `User-definable snippets`_. XML/HTML tag auto-closing When you open an XML/HTML tag automatically generate its completion tag. Automatic continuation multi-line comments Continue automatically multi-line comments in languages like C, C++ and Java when a new line is entered inside such a comment. With this option enabled, Geany will insert a ``*`` on every new line inside a multi-line comment, for example when you press return in the following C code:: /* * This is a C multi-line comment, press then Geany would insert:: * on the next line with the correct indentation based on the previous line, as long as the multi-line is not closed by ``*/``. Autocomplete symbols When you start to type a symbol name, look for the full string to allow it to be completed for you. Autocomplete all words in document When you start to type a word, Geany will search the whole document for words starting with the typed part to complete it, assuming there are no tag names to show. Drop rest of word on completion Remove any word part to the right of the cursor when choosing a completion list item. Characters to type for autocompletion Number of characters of a word to type before autocompletion is displayed. Completion list height The number of rows to display for the autocompletion window. Max. symbol name suggestions The maximum number of items in the autocompletion list. Symbol list update frequency The minimum delay (in milliseconds) between two symbol list updates. This option determines how frequently the tag list is updated for the current document. The smaller the delay, the more up-to-date the symbol list (and then the completions); but rebuilding the symbol list has a cost in performance, especially with large files. The default value is 250ms, which means the symbol list will be updated at most four times per second, even if the document changes continuously. A value of 0 disables automatic updates, so the symbol list will only be updated upon document saving. Auto-close quotes and brackets `````````````````````````````` Geany can automatically insert a closing bracket and quote characters when you open them. For instance, you type a ``(`` and Geany will automatically insert ``)``. With the following options, you can define for which characters this should work. Parenthesis ( ) Auto-close parenthesis when typing an opening one Curly brackets { } Auto-close curly brackets (braces) when typing an opening one Square brackets [ ] Auto-close square brackets when typing an opening one Single quotes ' ' Auto-close single quotes when typing an opening one Double quotes " " Auto-close double quotes when typing an opening one Editor Display preferences ^^^^^^^^^^^^^^^^^^^^^^^^^^ This is for visual elements displayed in the editor window. .. image:: ./images/pref_dialog_edit_display.png Display ``````` Invert syntax highlighting colors Invert all colors, by default this makes white text on a black background. Show indendation guides Show vertical lines to help show how much leading indentation there is on each line. Show whitespaces Mark all tabs with an arrow "-->" symbol and spaces with dots to show which kinds of whitespace are used. Show line endings Display a symbol everywhere that a carriage return or line feed is present. Show line numbers Show or hide the Line Number margin. Show markers margin Show or hide the small margin right of the line numbers, which is used to mark lines. Stop scrolling at last line When enabled Geany stops scrolling when at the last line of the document. Otherwise you can scroll one more page even if there are no real lines. Long line marker ```````````````` The long line marker helps to indicate overly-long lines, or as a hint to the user for when to break the line. Type Line Show a thin vertical line in the editor window at the given column position. Background Change the background color of characters after the given column position to the color set below. (This is recommended over the *Line* setting if you use proportional fonts). Disabled Don't mark long lines at all. Long line marker Set this value to a value greater than zero to specify the column where it should appear. Long line marker color Set the color of the long line marker. Virtual spaces `````````````` Virtual space is space beyond the end of each line. The cursor may be moved into virtual space but no real space will be added to the document until there is some text typed or some other text insertion command is used. Disabled Do not show virtual spaces Only for rectangular selections Only show virtual spaces beyond the end of lines when drawing a rectangular selection Always Always show virtual spaces beyond the end of lines Files preferences ^^^^^^^^^^^^^^^^^ .. image:: ./images/pref_dialog_files.png New files ````````` Open new documents from the command-line Whether to create new documents when passing filenames that don't exist from the command-line. Default encoding (new files) The type of file encoding you wish to use when creating files. Used fixed encoding when opening files Assume all files you are opening are using the type of encoding specified below. Default encoding (existing files) Opens all files with the specified encoding instead of auto-detecting it. Use this option when it's not possible for Geany to detect the exact encoding. Default end of line characters The end of line characters to which should be used for new files. On Windows systems, you generally want to use CR/LF which are the common characters to mark line breaks. On Unix-like systems, LF is default and CR is used on MAC systems. Saving files ```````````` Perform formatting operations when a document is saved. These can each be undone with the Undo command. Ensure newline at file end Add a newline at the end of the document if one is missing. Ensure consistent line endings Ensures that newline characters always get converted before saving, avoiding mixed line endings in the same file. .. _Strip trailing spaces: Strip trailing spaces Remove any whitespace at the end of each document line. .. note:: This does not apply to Diff documents, e.g. patch files. Replace tabs by space Replace all tabs in the document with the equivalent number of spaces. .. note:: It is better to use spaces to indent than use this preference - see `Indentation`_. Miscellaneous ````````````` Recent files list length The number of files to remember in the recently used files list. Disk check timeout The number of seconds to periodically check the current document's file on disk in case it has changed. Setting it to 0 will disable this feature. .. note:: These checks are only performed on local files. Remote files are not checked for changes due to performance issues (remote files are files in ``~/.gvfs/``). Tools preferences ^^^^^^^^^^^^^^^^^ .. image:: ./images/pref_dialog_tools.png Tool paths `````````` Terminal The command to execute a script in a terminal. Occurrences of %c in the command are substituted with the run script name, see `Terminal emulators`_. Browser The location of your web browser executable. Grep The location of the grep executable. .. note:: For Windows users: at the time of writing it is recommended to use the grep.exe from the UnxUtils project (http://sourceforge.net/projects/unxutils). The grep.exe from the Mingw project for instance might not work with Geany at the moment. Commands ```````` Context action Set this to a command to execute on the current word. You can use the "%s" wildcard to pass the current word below the cursor to the specified command. Template preferences ^^^^^^^^^^^^^^^^^^^^ This data is used as meta data for various template text to insert into a document, such as the file header. You only need to set fields that you want to use in your template files. .. image:: ./images/pref_dialog_templ.png Template data ````````````` Developer The name of the developer who will be creating files. Initials The initials of the developer. Mail address The email address of the developer. .. note:: You may wish to add anti-spam markup, e.g. ``namesiteext``. Company The company the developer is working for. Initial version The initial version of files you will be creating. Year Specify a format for the the {year} wildcard. You can use any conversion specifiers which can be used with the ANSI C strftime function. For details please see http://man.cx/strftime. Date Specify a format for the the {date} wildcard. You can use any conversion specifiers which can be used with the ANSI C strftime function. For details please see http://man.cx/strftime. Date & Time Specify a format for the the {datetime} wildcard. You can use any conversion specifiers which can be used with the ANSI C strftime function. For details please see http://man.cx/strftime. Keybinding preferences ^^^^^^^^^^^^^^^^^^^^^^ .. image:: ./images/pref_dialog_keys.png There are some commands listed in the keybinding dialog that are not, by default, bound to a key combination, and may not be available as a menu item. .. note:: For more information see the section `Keybindings`_. Printing preferences ^^^^^^^^^^^^^^^^^^^^ .. image:: ./images/pref_dialog_printing.png Use external command for printing Use a system command to print your file out. Use native GTK printing Let the GTK GUI toolkit handle your print request. Print line numbers Print the line numbers on the left of your paper. Print page number Print the page number on the bottom right of your paper. Print page header Print a header on every page that is sent to the printer. Use base name of the printed file Don't use the entire path for the header, only the filename. Date format How the date should be printed. You can use the same format specifiers as in the ANSI C function strftime(). For details please see http://man.cx/strftime. Various preferences ^^^^^^^^^^^^^^^^^^^ .. image:: ./images/pref_dialog_various.png Rarely used preferences, explained in the table below. A few of them require restart to take effect, and a few other will only affect newly opened or created documents before restart. ================================ ========================================= ========== =========== Key Description Default Applies ================================ ========================================= ========== =========== **Editor related** use_gtk_word_boundaries Whether to look for the end of a word true to new when using word-boundary related documents Scintilla commands (see `Scintilla keyboard commands`_). brace_match_ltgt Whether to highlight <, > angle brackets. false immediately complete_snippets_whilst_editing Whether to allow completion of snippets false immediately when editing an existing line (i.e. there is some text after the current cursor position on the line). Only used when the keybinding `Complete snippet` is set to ``Space``. show_editor_scrollbars Whether to display scrollbars. If set to true immediately false, the horizontal and vertical scrollbars are hidden completely. indent_hard_tab_width The size of a tab character. Don't change 8 immediately it unless you really need to; use the indentation settings instead. **Interface related** show_symbol_list_expanders Whether to show or hide the small true to new expander icons on the symbol list documents treeview. allow_always_save Whether files can be saved always, even false immediately if they don't have any changes. By default, the Save button and menu item are disabled when a file is unchanged. When setting this option to true, the Save button and menu item are always active and files can be saved. compiler_tab_autoscroll Whether to automatically scroll to the true immediately last line of the output in the Compiler tab. statusbar_template The status bar statistics line format. See below. immediately (Search in src/ui_utils.c for details). new_document_after_close Whether to open a new document after all false immediately documents have been closed. msgwin_status_visible Whether to show the Status tab in the true immediately Messages Window msgwin_compiler_visible Whether to show the Compiler tab in the true immediately Messages Window msgwin_messages_visible Whether to show the Messages tab in the true immediately Messages Window msgwin_scribble_visible Whether to show the Scribble tab in the true immediately Messages Window ================================ ========================================= ========== =========== By default, statusbar_template is empty. This tells Geany to use its internal default, which is currently: ``line: %l / %L\t col: %c\t sel: %s\t %w %t %mmode: %M encoding: %e filetype: %f scope: %S`` Note that ``\t`` = tab. ================================ =========================================== ========== =========== Key Description Default Applies ================================ =========================================== ========== =========== **VTE related** emulation Terminal emulation mode. Only change this xterm immediately if you have VTE termcap files other than ``vte/termcap/xterm``. send_selection_unsafe By default, Geany strips any trailing false immediately newline characters from the current selection before sending it to the terminal to not execute arbitrary code. This is mainly a security feature. If, for whatever reasons, you really want it to be executed directly, set this option to true. send_cmd_prefix String with which prefix the commands sent Empty immediately to the shell. This may be used to tell some shells (BASH with ``HISTCONTROL`` set to ``ignorespace``, ZSH with ``HIST_IGNORE_SPACE`` enabled, etc.) from putting these commands in their history by setting this to a space. Note that leading spaces must be escaped using `\s` in the configuration file. **File related** use_atomic_file_saving Defines the mode how Geany saves files to false immediately disk. If disabled, Geany directly writes the content of the document to disk. This might cause loss of data when there is no more free space on disk to save the file. When set to true, Geany first saves the contents into a temporary file and if this succeeded, the temporary file is moved to the real file to save. This gives better error checking in case of no more free disk space. But it also destroys hard links of the original file and its permissions (e.g. executable flags are reset). Use this with care as it can break things seriously. The better approach would be to ensure your disk won't run out of free space. use_gio_unsafe_file_saving Whether to use GIO as the unsafe file true immediately saving backend. It is better on most situations but is known not to work correctly on some complex setups. gio_unsafe_save_backup Make a backup when using GIO unsafe file false immediately saving. Backup is named `filename~`. **Filetype related** extract_filetype_regex Regex to extract filetype name from file See below. immediately via capture group one. **Search related** find_selection_type See `Find selection`_. 0 immediately **Build Menu related** number_ft_menu_items The maximum number of menu items in the 2 on restart filetype section of the Build menu. number_non_ft_menu_items The maximum number of menu items in the 3 on restart independent section of the Build menu. number_exec_menu_items The maximum number of menu items in the 2 on restart execute section of the Build menu. ================================ =========================================== ========== =========== The extract_filetype_regex has the default value GEANY_DEFAULT_FILETYPE_REGEX. Terminal (VTE) preferences ^^^^^^^^^^^^^^^^^^^^^^^^^^ See also: `Virtual terminal emulator widget (VTE)`_. .. image:: ./images/pref_dialog_vte.png Terminal widget ``````````````` Terminal font Select the font that will be used in the terminal emulation control. Foreground color Select the font color. Background color Select the background color of the terminal. Background image Select the background image to show behind the terminal's text. Scrollback lines The number of lines buffered so that you can scroll though the history. Shell The location of the shell on your system. Scroll on keystroke Scroll the terminal to the prompt line when pressing a key. Scroll on output Scroll the output down. Cursor blinks Let the terminal cursor blink. Override Geany keybindings Allow the VTE to receive keyboard shortcuts (apart from focus commands). Disable menu shortcut key (F10 by default) Disable the menu shortcut when you are in the virtual terminal. Follow path of the current file Make the path of the terminal change according to the path of the current file. Execute programs in VTE Execute programs in the virtual terminal instead of using the external terminal tool. Note that if you run multiple execute commands at once the output may become mixed together in the VTE. Don't use run script Don't use the simple run script which is usually used to display the exit status of the executed program. This can be useful if you already have a program running in the VTE like a Python console (e.g. ipython). Use this with care. Project management ------------------ Project management is optional in Geany. Currently it can be used for: * Storing and opening session files on a project basis. * Overriding default settings with project equivalents. * Configuring the Build menu on a project basis. A list of session files can be stored and opened with the project when the *Use project-based session files* preference is enabled, in the *Project* group of the `Preferences`_ dialog. As long as a project is open, the Build menu will use the items defined in project's settings, instead of the defaults. See `Build Menu Configuration`_ for information on configuring the menu. 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. The project menu items are detailed below. 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. Currently it's only used for a template wildcard - see `Template wildcards`_. The *Base path* field is used as the directory to run the Build menu commands. The specified path can be an absolute path or it is considered to be relative to the project's file name. The *File patterns* field allows to specify a list of file patterns for the project, which can be used in the `Find in files`_ dialog. The *Indentation* tab allows you to override the default `Indentation`_ settings. Open project ^^^^^^^^^^^^ The Open command displays a standard file chooser, starting in ``~/projects``. Choose a project file named with the ``.geany`` extension. When project session support is enabled, Geany will close the currently open files and open the session files associated with the project. Close project ^^^^^^^^^^^^^ Project file settings are saved when the project is closed. When project session support is enabled, Geany will close the project session files and open any previously closed default session files. Build menu ---------- After editing code with Geany, the next step is to compile, link, build, interpret, run etc. As Geany supports many languages each with a different approach to such operations, and as there are also many language independent software building systems, Geany does not have a built-in build system, nor does it limit which system you can use. Instead the build menu provides a configurable and flexible means of running any external commands to execute your preferred build system. This section provides a description of the default configuration of the build menu and then covers how to configure it, and where the defaults fit in. Running the commands from within Geany has two benefits: * The current file is automatically saved before the command is run. * The output is captured in the Compiler notebook tab and parsed for warnings or errors. Warnings and errors that can be parsed for line numbers will be shown in red in the Compiler tab and you can click on them to switch to the relevant source file (or open it) and mark the line number. Also lines with warnings or errors are marked in the source, see `Indicators`_ below. .. tip:: If Geany's default error message parsing does not parse errors for the tool you're using, you can set a custom regex in the Build Commands Dialog, see `Build Menu Configuration`_. Indicators ^^^^^^^^^^ Indicators are red squiggly underlines which are used to highlight errors which occurred while compiling the current file. So you can easily see where your code failed to compile. You can remove them by selecting *Remove Error Indicators* in the Document menu. If you do not like this feature, you can disable it - see `Editor Features preferences`_. Default build menu items ^^^^^^^^^^^^^^^^^^^^^^^^ Depending on the current file's filetype, the default Build menu will contain the following items: * Compile * Build * Make All * Make Custom Target * Make Object * Next Error * Previous Error * Execute * Set Build Menu Commands Compile ``````` The Compile command has different uses for different kinds of files. For compilable languages such as C and C++, the Compile command is set up 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 if that is not available 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. .. note:: If you need complex settings for your build system, or several different settings, then writing a Makefile and using the Make commands is recommended; this will also make it easier for users to build your software. Make ```` This runs "make" in the same directory as the current file. Make custom target `````````````````` This is similar to running 'Make' 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 the filename for 'current_file'. It is useful for building just the current file without building the whole project. Next error `````````` The next error item will move to the next detected error in the file. Previous error `````````````` The previous error item will move to the previous detected error in the file. Execute ``````` Execute will run the corresponding executable file, shell script or interpreted script in a terminal window. The command set in the "Set Build Commands" dialog is run in a script to ensure the terminal stays open after execution completes. Note: see `Terminal emulators`_ below for the command format. Alternatively the built-in VTE can be used if it is available - see `Virtual terminal emulator widget (VTE)`_. After your program or script has finished executing, the run script will prompt you to press the return key. This allows you to review any text output from the program before the terminal window is closed. .. note:: The execute command output is not parsed for errors. Stopping running processes `````````````````````````` When there is a running program, the Execute menu item in the menu and the Run button in the toolbar each become a stop button so you can stop the current running program (and any child processes). This works by sending the SIGQUIT signal to the process. Depending on the process you started it is possible that the process cannot be stopped. For example this can happen when the process creates more than one child process. Terminal emulators ****************** The Terminal field of the tools preferences tab requires a command to execute the terminal program and to pass it the name of the Geany run script that it should execute in a Bourne compatible shell (eg /bin/sh). The marker "%c" is substituted with the name of the Geany run script, which is created in the working directory set in the Build commands dialog, see `Build menu commands dialog`_ for details. As an example the default (Linux) command is:: xterm -e "/bin/sh %c" Set build commands `````````````````` By default Compile, Build and Execute are fairly basic commands. You may wish to customise them using *Set Build Commands*. E.g. for C 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. Build menu configuration ^^^^^^^^^^^^^^^^^^^^^^^^ The build menu has considerable flexibility and configurability, allowing both menu labels the commands they execute and the directory they execute in to be configured. For example, if you change one of the default make commands to run say 'waf' you can also change the label to match. These settings are saved automatically when Geany is shut down. The build menu is divided into four groups of items each with different behaviors: * Filetype build commands - are configurable and depend on the filetype of the current document; they capture output in the compiler tab and parse it for errors. * Independent build commands - are configurable and mostly don't depend on the filetype of the current document; they also capture output in the compiler tab and parse it for errors. * Execute commands - are configurable and intended for executing your program or other long running programs. The output is not parsed for errors and is directed to the terminal command selected in preferences. * Fixed commands - these perform built-in actions: * Go to the next error. * Go to the previous error. * Show the build menu commands dialog. The maximum numbers of items in each of the configurable groups can be configured in the `Various preferences`_. Even though the maximum number of items may have been increased, only those menu items that have values configured are shown in the menu. The groups of menu items obtain their configuration from four potential sources. The highest priority source that has the menu item defined will be used. The sources in decreasing priority are: * A project file if open * The user preferences * The system filetype definitions * The defaults The detailed relationships between sources and the configurable menu item groups is shown in the following table. +--------------+---------------------+--------------------------+-------------------+-------------------------------+ | Group | Project File | Preferences | System Filetype | Defaults | +==============+=====================+==========================+===================+===============================+ | Filetype | Loads From: project | Loads From: | Loads From: | None | | | file | filetypes.xxx file in | filetypes.xxx in | | | | | ~/.config/geany/filedefs | Geany install | | | | Saves To: project | | | | | | file | Saves to: as above, | Saves to: as user | | | | | creating if needed. | preferences left. | | +--------------+---------------------+--------------------------+-------------------+-------------------------------+ | Filetype | Loads From: project | Loads From: | Loads From: | 1: | | Independent | file | geany.conf file in | filetypes.xxx in | Label: _Make | | | | ~/.config/geany | Geany install | Command: make | | | Saves To: project | | | | | | file | Saves to: as above, | Saves to: as user | 2: | | | | creating if needed. | preferences left. | Label: Make Custom _Target | | | | | | Command: make | | | | | | | | | | | | 3: | | | | | | Label: Make _Object | | | | | | Command: make %e.o | +--------------+---------------------+--------------------------+-------------------+-------------------------------+ | Execute | Loads From: project | Loads From: | Loads From: | Label: _Execute | | | file or else | geany.conf file in | filetypes.xxx in | Command: ./%e | | | filetype defined in | ~/.config/geany or else | Geany install | | | | project file | filetypes.xxx file in | | | | | | ~/.config/geany/filedefs | Saves To: as user | | | | Saves To: | | preferences left. | | | | project file | Saves To: | | | | | | filetypes.xxx file in | | | | | | ~/.config/geany/filedefs | | | +--------------+---------------------+--------------------------+-------------------+-------------------------------+ The following notes on the table reference cells by coordinate as (group,source): * General - for filetypes.xxx substitute the appropriate extension for the filetype of the current document for xxx - see `filenames`_. * System Filetypes - Labels loaded from these sources are locale sensitive and can contain translations. * (Filetype, Project File) and (Filetype, Preferences) - preferences use a full filetype file so that users can configure all other filetype preferences as well. Projects can only configure menu items per filetype. Saving in the project file means that there is only one file per project not a whole directory. * (Filetype-Independent, System Filetype) - although conceptually strange, defining filetype-independent commands in a filetype file, this provides the ability to define filetype dependent default menu items. * (Execute, Project File) and (Execute, Preferences) - the project independent execute and preferences independent execute commands can only be set by hand editing the appropriate file, see `Preferences file format`_ and `Project file format`_. Build menu commands dialog ^^^^^^^^^^^^^^^^^^^^^^^^^^ Most of the configuration of the build menu is done through the Build Menu Commands Dialog. You edit the configuration sourced from preferences in the dialog opened from the Build->Build Menu Commands item and you edit the configuration from the project in the build tab of the project preferences dialog. Both use the same form shown below. .. image:: ./images/build_menu_commands_dialog.png The dialog is divided into three sections: * Filetype build commands (selected based on the current document's filetype). * Independent build commands (available regardless of filetype). * Filetype execute commands. The filetype and independent sections also each contain a field for the regular expression used for parsing command output for error and warning messages. The columns in the first three sections allow setting of the label, command, and working directory to run the command in. An item with an empty label will not be shown in the menu. An empty working directory will default to the directory of the current document. If there is no current document then the command will not run. The dialog will always show the command selected by priority, not just the commands configured in this configuration source. This ensures that you always see what the menu item is going to do if activated. If the current source of the menu item is higher priority than the configuration source you are editing then the command will be shown in the dialog but will be insensitive (greyed out). This can't happen with the project source but can with the preferences source dialog. The clear buttons remove the definition from the configuration source you are editing. When you do this the command from the next lower priority source will be shown. To hide lower priority menu items without having anything show in the menu configure with a nothing in the label but at least one character in the command. Substitutions in commands and working directories ````````````````````````````````````````````````` The first occurence of each of the following character sequences in each of the command and working directory fields is substituted by the items specified below before the command is run. * %d - substituted by the absolute path to the directory of the current file. * %e - substituted by the name of the current file without the extension or path. * %f - substituted by the name of the current file without the path. * %p - if a project is open, substituted by the base path from the project. .. note:: If the basepath set in the project preferences is not an absolute path , then it is taken as relative to the directory of the project file. This allows a project file stored in the source tree to specify all commands and working directories relative to the tree itself, so that the whole tree including the project file, can be moved and even checked into and out of version control without having to re-configure the build menu. Build menu keyboard shortcuts ````````````````````````````` Keyboard shortcuts can be defined for the first two filetype menu items, the first three independent menu items, the first two execute menu items and the fixed menu items. In the keybindings configuration dialog (see `Keybinding preferences`_) these items are identified by the default labels shown in the `Build Menu`_ section above. It is currently not possible to bind keyboard shortcuts to more than these menu items. You can also use underlines in the labels to set mnemonic characters. Old settings ```````````` The configurable Build Menu capability was introduced in Geany 0.19 and required a new section to be added to the configuration files (See `Preferences file format`_). Geany will still load older format project, preferences and filetype file settings and will attempt to map them into the new configuration format. There is not a simple clean mapping between the formats. The mapping used produces the most sensible results for the majority of cases. However, if they do not map the way you want, you may have to manually configure some settings using the Build Commands Dialog or the Build tab of the project preferences dialog. Any setting configured in either of these dialogs will override settings mapped from older format configuration files. Printing support ---------------- Since Geany 0.13 there has been printing support using GTK's printing API. The printed page(s) will look nearly the same as on your screen in Geany. Additionally, there are some options to modify the printed page(s). .. note:: The background text color is set to white, except for text with a white foreground. This allows dark color schemes to save ink when printing. You can define whether to print line numbers, page numbers at the bottom of each page and whether to print a page header on each page. This header contains the filename of the printed document, the current page number and the date and time of printing. By default, the file name of the document with full path information is added to the header. If you prefer to add only the basename of the file(without any path information) you can set it in the preferences dialog. You can also adjust the format of the date and time added to the page header. The available conversion specifiers are the same as the ones which can be used with the ANSI C strftime function. All of these settings can also be changed in the print dialog just before actual printing is done. On Unix-like systems the provided print dialog offers a print preview. The preview file is opened with a PDF viewer and by default GTK uses ``evince`` for print preview. If you have not installed evince or just want to use another PDF viewer, you can change the program to use in the file ``.gtkrc-2.0`` (usually found in your home directory). Simply add a line like:: gtk-print-preview-command = "epdfview %f" at the end of the file. Of course, you can also use xpdf, kpdf or whatever as the print preview command. Geany also provides an alternative basic printing support using a custom print command. 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 many 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. Plugins ------- Plugins are loaded at startup, if the *Enable plugin support* general preference is set. There is also a command-line option, ``-p``, which prevents plugins being loaded. Plugins are scanned in the following directories: * ``$prefix/lib/geany`` on Unix-like systems (see `Installation prefix`_) * The ``lib`` subfolder of the installation path on Windows. * The ``plugins`` subfolder of the user configuration directory - see `Configuration file paths`_. * The `Extra plugin path` preference (usually blank) - see `Paths`_. Most plugins add menu items to the *Tools* menu when they are loaded. See also `Plugin documentation`_ for information about single plugins which are included in Geany. Plugin manager ^^^^^^^^^^^^^^ The Plugin Manager dialog lets you choose which plugins should be loaded at startup. You can also load and unload plugins on the fly using this dialog. Once you click the checkbox for a specific plugin in the dialog, it is loaded or unloaded according to its previous state. By default, no plugins are loaded at startup until you select some. You can also configure some plugin specific options if the plugin provides any. Keybindings ----------- Geany supports the default keyboard shortcuts for the Scintilla editing widget. For a list of these commands, see `Scintilla keyboard commands`_. The Scintilla keyboard shortcuts will be overridden by any custom keybindings with the same keyboard shortcut. Switching documents ^^^^^^^^^^^^^^^^^^^ There are some non-configurable bindings to switch between documents, listed below. These can also be overridden by custom keybindings. =============== ================================== Key Action =============== ================================== Alt-[1-9] Select left-most tab, from 1 to 9. Alt-0 Select right-most tab. =============== ================================== See also `Notebook tab keybindings`_. Configurable keybindings ^^^^^^^^^^^^^^^^^^^^^^^^ 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 resulting dialog you can press the key combination you want to assign to the action and it will be saved when you press OK. You can define only one key combination for each action and each key combination can only be defined for one action. The following tables list all customizable keyboard shortcuts, those which are common to many applications are marked with (C) after the shortcut. File keybindings ```````````````` =============================== ========================= ================================================== Action Default shortcut Description =============================== ========================= ================================================== New Ctrl-N (C) Creates a new file. Open Ctrl-O (C) Opens a file. Open selected file Ctrl-Shift-O Opens the selected filename. Re-open last closed tab Re-opens the last closed document tab. Save Ctrl-S (C) Saves the current file. Save As Saves the current file under a new name. Save all Ctrl-Shift-S Saves all open files. Close all Ctrl-Shift-W Closes all open files. Close Ctrl-W (C) Closes the current file. Reload file Ctrl-R (C) Reloads the current file. All unsaved changes will be lost. Print Ctrl-P (C) Prints the current file. Quit Ctrl-Q (C) Quits Geany. =============================== ========================= ================================================== Editor keybindings `````````````````` =============================== ========================= ================================================== Action Default shortcut Description =============================== ========================= ================================================== Undo Ctrl-Z (C) Un-does the last action. Redo Ctrl-Y Re-does the last action. Delete current line(s) Ctrl-K Deletes the current line (and any lines with a selection). Delete to line end Ctrl-Shift-Delete Deletes from the current caret position to the end of the current line. Duplicate line or selection Ctrl-D Duplicates the current line or selection. Transpose current line Transposes the current line with the previous one. Scroll to current line Ctrl-Shift-L Scrolls the current line into the centre of the view. The cursor position and or an existing selection will not be changed. Scroll up by one line Alt-Up Scrolls the view. Scroll down by one line Alt-Down Scrolls the view. Complete word Ctrl-Space Shows the autocompletion list. If already showing tag completion, it shows document word completion instead, even if it is not enabled for automatic completion. Likewise if no tag suggestions are available, it shows document word completion. Show calltip Ctrl-Shift-Space Shows a calltip for the current function or method. Show macro list Ctrl-Return Shows a list of available macros and variables in the workspace. Complete snippet Tab If you type a construct like if or for and press this key, it will be completed with a matching template. Suppress snippet completion 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 inserted, depending on what the construct completion keybinding is set to. For example, if you have set the construct completion keybinding to space, then setting this to Shift+space will prevent construct completion and insert a space. Context Action Executes a command and passes the current word (near the cursor position) or selection as an argument. See the section called `Context actions`_. Move cursor in snippet Jumps to the next defined cursor positions in a completed snippets if multiple cursor positions where defined. Word part completion Tab When the autocompletion list is visible, complete the currently selected item up to the next word part. Move line(s) up Alt-PageUp Move the current line or selected lines up by one line. Move line(s) down Alt-PageDown Move the current line or selected lines down by one line. =============================== ========================= ================================================== Clipboard keybindings ````````````````````` =============================== ========================= ================================================== Action Default shortcut Description =============================== ========================= ================================================== Cut Ctrl-X (C) Cut the current selection to the clipboard. Copy Ctrl-C (C) Copy the current selection to the clipboard. Paste Ctrl-V (C) Paste the clipboard text into the current document. Cut current line(s) Ctrl-Shift-X Cuts the current line (and any lines with a selection) to the clipboard. Copy current line(s) Ctrl-Shift-C Copies the current line (and any lines with a selection) to the clipboard. =============================== ========================= ================================================== Select keybindings `````````````````` =============================== ========================= ================================================== Action Default shortcut Description =============================== ========================= ================================================== Select all Ctrl-A (C) Makes a selection of all text in the current document. Select current word Alt-Shift-W Selects the current word under the cursor. Select current paragraph Alt-Shift-P Selects the current paragraph under the cursor which is defined by two empty lines around it. Select current line(s) Alt-Shift-L Selects the current line under the cursor (and any partially selected lines). Select to previous word part (Extend) selection to previous word part boundary. Select to next word part (Extend) selection to next word part boundary. =============================== ========================= ================================================== Insert keybindings `````````````````` =============================== ========================= ================================================== Action Default shortcut Description =============================== ========================= ================================================== Insert date Shift-Alt-D Inserts a customisable date. Insert alternative whitespace Inserts a tab character when spaces should be used for indentation and inserts space characters of the amount of a tab width when tabs should be used for indentation. Insert New Line Before Current Inserts a new line with indentation. Insert New Line After Current Inserts a new line with indentation. =============================== ========================= ================================================== Format keybindings `````````````````` =============================== ========================= ================================================== Action Default shortcut Description =============================== ========================= ================================================== Toggle case of selection Ctrl-Alt-U Changes the case of the selection. A lowercase selection will be changed into uppercase and vice versa. If the selection contains lower- and uppercase characters, all will be converted to lowercase. Comment line Comments current line or selection. Uncomment line Uncomments current line or selection. Toggle line commentation Ctrl-E Comments a line if it is not commented or removes a comment if the line is commented. Increase indent Ctrl-I Indents the current line or selection by one tab or by spaces in the amount of the tab width setting. Decrease indent Ctrl-U Removes one tab or the amount of spaces of the tab width setting from the indentation of the current line or selection. Increase indent by one space Indents the current line or selection by one space. Decrease indent by one space Deindents the current line or selection by one space. Smart line indent Indents the current line or all selected lines with the same indentation as the previous line. Send to Custom Command 1 (2,3) Ctrl-1 (2,3) Passes the current selection to a configured external command (available for the first three configured commands, see `Sending text through custom commands`_ for details). Send Selection to Terminal Sends the current selection or the current line (if there is no selection) to the embedded Terminal (VTE). Reflow lines/block Reformat selected lines or current (indented) text block, breaking lines at the long line marker or the line breaking column if line breaking is enabled for the current document. =============================== ========================= ================================================== Settings keybindings ```````````````````` =============================== ========================= ================================================== Action Default shortcut Description =============================== ========================= ================================================== Preferences Ctrl-Alt-P Opens preferences dialog. Plugin Preferences Opens plugin preferences dialog. =============================== ========================= ================================================== Search keybindings `````````````````` =============================== ========================= ================================================== Action Default shortcut Description =============================== ========================= ================================================== Find Ctrl-F (C) Opens the Find dialog. Find Next Ctrl-G Finds next result. Find Previous Ctrl-Shift-G Finds previous result. Find Next Selection Finds next occurence of selected text. Find Previous Selection Finds previous occurence of selected text. Replace Ctrl-H (C) Opens the Replace dialog. Find in files Ctrl-Shift-F Opens the Find in files dialog. Next message Jumps to the line with the next message in the Messages window. Previous message Jumps to the line with the previous message in the Messages window. Find Usage Ctrl-Shift-E Finds all occurrences of the current word (near the keyboard cursor) or selection in all open documents and displays them in the messages window. Find Document Usage Ctrl-Shift-D Finds all occurrences of the current word (near the keyboard cursor) or selection in the current document and displays them in the messages window. Mark All Ctrl-Shift-M Highlight all matches of the current word/selection in the current document with a colored box. If there's nothing to find, or the cursor is next to an existing match, the highlighted matches will be cleared. =============================== ========================= ================================================== Go to keybindings ````````````````` =============================== ========================= ================================================== Action Default shortcut Description =============================== ========================= ================================================== Navigate forward a location Alt-Right (C) Switches to the next location in the navigation history. See the section called `Code Navigation History`_. Navigate back a location Alt-Left (C) Switches to the previous location in the navigation history. See the section called `Code navigation history`_. Go to line Ctrl-L Focuses the Go to Line entry (if visible) or shows the Go to line dialog. Goto matching brace Ctrl-B If the cursor is ahead or behind a brace, then it is moved to the brace which belongs to the current one. If this keyboard shortcut is pressed again, the cursor is moved back to the first brace. Toggle marker Ctrl-M Set a marker on the current line, or clear the marker if there already is one. Goto next marker Ctrl-. Goto the next marker in the current document. Goto previous marker Ctrl-, Goto the previous marker in the current document. Go to tag definition Ctrl-T Jump to the definition of the current word or selection. See `Go to tag definition`_. Go to tag declaration Ctrl-Shift-T Jump to the declaration of the current word or selection. See `Go to tag declaration`_. Go to Start of Line Home Move the caret to the start of the line. Behaves differently if smart_home_key_ is set. Go to End of Line End Move the caret to the end of the line. Go to Start of Display Line Alt-Home Move the caret to the start of the display line. This is useful when you use line wrapping and want to jump to the start of the wrapped, virtual line, not the real start of the whole line. If the line is not wrapped, it behaves like `Go to Start of Line`. Go to End of Display Line Alt-End Move the caret to the end of the display line. If the line is not wrapped, it behaves like `Go to End of Line`. Go to Previous Word Part Ctrl-/ Goto the previous part of the current word. Go to Next Word Part Ctrl-\\ Goto the next part of the current word. =============================== ========================= ================================================== View keybindings ```````````````` =============================== ========================= ================================================== Action Default shortcut Description =============================== ========================= ================================================== Fullscreen F11 (C) Switches to fullscreen mode. Toggle Messages Window Toggles the message window (status and compiler messages) on and off. Toggle Sidebar Shows or hides the sidebar. Toggle all additional widgets Hide and show all additional widgets like the notebook tabs, the toolbar, the messages window and the status bar. Zoom In Ctrl-+ (C) Zooms in the text. Zoom Out Ctrl-- (C) Zooms out the text. Zoom Reset Ctrl-0 Reset any previous zoom on the text. =============================== ========================= ================================================== Focus keybindings ````````````````` ================================ ========================= ================================================== Action Default shortcut Description ================================ ========================= ================================================== Switch to Editor F2 Switches to editor widget. Also reshows the document statistics line (after a short timeout). Switch to Search Bar F7 Switches to the search bar in the toolbar (if visible). Switch to Message Window Focus the Message Window's current tab. Switch to Compiler Focus the Compiler message window tab. Switch to Messages Focus the Messages message window tab. Switch to Scribble F6 Switches to scribble widget. Switch to VTE F4 Switches to VTE widget. Switch to Sidebar Focus the Sidebar. Switch to Sidebar Symbol List Focus the Symbol list tab in the Sidebar (if visible). Switch to Sidebar Document List Focus the Document list tab in the Sidebar (if visible). ================================ ========================= ================================================== Notebook tab keybindings ```````````````````````` =============================== ========================= ================================================== Action Default shortcut Description =============================== ========================= ================================================== Switch to left document Ctrl-PageUp (C) Switches to the previous open document. Switch to right document Ctrl-PageDown (C) Switches to the next open document. Switch to last used document Ctrl-Tab Switches to the previously shown document (if it's still open). Holding Ctrl (or another modifier if the keybinding has been changed) will show a dialog, then repeated presses of the keybinding will switch to the 2nd-last used document, 3rd-last, etc. Also known as Most-Recently-Used documents switching. Move document left Ctrl-Shift-PageUp Changes the current document with the left hand one. Move document right Ctrl-Shift-PageDown Changes the current document with the right hand one. Move document first Moves the current document to the first position. Move document last Moves the current document to the last position. =============================== ========================= ================================================== Document keybindings ```````````````````` ==================================== ==================== ================================================== Action Default shortcut Description ==================================== ==================== ================================================== Clone See `Cloning documents`_. Replace tabs by space Replaces all tabs with the right amount of spaces. Replace spaces by tabs Replaces leading spaces with tab characters. Toggle current fold Toggles the folding state of the current code block. Fold all Folds all contractible code blocks. Unfold all Unfolds all contracted code blocks. Reload symbol list Ctrl-Shift-R Reloads the tag/symbol list. Toggle Line wrapping Enables or disables wrapping of long lines. Toggle Line breaking Enables or disables automatic breaking of long lines at a configurable column. Remove Markers Remove any markers on lines or words which were set by using 'Mark All' in the search dialog or by manually marking lines. Remove Error Indicators Remove any error indicators in the current document. Remove Markers and Error Indicators Combines ``Remove Markers`` and ``Remove Error Indicators``. ==================================== ==================== ================================================== Project keybindings ``````````````````` =============================== ========================= ================================================== Action Default shortcut Description =============================== ========================= ================================================== New Create a new project. Open Opens a project file. Properties Shows project properties. Close Close the current project. =============================== ========================= ================================================== Build keybindings ````````````````` =============================== ========================= ================================================== Action Default shortcut Description =============================== ========================= ================================================== Compile F8 Compiles the current file. Build F9 Builds (compiles if necessary and links) the current file. Make all Shift-F9 Builds the current file with the Make tool. Make custom target Ctrl-Shift-F9 Builds the current file with the Make tool and a given target. Make object Shift-F8 Compiles the current file with the Make tool. Next error Jumps to the line with the next error from the last build process. Previous error Jumps to the line with the previous error from the last build process. Run F5 Executes the current file in a terminal emulation. Set Build Commands Opens the build commands dialog. =============================== ========================= ================================================== Tools keybindings ````````````````` =============================== ========================= ================================================== Action Default shortcut Description =============================== ========================= ================================================== Show Color Chooser Opens the Color Chooser dialog. =============================== ========================= ================================================== Help keybindings ```````````````` =============================== ========================= ================================================== Action Default shortcut Description =============================== ========================= ================================================== Help F1 (C) Opens the manual. =============================== ========================= ================================================== Configuration files =================== .. warning:: You must use UTF-8 encoding *without BOM* for configuration files. Configuration file paths ------------------------ Geany has default configuration files installed for the system and also per-user configuration files. The system files should not normally be edited because they will be overwritten when upgrading Geany. The user configuration directory can be overridden with the ``-c`` switch, but this is not normally done. See `Command line options`_. .. note:: Any missing subdirectories in the user configuration directory will be created when Geany starts. You can check the paths Geany is using with *Help->Debug Messages*. Near the top there should be 2 lines with something like:: Geany-INFO: System data dir: /usr/share/geany Geany-INFO: User config dir: /home/username/.config/geany Paths on Unix-like systems ^^^^^^^^^^^^^^^^^^^^^^^^^^ The system path is ``$prefix/share/geany``, where ``$prefix`` is the path where Geany is installed (see `Installation prefix`_). The user configuration directory is normally: ``/home/username/.config/geany`` Paths on Windows ^^^^^^^^^^^^^^^^ The system path is the ``data`` subfolder of the installation path on Windows. The user configuration directory might vary, but on Windows XP it's: ``C:\Documents and Settings\UserName\Application Data\geany`` Tools menu items ---------------- There's a *Configuration files* submenu in the *Tools* menu that contains items for some of the available user configuration files. Clicking on one opens it in the editor for you to update. Geany will reload the file after you have saved it. .. note:: Other configuration files not shown here will need to be opened manually, and will not be automatically reloaded when saved. (see *Reload Configuration* below). There's also a *Reload Configuration* item which can be used if you updated one of the other configuration files, or modified or added template files. *Reload Configuration* is also necessary to update syntax highlighting colors. .. note:: Syntax highlighting colors aren't updated in open documents after saving filetypes.common as this may take a significant amount of time. Global configuration file ------------------------- System administrators can add a global configuration file for Geany which will be used when starting Geany and a user configuration file does not exist. The global configuration file is read from ``geany.conf`` in the system configuration path - see `Configuration file paths`_. It can contain any settings which are found in the usual configuration file created by Geany, but does not have to contain all settings. .. note:: This feature is mainly intended for package maintainers or system admins who want to set up Geany in a multi user environment and set some sane default values for this environment. Usually users won't need to do that. Filetype definition files ------------------------- All color definitions and other filetype specific settings are stored in the filetype definition files. Those settings are colors for syntax highlighting, general settings like comment characters or word delimiter characters as well as compiler and linker settings. See also `Configuration file paths`_. Filenames ^^^^^^^^^ Each filetype has a corresponding filetype definition file. The format for built-in filetype `Foo` is:: filetypes.foo The extension is normally just the filetype name in lower case. However there are some exceptions: =============== ========= Filetype Extension =============== ========= C++ cpp C# cs Make makefile Matlab/Octave matlab =============== ========= There is also the `special file filetypes.common`_. For `custom filetypes`_, the filename for `Foo` is different:: filetypes.Foo.conf See the link for details. System files ^^^^^^^^^^^^ The system-wide filetype configuration files can be found in the system configuration path and are called ``filetypes.$ext``, where $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. .. warning:: It is not recommended that users edit the system-wide files, because they will be overridden when Geany is updated. User files ^^^^^^^^^^ To change the settings, copy a file from the system configuration path to the subdirectory ``filedefs`` in your user configuration directory. Then you can edit the file and the changes will still be available after an update of Geany. Alternatively, you can create the file yourself and add only the settings you want to change. All missing settings will be read from the corresponding system configuration file. Custom filetypes ^^^^^^^^^^^^^^^^ At startup Geany looks for ``filetypes.*.conf`` files in the system and user filetype paths, adding any filetypes found with the name matching the '``*``' wildcard - e.g. ``filetypes.Bar.conf``. Custom filetypes are not as powerful as built-in filetypes, but support for the following has been implemented: * Recognizing and setting the filetype (after the user has manually edited ``filetype_extensions.conf``). * Reading filetype settings in the ``[settings]`` section, including: * Using an existing syntax highlighting lexer (`lexer_filetype`_ key). * Using an existing tag parser (``tag_parser`` key). * Build commands (``[build-menu]`` section). * Loading global tags files (sharing the ``tag_parser`` namespace). See `Filetype configuration`_ for details on each setting. Creating a custom filetype from an existing filetype ```````````````````````````````````````````````````` Because most filetype settings will relate to the syntax highlighting (e.g. styling, keywords, ``lexer_properties`` sections), it is best to copy an existing filetype file that uses the lexer you wish to use as the basis of a custom filetype, using the correct filename extension format shown above, e.g.:: cp filetypes.foo filetypes.Bar.conf Then add the ``lexer_filetype=Foo`` setting (if not already present) and add/adjust other settings. .. warning:: The ``[styling]`` and ``[keywords]`` sections have key names specific to each filetype/lexer. You must follow the same names - in particular, some lexers only support one keyword list, or none. Filetype configuration ^^^^^^^^^^^^^^^^^^^^^^ As well as the sections listed below, each filetype file can contain a [build-menu] section as described in `[build-menu] section`_. [styling] section ````````````````` In this section the colors for syntax highlighting are defined. The manual format is: * ``key=foreground_color;background_color;bold_flag;italic_flag`` Colors have to be specified as RGB hex values prefixed by 0x or # similar to HTML/CSS hex triplets. For example, all of the following are valid values for pure red; 0xff0000, 0xf00, #ff0000, or #f00. The values are case-insensitive but it is a good idea to use lower-case. Note that you can also use *named colors* as well by substituting the color value with the name of a color as defined in the ``[named_colors]`` section, see the `[named_colors] Section`_ for more information. 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. You can omit fields to use the values from the style named ``"default"``. E.g. ``key=0xff0000;;true`` This makes the key style have red foreground text, default background color text and bold emphasis. Using a named style ******************* The second format uses a *named style* name to reference a style defined in filetypes.common. * ``key=named_style`` * ``key2=named_style2,bold,italic`` The bold and italic parts are optional, and if present are used to toggle the bold or italic flags to the opposite of the named style's flags. In contrast to style definition booleans, they are a literal ",bold,italic" and commas are used instead of semi-colons. E.g. ``key=comment,italic`` This makes the key style match the ``"comment"`` named style, but with italic emphasis. To define named styles, see the filetypes.common `[named_styles] Section`_. Reading styles from another filetype ************************************ You can automatically copy all of the styles from another filetype definition file by using the following syntax for the ``[styling]`` group:: [styling=Foo] Where Foo is a filetype name. The corresponding ``[styling]`` section from ``filetypes.foo`` will be read. This is useful when the same lexer is being used for multiple filetypes (e.g. C/C++/C#/Java/etc). For example, to make the C++ styling the same as the C styling, you would put the following in ``filetypes.cpp``:: [styling=C] [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. [lexer_properties] section `````````````````````````` Here any special properties for the Scintilla lexer can be set in the format ``key.name.field=some.value``. Properties Geany uses are listed in the system filetype files. To find other properties you need Geany's source code:: egrep -o 'GetProperty\w*\("([^"]+)"[^)]+\)' scintilla/Lex*.cxx [settings] section `````````````````` extension This is the default file extension used when saving files, not including the period character (``.``). The extension used should match one of the patterns associated with that filetype (see `Filetype extensions`_). *Example:* ``extension=cxx`` wordchars These characters define word boundaries when making selections and searching using word matching options. *Example:* (look at system filetypes.\* files) .. note:: This overrides the *whitespace_chars* filetypes.common setting. comment_single A character or string which is used to comment code. If you want to use multiline comments only, don't set this but rather comment_open and comment_close. Single-line comments are used in priority over multiline comments to comment a line, e.g. with the `Comment/Uncomment line` command. *Example:* ``comment_single=//`` comment_open A character or string which is used to comment code. You need to also set comment_close to really use multiline comments. If you want to use single-line comments, prefer setting comment_single. Multiline comments are used in priority over single-line comments to comment a block, e.g. template comments. *Example:* ``comment_open=/*`` comment_close If multiline comments are used, this is the character or string to close the comment. *Example:* ``comment_close=*/`` comment_use_indent 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. Note: Comment indentation ``comment_use_indent=true`` would generate this if a line is commented (e.g. with Ctrl-D):: #command_example(); ``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 ';'). *Example:* ``comment_use_indent=true`` context_action_cmd A command which can be executed on the current 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 for security reasons, it is 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" *Example:* ``context_action_cmd=devhelp -s "%s"`` tag_parser The TagManager language name, e.g. "C". Usually the same as the filetype name. .. _lexer_filetype: lexer_filetype A filetype name to setup syntax highlighting from another filetype. This must not be recursive, i.e. it should be a filetype name that doesn't use the *lexer_filetype* key itself, e.g.:: lexer_filetype=C #lexer_filetype=C++ The second line is wrong, because ``filetypes.cpp`` itself uses ``lexer_filetype=C``, which would be recursive. symbol_list_sort_mode What the default symbol list sort order should be. ===== ===================================== Value Meaning ===== ===================================== 0 Sort tags by name 1 Sort tags by appearance (line number) ===== ===================================== .. _xml_indent_tags: xml_indent_tags If this setting is set to *true*, a new line after a line ending with an unclosed XML/HTML tag will be automatically indented. This only applies to filetypes for which the HTML or XML lexer is used. Such filetypes have this setting in their system configuration files. [indentation] section ````````````````````` This section allows definition of default indentation settings specific to the file type, overriding the ones configured in the preferences. This can be useful for file types requiring specific indentation settings (e.g. tabs only for Makefile). These settings don't override auto-detection if activated. width The forced indentation width. type The forced indentation type. ===== ======================= Value Indentation type ===== ======================= 0 Spaces only 1 Tabs only 2 Mixed (tabs and spaces) ===== ======================= [build_settings] section ```````````````````````` As of Geany 0.19 this section is supplemented by the `[build-menu] section`_. Values that are set in the [build-menu] section will override those in this section. error_regex This is a regular expression to parse a filename and line number from build output. If undefined, Geany will fall back to its default error message parsing. Only the first two matches will be read by Geany. Geany will look for a match that is purely digits, and use this for the line number. The remaining match will be used as the filename. *Example:* ``error_regex=(.+):([0-9]+):[0-9]+`` This will parse a message such as: ``test.py:7:24: E202 whitespace before ']'`` **Build commands** If any build menu item settings have been configured in the Build Menu Commands dialog or the Build tab of the project preferences dialog then these settings are stored in the [build-menu] section and override the settings in this section for that item. compiler 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. You should quote the filename to also support filenames with spaces. The following wildcards for filenames are available: * %f -- complete filename without path * %e -- filename without path and without extension *Example:* ``compiler=gcc -Wall -c "%f"`` linker This item specifies the command to link the file. If the file is not already compiled, it will be compiled while linking. The -o option is automatically added by Geany. This item works well with GNU gcc, but may be problematic with other compilers (esp. with the linker). *Example:* ``linker=gcc -Wall "%f"`` run_cmd Use this item to execute your file. It has to have been built already. Use the %e wildcard to have only the name of the executable (i.e. without extension) or use the %f wildcard if you need the complete filename, e.g. for shell scripts. *Example:* ``run_cmd="./%e"`` Special file filetypes.common ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ There is a special filetype definition file called filetypes.common. This file defines some general non-filetype-specific settings. You can open the user filetypes.common with the *Tools->Configuration Files->filetypes.common* menu item. This adds the default settings to the user file if the file doesn't exist. Alternatively the file can be created manually, adding only the settings you want to change. All missing settings will be read from the system file. .. note:: See the `Filetype configuration`_ section for how to define styles. [named_styles] section `````````````````````` Named styles declared here can be used in the [styling] section of any filetypes.* file. For example: *In filetypes.common*:: [named_styles] foo=0xc00000;0xffffff;false;true bar=foo *In filetypes.c*:: [styling] comment=foo This saves copying and pasting the whole style definition into several different files. .. note:: You can define aliases for named styles, as shown with the ``bar`` entry in the above example, but they must be declared after the original style. [named_colors] section `````````````````````` Named colors declared here can be used in the ``[styling]`` or ``[named_styles]`` section of any filetypes.* file or color scheme. For example:: [named_colors] my_red_color=#FF0000 my_blue_color=#0000FF [named_styles] foo=my_red_color;my_blue_color;false;true This allows to define a color pallete by name so that to change a color scheme-wide only involves changing the hex value in a single location. [styling] section ````````````````` default This is the default style. It is used for styling files without a filetype set. *Example:* ``default=0x000000;0xffffff;false;false`` selection The style for coloring selected text. The format is: * Foreground color * Background color * Use foreground color * Use background color The colors are only set if the 3rd or 4th argument is true. When the colors are not overridden, the default is a dark grey background with syntax highlighted foreground text. *Example:* ``selection=0xc0c0c0;0x00007F;true;true`` brace_good The style for brace highlighting when a matching brace was found. *Example:* ``brace_good=0xff0000;0xFFFFFF;true;false`` brace_bad The style for brace highlighting when no matching brace was found. *Example:* ``brace_bad=0x0000ff;0xFFFFFF;true;false`` caret The style for coloring the caret(the blinking cursor). Only first and third argument is interpreted. Set the third argument to true to change the caret into a block caret. *Example:* ``caret=0x000000;0x0;false;false`` caret_width The width for the caret(the blinking cursor). Only the first argument is interpreted. The width is specified in pixels with a maximum of three pixel. Use the width 0 to make the caret invisible. *Example:* ``caret=1;0;false;false`` current_line The style for coloring the background of the current line. Only the second and third arguments are interpreted. The second argument is the background color. Use the third argument to enable or disable background highlighting for the current line (has to be true/false). *Example:* ``current_line=0x0;0xe5e5e5;true;false`` indent_guide The style for coloring the indentation guides. Only the first and second arguments are interpreted. *Example:* ``indent_guide=0xc0c0c0;0xffffff;false;false`` white_space The style for coloring the white space if it is shown. The first both arguments define the foreground and background colors, the third argument sets whether to use the defined foreground color or to use the color defined by each filetype for the white space. The fourth argument defines whether to use the background color. *Example:* ``white_space=0xc0c0c0;0xffffff;true;true`` margin_linenumber Line number margin foreground and background colors. .. _Folding Settings: margin_folding Fold margin foreground and background colors. fold_symbol_highlight Highlight color of folding symbols. folding_style The style of folding icons. Only first and second arguments are used. Valid values for the first argument are: * 1 -- for boxes * 2 -- for circles * 3 -- for arrows * 4 -- for +/- Valid values for the second argument are: * 0 -- for no lines * 1 -- for straight lines * 2 -- for curved lines *Default:* ``folding_style=1;1;`` *Arrows:* ``folding_style=3;0;`` folding_horiz_line Draw a thin horizontal line at the line where text is folded. Only first argument is used. Valid values for the first argument are: * 0 -- disable, do not draw a line * 1 -- draw the line above folded text * 2 -- draw the line below folded text *Example:* ``folding_horiz_line=0;0;false;false`` line_wrap_visuals First argument: drawing of visual flags to indicate a line is wrapped. This is a bitmask of the values: * 0 -- No visual flags * 1 -- Visual flag at end of subline of a wrapped line * 2 -- Visual flag at begin of subline of a wrapped line. Subline is indented by at least 1 to make room for the flag. Second argument: wether the visual flags to indicate a line is wrapped are drawn near the border or near the text. This is a bitmask of the values: * 0 -- Visual flags drawn near border * 1 -- Visual flag at end of subline drawn near text * 2 -- Visual flag at begin of subline drawn near text Only first and second arguments are interpreted. *Example:* ``line_wrap_visuals=3;0;false;false`` line_wrap_indent First argument: sets the size of indentation of sublines for wrapped lines in terms of the width of a space, only used when the second argument is ``0``. Second argument: wrapped sublines can be indented to the position of their first subline or one more indent level. Possible values: * 0 - Wrapped sublines aligned to left of window plus amount set by the first argument * 1 - Wrapped sublines are aligned to first subline indent (use the same indentation) * 2 - Wrapped sublines are aligned to first subline indent plus one more level of indentation Only first and second arguments are interpreted. *Example:* ``line_wrap_indent=0;1;false;false`` translucency Translucency for the current line (first argument) and the selection (second argument). Values between 0 and 256 are accepted. Note for Windows 95, 98 and ME users: keep this value at 256 to disable translucency otherwise Geany might crash. Only the first and second arguments are interpreted. *Example:* ``translucency=256;256;false;false`` marker_line The style for a highlighted line (e.g when using Goto line or goto tag). The foreground color (first argument) is only used when the Markers margin is enabled (see View menu). Only the first and second arguments are interpreted. *Example:* ``marker_line=0x000000;0xffff00;false;false`` marker_search The style for a marked search results (when using "Mark" in Search dialogs). The second argument sets the background color for the drawn rectangle. Only the second argument is interpreted. *Example:* ``marker_search=0x000000;0xb8f4b8;false;false`` marker_mark The style for a marked line (e.g when using the "Toggle Marker" keybinding (Ctrl-M)). The foreground color (first argument) is only used when the Markers margin is enabled (see View menu). Only the first and second arguments are interpreted. *Example:* ``marker_mark=0x000000;0xb8f4b8;false;false`` marker_translucency Translucency for the line marker (first argument) and the search marker (second argument). Values between 0 and 256 are accepted. Note for Windows 95, 98 and ME users: keep this value at 256 to disable translucency otherwise Geany might crash. Only the first and second arguments are interpreted. *Example:* ``marker_translucency=256;256;false;false`` line_height Amount of space to be drawn above and below the line's baseline. The first argument defines the amount of space to be drawn above the line, the second argument defines the amount of space to be drawn below. Only the first and second arguments are interpreted. *Example:* ``line_height=0;0;false;false`` calltips The style for coloring the calltips. The first two arguments define the foreground and background colors, the third and fourth arguments set whether to use the defined colors. *Example:* ``calltips=0xc0c0c0;0xffffff;false;false`` [settings] section `````````````````` whitespace_chars Characters to treat as whitespace. These characters are ignored when moving, selecting and deleting across word boundaries (see `Scintilla keyboard commands`_). This should include space (\\s) and tab (\\t). *Example:* ``whitespace_chars=\s\t!\"#$%&'()*+,-./:;<=>?@[\\]^`{|}~`` Filetype extensions ------------------- To change the default filetype extension used when saving a new file, see `Filetype definition files`_. You can override the list of file extensions that Geany uses to detect filetypes using the user ``filetype_extensions.conf`` file. Use the *Tools->Configuration Files->filetype_extensions.conf* menu item. See also `Configuration file paths`_. You should only list lines for filetype extensions that you want to override in the user configuration file and remove or comment out others. The patterns are listed after the ``=`` sign, using a semi-colon separated list of patterns which should be matched for that filetype. For example, to override the filetype extensions for Make, the file should look like:: [Extensions] Make=Makefile*;*.mk;Buildfile; Filetype group membership ------------------------- Group membership is also stored in ``filetype_extensions.conf``. This file is used to store information Geany needs at startup, whereas the separate filetype definition files hold information only needed when a document with their filetype is used. The format looks like:: [Groups] Programming=C;C++; Script=Perl;Python; Markup=HTML;XML; Misc=Diff;Conf; None=None; The key names cannot be configured. .. note:: Group membership is only read at startup. Preferences file format ----------------------- The user preferences file ``geany.conf`` holds settings for all the items configured in the preferences dialog. This file should not be edited while Geany is running as the file will be overwritten when the preferences in Geany are changed or Geany is quit. [build-menu] section ^^^^^^^^^^^^^^^^^^^^ The [build-menu] section contains the configuration of the build menu. This section can occur in filetype, preferences and project files and always has the format described here. Different menu items are loaded from different files, see the table in the `Build Menu Configuration`_ section for details. All the settings can be configured from the dialogs except the execute command in filetype files and filetype definitions in the project file, so these are the only ones which need hand editing. The build-menu section stores one entry for each setting for each menu item that is configured. The keys for these settings have the format: ``GG_NN_FF`` where: * GG - is the menu item group, - FT for filetype - NF for independent (non-filetype) - EX for execute * NN - is a two decimal digit number of the item within the group, starting at 00 * FF - is the field, - LB for label - CM for command - WD for working directory Project file format ------------------- The project file contains project related settings and possibly a record of the current session files. [build-menu] additions ^^^^^^^^^^^^^^^^^^^^^^ The project file also can have extra fields in the [build-menu] section in addition to those listed in `[build-menu] section`_ above. When filetype menu items are configured for the project they are stored in the project file. The ``filetypes`` entry is a list of the filetypes which exist in the project file. For each filetype the entries for that filetype have the format defined in `[build-menu] section`_ but the key is prefixed by the name of the filetype as it appears in the ``filetypes`` entry, eg the entry for the label of filetype menu item 0 for the C filetype would be ``CFT_00_LB=Label`` Templates --------- Geany supports the following templates: * ChangeLog entry * File header * Function description * Short GPL notice * Short BSD notice * File templates 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, the inserted function description won't contain the correct function name but "unknown" instead. .. note:: Geany automatically reloads template information when it notices you save a file in the user's template configuration directory. You can also force this by selecting *Tools->Reload Configuration*. Template meta data ^^^^^^^^^^^^^^^^^^ Meta data can be used with all templates, but by default user set meta data is only used for the ChangeLog and File header templates. In the configuration dialog you can find a tab "Templates" (see `Template preferences`_). You can define the default values which will be inserted in the templates. File templates ^^^^^^^^^^^^^^ File 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, file templates are installed for some filetypes. Custom file templates can be added by creating the appropriate template file. You can also edit the default file templates. The file's contents are just the text to place in the document, with optional template wildcards like ``{fileheader}``. The fileheader wildcard can be placed anywhere, but it's usually put on the first line of the file, followed by a blank line. Adding file templates ````````````````````` File templates are read from ``templates/files`` under the `Configuration file paths`_. The filetype to use is detected from the template file's extension, if any. For example, creating a file ``module.c`` would add a menu item which created a new document with the filetype set to 'C'. The template file is read from disk when the corresponding menu item is clicked. Customizing templates ^^^^^^^^^^^^^^^^^^^^^ Each template can be customized to your needs. The templates are stored in the ``~/.config/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}. **Wildcards for character escaping** ============== ============================================= ======================================= Wildcard Description Available in ============== ============================================= ======================================= ob { Opening Brace (used to prevent other file templates, file header, snippets. wildcards being expanded). cb } Closing Brace. file templates, file header, snippets. pc \% Percent (used to escape e.g. %block% in snippets). snippets. ============== ============================================= ======================================= **Global wildcards** These are configurable, see `Template preferences`_. ============== ============================================= ======================================= Wildcard Description Available in ============== ============================================= ======================================= developer The name of the developer. file templates, file header, function description, ChangeLog entry, bsd, gpl, snippets. initial The developer's initials, e.g. "ET" for file templates, file header, Enrico Tröger or "JFD" for John Foobar Doe. function description, ChangeLog entry, bsd, gpl, snippets. mail The email address of the developer. file templates, file header, function description, ChangeLog entry, bsd, gpl, snippets. company The company the developer is working for. file templates, file header, function description, ChangeLog entry, bsd, gpl, snippets. version The initial version of a new file. file templates, file header, function description, ChangeLog entry, bsd, gpl, snippets. ============== ============================================= ======================================= **Date & time wildcards** The format for these wildcards can be changed in the preferences dialog, see `Template preferences`_. You can use any conversion specifiers which can be used with the ANSI C strftime function. For details please see http://man.cx/strftime. ============== ============================================= ======================================= Wildcard Description Available in ============== ============================================= ======================================= year The current year. Default format is: YYYY. file templates, file header, function description, ChangeLog entry, bsd, gpl, snippets. date The current date. Default format: file templates, file header, YYYY-MM-DD. function description, ChangeLog entry, bsd, gpl, snippets. datetime The current date and time. Default format: file templates, file header, DD.MM.YYYY HH:mm:ss ZZZZ. function description, ChangeLog entry, bsd, gpl, snippets. ============== ============================================= ======================================= **Dynamic wildcards** ============== ============================================= ======================================= Wildcard Description Available in ============== ============================================= ======================================= untitled The string "untitled" (this will be file templates, file header, translated to your locale), used in function description, ChangeLog entry, file templates. bsd, gpl, snippets. geanyversion The actual Geany version, e.g. file templates, file header, "Geany |(version)|". function description, ChangeLog entry, bsd, gpl, snippets. filename The filename of the current file. file header, snippets, file For new files, it's only replaced when templates. first saving if found on the first 4 lines of the file. project The current project's name, if any. file header, snippets, file templates. description The current project's description, if any. file header, snippets, file templates. functionname The function name of the function at the function description. cursor position. This wildcard will only be replaced in the function description template. command:path Executes the specified command and replace file templates, file header, the wildcard with the command's standard function description, ChangeLog entry, output. See `Special {command:} wildcard`_ bsd, gpl, snippets. for details. ============== ============================================= ======================================= **Template insertion wildcards** ============== ============================================= ======================================= Wildcard Description Available in ============== ============================================= ======================================= gpl This wildcard inserts a short GPL notice. file header. bsd This wildcard inserts a BSD licence notice. file header. fileheader The file header template. This wildcard snippets, file templates. will only be replaced in file templates. ============== ============================================= ======================================= Special {command:} wildcard *************************** The {command:} wildcard is a special one because it can execute a specified command and put the command's output (stdout) into the template. Example:: {command:uname -a} will result in:: Linux localhost 2.6.9-023stab046.2-smp #1 SMP Mon Dec 10 15:04:55 MSK 2007 x86_64 GNU/Linux Using this wildcard you can insert nearly any arbitrary text into the template. In the environment of the executed command the variables ``GEANY_FILENAME``, ``GEANY_FILETYPE`` and ``GEANY_FUNCNAME`` are set. The value of these variables is filled in only if Geany knows about it. For example, ``GEANY_FUNCNAME`` is only filled within the function description template. However, these variables are ``always`` set, just maybe with an empty value. You can easily access them e.g. within an executed shell script using:: $GEANY_FILENAME .. note:: If the specified command could not be found or not executed, the wildcard is substituted by an empty string. In such cases, you can find the occurred error message on Geany's standard error and in the Help->Debug Messages dialog. Customizing the toolbar ----------------------- You can add, remove and reorder the elements in the toolbar by using the toolbar editor, or by manually editing the configuration file ``ui_toolbar.xml``. The toolbar editor can be opened from the preferences editor on the Toolbar tab or by right-clicking on the toolbar itself and choosing it from the menu. Manually editing the toolbar layout ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ To override the system-wide configuration file, copy it to your user configuration directory (see `Configuration file paths`_). For example:: % cp /usr/local/share/geany/ui_toolbar.xml /home/username/.config/geany/ Then edit it and add any of the available elements listed in the file or remove any of the existing elements. Of course, you can also reorder the elements as you wish and add or remove additional separators. This file must be valid XML, otherwise the global toolbar UI definition will be used instead. Your changes are applied once you save the file. .. note:: (1) You cannot add new actions which are not listed below. (2) Everything you add or change must be inside the /ui/toolbar/ path. Available toolbar elements ^^^^^^^^^^^^^^^^^^^^^^^^^^ ================== ============================================================================== Element name Description ================== ============================================================================== New Create a new file Open Open an existing file Save Save the current file SaveAll Save all open files Reload Reload the current file from disk Close Close the current file CloseAll Close all open files Print Print the current file Cut Cut the current selection Copy Copy the current selection Paste Paste the contents of the clipboard Delete Delete the current selection Undo Undo the last modification Redo Redo the last modification NavBack Navigate back a location NavFor Navigate forward a location Compile Compile the current file Build Build the current file, includes a submenu for Make commands. Geany remembers the last chosen action from the submenu and uses this as default action when the button itself is clicked. Run Run or view the current file Color Open a color chooser dialog, to interactively pick colors from a palette ZoomIn Zoom in the text ZoomOut Zoom out the text UnIndent Decrease indentation Indent Increase indentation Replace Replace text in the current document SearchEntry The search field belonging to the 'Search' element (can be used alone) Search Find the entered text in the current file (only useful if you also use 'SearchEntry') GotoEntry The goto field belonging to the 'Goto' element (can be used alone) Goto Jump to the entered line number (only useful if you also use 'GotoEntry') Preferences Show the preferences dialog Quit Quit Geany ================== ============================================================================== Plugin documentation ==================== HTML Characters --------------- The HTML Characters plugin helps when working with special characters in XML/HTML, e.g. German Umlauts ü and ä. Insert entity dialog ^^^^^^^^^^^^^^^^^^^^ When the plugin is enabled, you can insert special character entities using *Tools->Insert Special HTML Characters*. This opens up a dialog where you can find a huge amount of special characters sorted by category that you might like to use inside your document. You can expand and collapse the categories by clicking on the little arrow on the left hand side. Once you have found the desired character click on it and choose "Insert". This will insert the entity for the character at the current cursor position. You might also like to double click the chosen entity instead. Replace special chars by its entity ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ To help make a XML/HTML document valid the plugin supports replacement of special chars known by the plugin. Both bulk replacement and immediate replacement during typing are supported. A few characters will not be replaced. These are * " * & * < * > * (` `) At typing time `````````````` You can activate/deactivate this feature using the *Tools->HTML Replacement->Auto-replace Special Characters* menu item. If it's activated, all special characters (beside the given exceptions from above) known by the plugin will be replaced by their entities. You could also set a keybinding for the plugin to toggle the status of this feature. Bulk replacement ```````````````` After inserting a huge amount of text, e.g. by using copy & paste, the plugin allows bulk replacement of all known characters (beside the mentioned exceptions). You can find the function under the same menu at *Tools->HTML Replacement->Replace Characters in Selection*, or configure a keybinding for the plugin. Save Actions ------------ Instant Save ^^^^^^^^^^^^ This plugin sets on every new file (*File->New* or *File->New (with template)*) a randomly chosen filename and set its filetype appropriate to the used template or when no template was used, to a configurable default filetype. This enables you to quickly compile, build and/or run the new file without the need to give it an explicit filename using the Save As dialog. This might be useful when you often create new files just for testing some code or something similar. Backup Copy ^^^^^^^^^^^ This plugin creates a backup copy of the current file in Geany when it is saved. You can specify the directory where the backup copy is saved and you can configure the automatically added extension in the configure dialog in Geany's plugin manager. After the plugin was loaded in Geany's plugin manager, every file is copied into the configured backup directory when the file is saved in Geany. Contributing to this document ============================= This document (``geany.txt``) is written in `reStructuredText`__ (or "reST"). The source file for it is located in Geany's ``doc`` subdirectory. If you intend on making changes, you should grab the source right from Git to make sure you've got the newest version. After editing the file, to build the HTML document to see how your changes look, run "``make doc``" in the subdirectory ``doc`` of Geany's source directory. This regenerates the ``geany.html`` file. To generate a PDF file, use the command "``make pdf``" which should generate a file called geany-|(version)|.pdf. __ http://docutils.sourceforge.net/rst.html After you are happy with your changes, create a patch e.g. by using:: % git diff geany.txt > foo.patch or even better, by creating a Git-formatted patch which will keep authoring and description data, by first committing your changes (doing so in a fresh new branch is recommended for `matser` not to diverge from upstream) and then using git format-patch:: % git checkout -b my-documentation-changes # create a fresh branch % git commit geany.txt Write a good commit message... % git format-patch HEAD^ % git checkout master # go back to master and then submit that file to the mailing list for review. Also you can clone the Geany repository at GitHub and send a pull request. Note, you will need the Python docutils software package installed to build the docs. The package is named ``python-docutils`` on Debian and Fedora systems. Scintilla keyboard commands =========================== Copyright © 1998, 2006 Neil Hodgson 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 `License for Scintilla and SciTE`_. 20 June 2006 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 appropriate keys (see `Column mode editing (rectangular selections)`_). Some keys may not be available with some national keyboards or because they are taken by the system such as by a window manager or GTK. Keyboard equivalents of menu commands are listed in the menus. Some less common commands with no menu equivalent are: ============================================= ====================== 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 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 Extend selection to end of display line. Alt-Shift-End Previous paragraph. Shift extends selection. Ctrl-Up Next paragraph. Shift extends selection. Ctrl-Down Previous word. Shift extends selection. Ctrl-Left Next word. Shift extends selection. Ctrl-Right ============================================= ====================== Tips and tricks =============== Document notebook ----------------- * Double-click on empty space in the notebook tab bar to open a new document. * Middle-click on a document's notebook tab to close the document. * Hold `Ctrl` and click on any notebook tab to switch to the last used document. * Double-click on a document's notebook tab to toggle all additional widgets (to show them again use the View menu or the keyboard shortcut). The interface pref must be enabled for this to work. Editor ------ * Alt-scroll wheel moves up/down a page. * Ctrl-scroll wheel zooms in/out. * Shift-scroll wheel scrolls 8 characters right/left. * Ctrl-click on a word in a document to perform *Go to Tag Definition*. * Ctrl-click on a bracket/brace to perform *Go to Matching Brace*. Interface --------- * Double-click on a symbol-list group to expand or compact it. GTK-related ----------- * Scrolling the mouse wheel over a notebook tab bar will switch notebook pages. The following are derived from X-Windows features (but GTK still supports them on Windows): * Middle-click pastes the last selected text. * Middle-click on a scrollbar moves the scrollbar to that position without having to drag it. Compile-time options ==================== There are some options which can only be changed at compile time, and some options which are used as the default for configurable options. To change these options, edit the appropriate source file in the ``src`` subdirectory. 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. src/geany.h ----------- ============================== ============================================ ================== Option Description Default ============================== ============================================ ================== GEANY_STRING_UNTITLED A string used as the default name for new untitled files. Be aware that the string can be translated, so change it only if you know what you are doing. GEANY_WINDOW_MINIMAL_WIDTH The minimal width of the main window. 620 GEANY_WINDOW_MINIMAL_HEIGHT The minimal height of the main window. 440 GEANY_WINDOW_DEFAULT_WIDTH The default width of the main window at the 900 first start. GEANY_WINDOW_DEFAULT_HEIGHT The default height of the main window at the 600 first start. **Windows specific** GEANY_USE_WIN32_DIALOG Set this to 1 if you want to use the default 0 Windows file open and save dialogs instead GTK's file open and save dialogs. The default Windows file dialogs are missing some nice features like choosing a filetype or an encoding. *Do not touch this setting when building on a non-Win32 system.* ============================== ============================================ ================== project.h --------- ============================== ============================================ ================== Option Description Default ============================== ============================================ ================== GEANY_PROJECT_EXT The default filename extension for Geany geany project files. It is used when creating new projects and as filter mask for the project open dialog. ============================== ============================================ ================== filetypes.c ----------- ============================== ============================================ ================== Option Description Default ============================== ============================================ ================== GEANY_FILETYPE_SEARCH_LINES The number of lines to search for the 2 filetype with the extract filetype regex. ============================== ============================================ ================== editor.h -------- ============================== ============================================ ================== Option Description Default ============================== ============================================ ================== GEANY_WORDCHARS These characters define word boundaries when a string with: making selections and searching using word a-z, A-Z, 0-9 and matching options. underscore. ============================== ============================================ ================== keyfile.c --------- These are default settings that can be overridden in the `Preferences`_ dialog. ============================== ============================================ ================== Option Description Default ============================== ============================================ ================== GEANY_MIN_SYMBOLLIST_CHARS How many characters you need to type to 4 trigger the autocompletion list. GEANY_DISK_CHECK_TIMEOUT Time in seconds between checking a file for 30 external changes. GEANY_DEFAULT_TOOLS_MAKE The make tool. This can also include a path. "make" GEANY_DEFAULT_TOOLS_TERMINAL A terminal emulator command, see See below. `Terminal emulators`_. GEANY_DEFAULT_TOOLS_BROWSER A web browser. This can also include a path. "firefox" GEANY_DEFAULT_TOOLS_PRINTCMD A printing tool. It should be able to accept "lpr" and process plain text files. This can also include a path. GEANY_DEFAULT_TOOLS_GREP A grep tool. It should be compatible with "grep" GNU grep. This can also include a path. GEANY_DEFAULT_MRU_LENGTH The length of the "Recent files" list. 10 GEANY_DEFAULT_FONT_SYMBOL_LIST The font used in sidebar to show symbols and "Sans 9" open files. GEANY_DEFAULT_FONT_MSG_WINDOW The font used in the messages window. "Sans 9" GEANY_DEFAULT_FONT_EDITOR The font used in the editor window. "Monospace 10" GEANY_TOGGLE_MARK A string which is used to mark a toggled "~ " comment. GEANY_MAX_AUTOCOMPLETE_WORDS How many autocompletion suggestions should 30 Geany provide. GEANY_DEFAULT_FILETYPE_REGEX The default regex to extract filetypes from See below. files. ============================== ============================================ ================== The GEANY_DEFAULT_FILETYPE_REGEX default value is -\\*-\\s*([^\\s]+)\\s*-\\*- which finds Emacs filetypes. The GEANY_DEFAULT_TOOLS_TERMINAL default value on Windows is:: cmd.exe /Q /C %c and on any non-Windows system is:: xterm -e "/bin/sh %c" build.c ------- ============================== ============================================ ================== Option Description Default ============================== ============================================ ================== GEANY_BUILD_ERR_HIGHLIGHT_MAX Amount of build error indicators to 50 be shown in the editor window. This affects the special coloring when Geany detects a compiler output line as an error message and then highlights the corresponding line in the source code. Usually only the first few messages are interesting because following errors are just after-effects. All errors in the Compiler window are parsed and unaffected by this value. PRINTBUILDCMDS Every time a build menu item priority FALSE calculation is run, print the state of the menu item table in the form of the table in `Build Menu Configuration`_. May be useful to debug configuration file overloading. Warning produces a lot of output. Can also be enabled/disabled by the debugger by setting printbuildcmds to 1/0 overriding the compile setting. ============================== ============================================ ================== GNU General Public License ========================== :: GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 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. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 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. 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. 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: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) 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. c) 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. 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: a) 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, b) 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, c) 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. 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. 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. 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. 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. 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. 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. 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. NO WARRANTY 11. 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. 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. Copyright (C) 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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. , 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. License for Scintilla and SciTE =============================== Copyright 1998-2003 by Neil Hodgson 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. geany-1.23.1+dfsg/doc/geany.html0000644000175000017500000110522612146147733016625 0ustar hyperairhyperair Geany

Geany

A fast, light, GTK+ IDE

Authors: Enrico Tröger
Nick Treleaven
Frank Lanitz
Colomban Wendling
Matthew Brush
Date: 2013-05-19
Version: 1.23.1

Copyright © 2005-2012

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 also in the chapter GNU General Public License.

Contents

Introduction

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 on other packages. Another goal was to be as independent as possible from a particular Desktop Environment like KDE or GNOME - Geany only requires the GTK2 runtime libraries.

Some basic features of Geany:

  • Syntax highlighting
  • Code folding
  • Autocompletion of symbols/words
  • Construct completion/snippets
  • Auto-closing of XML and HTML tags
  • Calltips
  • Many supported filetypes including C, Java, PHP, HTML, Python, Perl, Pascal, and others
  • Symbol lists
  • Code navigation
  • Build system to compile and execute your code
  • Simple project management
  • Plugin interface

Where to get it

You can obtain Geany from http://www.geany.org/ or perhaps also from your distribution. For a list of available packages, please see http://www.geany.org/Download/ThirdPartyPackages.

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 and in the chapter, GNU General Public License.

The included Scintilla library (found in the subdirectory scintilla/) has its own license, which can be found in the chapter, License for Scintilla and SciTE.

About this document

This documentation is available in HTML and text formats. The latest version can always be found at http://www.geany.org/.

If you want to contribute to it, see Contributing to this document.

Installation

Requirements

You will need the GTK (>= 2.16.0) libraries and their dependencies (Pango, GLib and ATK). Your distro should provide packages for these, usually installed by default. For Windows, you can download an installer from the website which bundles these libraries.

Binary packages

There are many binary packages available. For an up-to-date but maybe incomplete list see http://www.geany.org/Download/ThirdPartyPackages.

Source compilation

Compiling Geany is quite easy. To do so, you need the GTK (>= 2.16.0) libraries and header files. You also need the Pango, GLib and ATK libraries and header files. All these files are available at http://www.gtk.org, but very often your distro will provide development packages to save the trouble of building these yourself.

Furthermore you need, of course, a C and C++ compiler. The GNU versions of these tools are recommended.

Autotools based build system

The Autotools based build system is very mature and has been well tested. To use it, you just need the Make tool, preferably GNU Make.

Then run the following commands:

$ ./configure
$ make

Then as root:

% make install

Waf based build system

The Waf build system is still quite young and under heavy development but already in a usable state. In contrast to the Autotools system, Waf needs Python. So before using Waf, you need to install Python on your system. The advantage of the Waf build system over the Autotools based build system is that the whole build process might be a bit faster. Especially when you use the Waf cache feature for repetitive builds (e.g. when changing only a few source files to test something) will become much faster since Waf will cache and re-use the unchanged built files and only compile the changed code again. See Waf Cache for details. To build Geany with Waf as run:

$ ./waf configure
$ ./waf build

Then as root:

% ./waf install

Waf cache

The Waf build system has a nice and interesting feature which can help to avoid a lot of unnecessary rebuilding of unchanged code. This often happens when developing new features or trying to debug something in Geany. Waf is able to store and retrieve the object files from a cache. This cache is declared using the environment variable WAFCACHE. A possible location of the cache directory could be ~/.cache/waf. In order to make use of this, you first need to create this directory:

$ mkdir -p ~/.cache/waf

then add the environment variable to your shell configuration (the following example is for Bash and should be adjusted to your used shell):

export WAFCACHE=/home/username/.cache/waf

Remember to replace username with your actual username.

More information about the Waf cache feature are available at http://code.google.com/p/waf/wiki/CacheObjectFiles.

Cleaning the cache

You should be careful about the size of the cache directory as it may grow rapidly over time. Waf doesn't do any cleaning or other house-keeping of the cache yet, so you need to keep it clean by yourself. An easy way to keep it clean is to run the following command regularly to remove old cached files:

$ find /home/username/.cache/waf -mtime +14 -exec rm {} \;

This will delete all files in the cache directory which are older than 14 days.

For details about the find command and its options, check its manual page.

Custom installation

The configure script supports several common options, for a detailed list, type:

$ ./configure --help
or::
$ ./waf --help

(depending on which build system you use).

You may also want to read the INSTALL file for advanced installation options.

Dynamic linking loader support and VTE

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 for automatically loading libvte.so.4 if available.

Build problems

If there are any errors during compilation, check your build environment and try to find the error, otherwise contact the mailing list or one the authors. Sometimes you might need to ask for specific help from your distribution.

Installation prefix

If you want to find Geany's system files after installation you may want to know the installation prefix.

Pass the --print-prefix option to Geany to check this - see Command line options. The first path is the prefix.

On Unix-like systems this is commonly /usr if you installed from a binary package, or /usr/local if you build from source.

Note

Editing system files is not necessary as you should use the per-user configuration files instead, which don't need root permissions. See Configuration files.

Usage

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
    

The Geany workspace

The Geany window is shown in the following figure:

./images/main_window.png

The workspace has the following parts:

  • The menu.
  • An optional toolbar.
  • An optional sidebar that can show the following tabs:
    • Documents - A document list, and
    • Symbols - A list of symbols in your code.
  • The main editor window.
  • An optional message window which can show the following tabs:
    • Status - A list of status messages.
    • Compiler - The output of compiling or building programs.
    • Messages - Results of 'Find Usage', 'Find in Files' and other actions
    • Scribble - A text scratchpad for any use.
    • Terminal - An optional terminal window.
  • A status bar

Most of these can be configured in the Interface preferences, the View menu, or the popup menu for the relevant area.

Additional tabs may be added to the sidebar and message window by plugins.

The position of the tabs can be selected in the interface preferences.

The sizes of the sidebar and message window can be adjusted by dragging the dividers.

Command line options

Short option Long option Function
none +number Set initial line number for the first opened file (same as --line, do not put a space between the + sign and the number). E.g. "geany +7 foo.bar" will open the file foo.bar and place the cursor in line 7.
none --column Set initial column number for the first opened file.
-c dir_name --config=directory_name Use an alternate configuration directory. The default configuration directory is ~/.config/geany/ and that is where geany.conf and other configuration files reside.
none --ft-names Print a list of Geany's internal filetype names (useful for snippets configuration).
-g --generate-tags Generate a global tags file (see Generating a global tags file).
-P --no-preprocessing Don't preprocess C/C++ files when generating tags.
-i --new-instance Do not open files in a running instance, force 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.
none --list-documents Return a list of open documents in a running Geany instance. This can be used to read the currently opened documents in Geany from an external script or tool. The returned list is separated by newlines (LF) and consists of the full, UTF-8 encoded filenames of the documents. Only available if Geany was compiled with support for Sockets.
-m --no-msgwin Do not show the message window. Use this option if you do not need compiler messages or VTE support.
-n --no-ctags Do not load symbol completion and call tip data. Use this option if you do not want to use them.
-p --no-plugins Do not load plugins or plugin support.
none --print-prefix Print installation prefix, the data directory, the lib directory and the locale directory (in that order) to stdout, one line each. This is mainly intended for plugin authors to detect installation paths.
-r --read-only Open all files given on the command line in read-only mode. This only applies to files opened explicitly from the command line, so files from previous sessions or project files are unaffected.
-s --no-session Do not load the previous session's files.
-t --no-terminal Do not load terminal support. Use this option if you do not want to load the virtual 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.
none --socket-file

Use this socket filename for communication with a running Geany instance. This can be used with the following command to execute Geany on the current workspace:

geany --socket-file=/tmp/geany-sock-$(xprop -root _NET_CURRENT_DESKTOP | awk '{print $3}')
none --vte-lib Specify explicitly the path including filename or only the filename to the VTE library, e.g. /usr/lib/libvte.so or libvte.so. This option is only needed when the auto-detection does not work. Only available if Geany was compiled with support for VTE.
-v --verbose Be verbose (print useful status messages).
-V --version Show version information and exit.
-? --help Show help information and exit.
none [files ...]

Open all given files at startup. This option causes Geany to ignore loading stored files from the last session (if enabled). Geany also recognizes line and column information when appended to the filename with colons, e.g. "geany foo.bar:10:5" will open the file foo.bar and place the cursor in line 10 at column 5.

Projects can also be opened but a project file (*.geany) must be the first non-option argument. All additionally given files are ignored.

You can also pass line number and column number information, e.g.:

geany some_file.foo:55:4

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 General Startup preferences).

You can start several instances of Geany, but only the first will load files from the last session. In the subsequent instances, you can find these files in the file menu under the "Recent files" item. By default this contains the last 10 recently opened files. You can change the number of recently opened files in the preferences dialog.

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 if there is an an instance of itself already running and opens files from the command-line in that instance. So, Geany can be used to view and edit files by opening them from other programs such as a file manager.

You can also pass line number and column number information, e.g.:

geany some_file.foo:55:4

This would open the file some_file.foo with the cursor on line 55, column 4.

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 on 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 any 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) much as you would a 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 some other filenames. If this fails too, you should check whether you installed libvte correctly. Again note, Geany will run without this library.

It could be, that the library is called something else than libvte.so (e.g. on FreeBSD 6.0 it is called libvte.so.8). If so please set a link to the correct file (as root):

# ln -s /usr/lib/libvte.so.X /usr/lib/libvte.so

Obviously, you have to adjust the paths and set X to the number of your libvte.so.

You can also specify the filename of the VTE library to use on the command line (see the section called Command line options) or at compile time by specifying the command line option --with-vte-module-path to ./configure.

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 have a defined style used by Geany you must assign it to at least one of Geany's widgets. For example use the following line:

widget "Geany*" style "geanyStyle"

This would assign your 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:

  • GeanyMainWindow
  • GeanyEditMenu
  • GeanyToolbarMenu
  • GeanyDialog
  • GeanyDialogPrefs
  • GeanyDialogProject
  • GeanyDialogSearch
  • GeanyMenubar
  • GeanyToolbar

An 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"

Documents

Switching between documents

The documents 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. It is not alphabetical as shown in the documents list (regardless of whether or not editor tabs are visible).

See the Notebook tab keybindings section for useful shortcuts including for Most-Recently-Used document switching.

Cloning documents

The Document->Clone menu item copies the current document's text, cursor position and properties into a new untitled document. If there is a selection, only the selected text is copied. This can be useful when making temporary copies of text or for creating documents with similar or identical contents.

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 convert a file from one character set to another. To do this, Geany uses the character conversion capabilities of the GLib library.

Only text files are supported, i.e. opening files which contain NULL-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 be read up to the first occurrence of a NULL-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, but auto-detecting the encoding of a file is not easy and sometimes an encoding might not be detected correctly. In this case you have to set the encoding of the file manually 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 where it is known that auto-detection has problems.

There are different ways to set different encodings in Geany:

  • 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).

  • 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 the wrong encoding was used.

  • Using the "Set encoding" menu item

    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.

  • Specifying the encoding in the file itself

    As mentioned above, auto-detecting the encoding of a file may fail on some encodings. If you know that Geany doesn't open a certain file, you can add the specification line, described in the next section, to the beginning of the file to force Geany to use a specific encoding when opening the file.

In-file encoding specification

Geany detects meta tags of HTML files which contain charset information like:

<meta http-equiv="content-type" content="text/html; charset=ISO-8859-15" />

and the specified charset is used when opening the file. This is useful if the encoding of the file cannot be detected properly. For non-HTML files you can also define a line like:

/* geany_encoding=ISO-8859-15 */

or:

# geany_encoding=ISO-8859-15 #

to force an encoding to be used. The #, /* and */ are examples of filetype-specific comment characters. It doesn't matter which characters are around the string " geany_encoding=ISO-8859-15 " as long as there is at least one whitespace character before and after this string. Whitespace characters are in this case a space or tab character. An example to use this could be you have a file with ISO-8859-15 encoding but Geany constantly detects the file encoding as ISO-8859-1. Then you simply add such a line to the file and Geany will open it correctly the next time.

Since Geany 0.15 you can also use lines which match the regular expression used to find the encoding string: coding[\t ]*[:=][\t ]*([a-z0-9-]+)[\t ]*

Note

These specifications must be in the first 512 bytes of the file. Anything after the first 512 bytes will not be recognized.

Some examples are:

# encoding = ISO-8859-15

or:

# coding: ISO-8859-15

Special encoding "None"

There is a special encoding "None" which uses no 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 NULL-bytes this can be useful to skip auto detection and open the file properly at least until the occurrence of the first NULL-byte. Using this encoding opens the file as it is without any character conversion.

Unicode Byte-Order-Mark (BOM)

Furthermore, Geany detects a 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 a 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 for programs not expecting it, e.g. the compiler 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 probably not important for you and you can safely ignore it.

Editing

Folding

Geany provides basic code folding support. Folding means the ability to show and hide parts of the text in the current file. You can hide unimportant code sections and concentrate on the parts you are working on and later you can show hidden sections again. In the editor window there is a small grey margin on the left side with [+] and [-] symbols which show hidden parts and hide parts of the file respectively. By clicking on these icons you can simply show and hide sections which are marked by vertical lines within this margin. For many filetypes nested folding is supported, so there may be several fold points within other fold points.

Note

You can customize the folding icon and line styles - see the filetypes.common Folding Settings.

If you don't like it or don't need it at all, you can simply disable folding support completely in the preferences dialog.

The folding behaviour can be changed with the "Fold/Unfold all children of a fold point" option in the preference dialog. If activated, Geany will unfold all nested fold points below the current one if they are already folded (when clicking on a [+] symbol). When clicking on a [-] symbol, Geany will fold all nested fold points below the current one if they are unfolded.

This option can be inverted by pressing the Shift key while clicking on a fold symbol. That means, if the "Fold/Unfold all children of a fold point" option is enabled, pressing Shift will disable it for this click and vice versa.

Column mode editing (rectangular selections)

There is basic support for column mode editing. To use it, create a rectangular selection by holding down the Control and Shift keys (or Alt and Shift on Windows) while selecting some text. Once a rectangular selection exists you can start editing the text within this selection and the modifications will be done for every line in the selection.

It is also possible to create a zero-column selection - this is useful to insert text on multiple lines.

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.

Indentation

Geany allows each document to indent either with a tab character, multiple spaces or a combination of both. The default indent settings are set in Editor Indentation preferences (see the link for more information).

The default settings can be overridden per-document using the Document menu. They can also be overridden by projects - see Project management.

The indent mode for the current document is shown on the status bar as follows:

TAB
Indent with Tab characters.
SP
Indent with spaces.
T/S
Indent with tabs and spaces, depending on how much indentation is on a line.

Applying new indentation settings

After changing the default settings you may wish to apply the new settings to every document in the current session. To do this use the Project->Apply Default Indentation menu item.

Detecting indent type

The Detect from file indentation preference can be used to scan each file as it's opened and set the indent type based on how many lines start with a tab vs. 2 or more spaces.

Auto-indentation

When enabled, auto-indentation happens when pressing Enter in the Editor. It adds a certain amount of indentation to the new line so the user doesn't always have to indent each line manually.

Geany has four types of auto-indentation:

None
Disables auto-indentation completely.
Basic
Adds the same amount of whitespace on a new line as on the last line.
Current chars
Does the same as Basic but also indents a new line after an opening brace '{', and de-indents when typing a closing brace '}'. For Python, a new line will be indented after typing ':' at the end of the previous line.
Match braces
Similar to Current chars but the closing brace will be aligned to match the indentation of the line with the opening brace.

There is also XML-tag auto-indentation. This is enabled when the mode is more than just Basic, and is also controlled by a filetype setting - see xml_indent_tags.

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. 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.

Code navigation history

To ease navigation in source files and especially between different files, Geany lets you jump between different navigation points. Currently, this works for the following:

When using one of these actions, Geany remembers your current position and jumps to the new one. If you decide to go back to your previous position in the file, just use "Navigate back a location". To get back to the new position again, just use "Navigate forward a location". This makes it easier to navigate in e.g. foreign code and between different files.

Sending text through custom commands

You can define several custom commands in Geany and send the current selection to one of these commands using the Edit->Format->Send Selection to menu or keybindings. The output of the command will be used to replace the current selection. This makes it 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.

If there is no selection, the whole current line is used instead.

To add a custom command, use the Send Selection to->Set Custom Commands menu item. Click on Add to get a new item and type the command. You can also specify some command line options. Empty commands are not saved.

Normal shell quoting is supported, so you can do things like:

  • sed 's/\./(dot)/g'

The above example would normally be done with the Replace all function, but it can be handy to have common commands already set up.

Context actions

You can execute the context action command on the current word at the cursor position or the available selection. This word or selection can be used as an argument to the command. The context action is invoked by a menu entry in the popup menu of the editor and also a keyboard shortcut (see the section called Keybindings).

The command can be specified in the preferences dialog and also for each filetype (see "context_action_cmd" in the section called Filetype configuration). When the context action is invoked, the filetype specific command is used if available, otherwise the command specified in the preferences dialog is executed.

The current word or selection can be referred with the wildcard "%s" in the command, it will be replaced by the current word or selection before the command is executed.

For example a context action can be used to open API documentation in a browser window, 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.

Autocompletion

Geany can offer a list of possible completions for symbols defined in the tags and for all words in a document.

The autocompletion list for symbols is presented when the first few characters of the symbol are typed (configurable, see Editor Completions preferences, default 4) or when the Complete word keybinding is pressed (configurable, see Editor keybindings, default Ctrl-Space).

When the defined keybinding is typed and the Autocomplete all words in document preference (in Editor Completions preferences) is selected then the autocompletion list will show all matching words in the document, if there are no matching symbols.

If you don't want to use autocompletion it can be dismissed until the next symbol by pressing Escape. The autocompletion list is updated as more characters are typed so that it only shows completions that start with the characters typed so far. If no symbols begin with the sequence, the autocompletion window is closed.

The up and down arrows will move the selected item. The highlighted item on the autocompletion list can be chosen from the list by pressing Enter/Return. You can also double-click to select an item. The sequence will be completed to match the chosen item, and if the Drop rest of word on completion preference is set (in Editor Completions preferences) then any characters after the cursor that match a symbol or word are deleted.

Word part completion

By default, pressing Tab will complete the selected item by word part; useful e.g. for adding the prefix gtk_combo_box_entry_ without typing it manually:

  • gtk_com<TAB>
  • gtk_combo_<TAB>
  • gtk_combo_box_<e><TAB>
  • gtk_combo_box_entry_<s><ENTER>
  • gtk_combo_box_entry_set_text_column

The key combination can be changed from Tab - See Editor keybindings. If you clear/change the key combination for word part completion, Tab will complete the whole word instead, like Enter.

Scope autocompletion

E.g.:

struct
{
    int i;
    char c;
} foo;

When you type foo. it will show an autocompletion list with 'i' and 'c' symbols.

It only works for languages that set parent scope names for e.g. struct members. Currently this means C-like languages. The C tag parser only parses global scopes, so this won't work for structs or objects declared in local scope.

User-definable snippets

Snippets are small strings or code constructs which can be replaced or completed to a more complex string. So you can save a lot of time when typing common strings and letting Geany do the work for you. To know what to complete or replace Geany reads a configuration file called snippets.conf at startup.

Maybe you need to often type your name, so define a snippet like this:

[Default]
myname=Enrico Tröger

Every time you write myname <TAB> in Geany, it will replace "myname" with "Enrico Tröger". The key to start autocompletion can be changed in the preferences dialog, by default it is TAB. The corresponding keybinding is called Complete snippet.

Paths

You can override the default snippets using the user snippets.conf file. Use the Tools->Configuration Files->snippets.conf menu item. See also Configuration file paths.

This adds the default settings to the user file if the file doesn't exist. Alternatively the file can be created manually, adding only the settings you want to change. All missing settings will be read from the system snippets file.

Snippet groups

The file snippets.conf contains sections defining snippets that are available for particular filetypes and in general.

The two sections "Default" and "Special" apply to all filetypes. "Default" contains all snippets which are available for every filetype and "Special" contains snippets which can only be used in other snippets. So you can define often used parts of snippets and just use the special snippet as a placeholder (see the snippets.conf for details).

You can define sections with the name of a filetype eg "C++". The snippets in that section are only available for use in files with that filetype. Snippets in filetype sections will hide snippets with the same name in the "Default" section when used in a file of that filetype.

Substitution sequences for snippets

To define snippets you can use several special character sequences which will be replaced when using the snippet:

\n or %newline% Insert a new line (it will be replaced by the used EOL char(s): LF, CR/LF, or CR).
\t or %ws% Insert an indentation step, it will be replaced according to the current document's indent mode.
\s \s to force whitespace at beginning or end of a value ('key= value' won't work, use 'key=\svalue')
%cursor% Place the cursor at this position after completion has been done. You can define multiple %cursor% wildcards and use the keybinding Move cursor in snippet to jump to the next defined cursor position in the completed snippet.
%...% "..." means the name of a key in the "Special" section. If you have defined a key "brace_open" in the "Special" section you can use %brace_open% in any other snippet.

Snippet names must not contain spaces otherwise they won't work correctly. But beside that you can define almost any string as a snippet and use it later in Geany. It is not limited to existing contructs of certain programming languages(like if, for, switch). Define whatever you need.

Template wildcards

Since Geany 0.15 you can also use most of the available templates wildcards listed in Template wildcards. All wildcards which are listed as available in snippets can be used. For instance to improve the above example:

[Default]
myname=My name is {developer}
mysystem=My system: {command:uname -a}

this will replace myname with "My name is " and the value of the template preference developer.

Word characters

You can change the way Geany recognizes the word to complete, that is how the start and end of a word is recognised when the snippet completion is requested. The section "Special" may contain a key "wordchars" which lists all characters a string may contain to be recognized as a word for completion. Leave it commented to use default characters or define it to add or remove characters to fit your needs.

Snippet keybindings

Normally you would type the snippet name and press Tab. However, you can define keybindings for snippets under the Keybindings group in snippets.conf:

[Keybindings]
for=<Ctrl>7
block_cursor=<Ctrl>8

Note

Snippet keybindings may be overridden by Geany's configurable keybindings.

Inserting Unicode characters

You can insert Unicode code points by hitting Ctrl-Shift-u, then still holding Ctrl-Shift, type some hex digits representing the code point for the character you want and hit Enter or Return (still holding Ctrl-Shift). If you release Ctrl-Shift before hitting Enter or Return (or any other character), the code insertion is completed, but the typed character is also entered. In the case of Enter/Return, it is a newline, as you might expect.

In some earlier versions of Geany, you might need to first unbind Ctrl-Shift-u in the keybinding preferences, then select Tools->Reload Configuration or restart Geany. Note that it works slightly differently from other GTK applications, in that you'll need to continue to hold down the Ctrl and Shift keys while typing the code point hex digits (and the Enter or Return to finish the code point).

Search, replace and go to

This section describes search-related commands from the Search menu and the editor window's popup menu:

  • Find
  • Find selection
  • Find usage
  • Find in files
  • Replace
  • Go to tag definition
  • Go to tag declaration
  • Go to line

See also Search preferences.

Toolbar entries

There are also two toolbar entries:

  • Search bar
  • Go to line entry

There are keybindings to focus each of these - see Focus keybindings. Pressing Escape will then focus the editor.

Find

The Find dialog is used for finding text in one or more open documents.

./images/find_dialog.png

Matching options

The syntax for the Use regular expressions option is shown in Regular expressions.

Note

Use escape sequences is implied for 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 recognized symbols are: \\, \n, \r, \uXXXX (Unicode characters).

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 highlight all matches in the current document with a colored box. These markers can be removed by selecting the Remove Markers command from the Document menu.

Change font in search dialog text fields

All search related dialogs use a Monospace for the text input fields to increase the readability of input text. This is useful when you are typing input such as regular expressions with spaces, periods and commas which might it hard to read with a proportional font.

If you want to change the font, you can do this easily by inserting the following style into 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):

style "search_style"
{
    font_name="Monospace 8"
}
widget "GeanyDialogSearch.*.GtkEntry" style:highest "search_style"

Please note the addition of ":highest" in the last line which sets the priority of this style to the highest available. Otherwise, the style is ignored for the search dialogs.

Find selection

The Find Next/Previous Selection commands perform a search for the current selected text. If nothing is selected, by default the current word is used instead. This can be customized by the find_selection_type preference - see Various preferences.

Value find_selection_type behaviour
0 Use the current word (default).
1 Try the X selection first, then current word.
2 Repeat last search.

Find usage

Find usage searches all open files. It is similar to the Find All In Session option in the Find dialog.

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 (see note below).

./images/find_in_files_dialog.png

The Search field is initially set to the current word in the editor (depending on Search preferences).

The Files setting allows to choose which files are included in the search, depending on the mode:

All
Search in all files;
Project
Use the current project's patterns, see Project properties;
Custom
Use custom patterns.

Both project and custom patterns use a glob-style syntax, each pattern separated by a space. To search all .c and .h files, use: *.c *.h. Note that an empty pattern list searches in all files rather than none.

The Directory field is initially set to the current document's directory, unless this field has already been edited and the current document has not changed. Otherwise, the current document's directory is prepended to the drop-down history. This can be disabled - see Search preferences.

The Encoding field can be used to define the encoding of the files to be searched. The entered search text is converted to the chosen encoding and the search results are converted back to UTF-8.

The Extra options field is used to pass any additional arguments to the grep tool.

Note

The Files setting uses --include= when searching recursively, Recurse in subfolders uses -r; both are GNU Grep options and may not work with other Grep implementations.

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 filter out version control files.

If you have GNU Grep >= 2.5.2 you can use the --exclude-dir argument to filter out CVS and hidden directories like .svn.

Example: --exclude-dir=.svn --exclude-dir=CVS

If you have an older Grep, you can try using the --exclude flag to filter out filenames.

SVN Example: --exclude=*.svn-base

The --exclude argument only matches the file name part, not the path.

Replace

The Replace dialog is used for replacing text in one or more open documents.

./images/replace_dialog.png

The Replace dialog has the same options for matching text as the Find dialog. See the section Matching options.

The Use regular expressions option allows regular expressions to be used in the search string and back references in the replacement text -- see the entry for '\n' in 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 or selection is the name of a tag definition (e.g. a function name) 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 the word nearest the edit cursor, or the word underneath the popup menu click position when the popup menu is used.

Note

If the corresponding tag is on the current line, Geany will first look for a tag declaration instead, as this is more useful. Likewise Go to tag declaration will search for a tag definition first in this case also.

Go to tag declaration

Like Go to tag definition, but for a forward declaration such as a C 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 (see Matching options). The syntax is Perl compatible. Basic syntax is described in the table below. For full details, see http://www.geany.org/manual/gtk/glib/glib-regex-syntax.html.

Note

  1. The Use escape sequences dialog option always applies for regular expressions.
  2. Searching backwards with regular expressions is not supported.

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.
\n

Where n is 1 through 9 refers to the first through ninth tagged region when searching or replacing.

Searching for (Wiki)\1 matches WikiWiki.

If the search string was Fred([1-9])XXX and the replace string was Sam\1YYY, when applied to Fred2XXX this would generate Sam2YYY.

\0 When replacing, the whole matching text.
\b This matches a word boundary.
\c

A backslash followed by d, D, s, S, w or W, becomes a character class (both inside and outside sets []).

  • d: decimal digits
  • D: any char except decimal digits
  • s: whitespace (space, \t \n \r \f \v)
  • S: any char except whitespace (see above)
  • w: alphanumeric & underscore
  • W: any char except alphanumeric & underscore
\x This allows you to use a character x that would otherwise have a special meaning. For example, \[ would be interpreted as [ and not as the start of a character set. Use \\ for a literal backslash.
[...]

Matches one of the characters in the set. If the first character in the set is ^, it matches the characters NOT in the set, i.e. complements the set. A shorthand S-E (start dash end) is used to specify a set of characters S up to E, inclusive.

The special characters ] and - have no special meaning if they appear first in the set. - can also be last in the set. To include both, put ] first: []A-Z-].

Examples:

[]|-]    matches these 3 chars
[]-|]    matches from ] to | chars
[a-z]    any lowercase alpha
[^]-]    any char except - and ]
[^A-Z]   any char except uppercase alpha
[a-zA-Z] any alpha
^ 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.
? This matches 0 or 1 time(s). For example, Joh?n matches John, Jon.

Note

This table is adapted from Scintilla and SciTE documentation, distributed under the License for Scintilla and SciTE.

View menu

The View menu allows various elements of the main window to be shown or hidden, and also provides various display-related editor options.

Color schemes menu

The Color schemes menu is available under the View->Editor submenu. It lists various color schemes for editor highlighting styles, including the default scheme first. Other items are available based on what color scheme files Geany found at startup.

Color scheme files are read from the Configuration file paths under the colorschemes subdirectory. They should have the extension .conf. The default color scheme is read from filetypes.common.

The [named_styles] section and [named_colors] section are the same as for filetypes.common.

The [theme_info] section can contain information about the theme. The name and description keys are read to set the menu item text and tooltip, respectively. These keys can have translations, e.g.:

key=Hello
key[de]=Hallo
key[fr_FR]=Bonjour

Tags

Tags are information that relates symbols in a program with the source file location of the declaration and definition.

Geany has built-in functionality for generating tag information (aka "workspace tags") for supported filetypes when you open a file. You can also have Geany automatically load external tag files (aka "global tags files") upon startup, or manually using Tools --> Load Tags.

Geany uses its own tag file format, similar to what ctags uses (but is incompatible with ctags). You use Geany to generate global tags files, as described below.

Workspace tags

Tags for each document are parsed whenever a file is loaded, saved or modified (see Symbol list update frequency preference in the Editor Completions preferences). These are shown in the Symbol list in the Sidebar. These tags are also used for autocompletion of symbols and calltips for all documents open in the current session that have the same filetype.

The Go to Tag commands can be used with all workspace tags. See Go to tag definition.

Global tags

Global tags are used to provide autocompletion of symbols 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 Tools menu.
  • By moving or symlinking tags files to the tags subdirectory of one of the configuration file paths before starting Geany.

You can either download these files or generate your own. They have the format:

name.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
  • Pascal
  • PHP
  • HTML -- &symbol; completion, e.g. for ampersand, copyright, etc.
  • LaTeX
  • Python

Global tags file format

Global tags files can have two different formats:

  • Tagmanager format
  • Pipe-separated format

The first line of global tags files should be a comment, introduced by # followed by a space and a string like format=pipe or format=tagmanager respectively, these are case-sensitive. This helps Geany to read the file properly. If this line is missing, Geany tries to auto-detect the used format but this might fail.

The Tagmanager format is a bit more complex and is used for files created by the geany -g command. There is one tag per line. Different tag attributes like the return value or the argument list are separated with different characters indicating the type of the following argument.

Pipe-separated format

The Pipe-separated format is easier to read and write. There is one tag per line and different tag attributes are separated by the pipe character (|). A line looks like:

basename|string|(string path [, string suffix])|
The first field is the tag name (usually a function name).
The second field is the type of the return value.
The third field is the argument list for this tag.
The fourth field is the description for this tag but currently unused and should be left empty.

Except for the first field (tag name), all other field can be left empty but the pipe separator must appear for them.

You can easily write your own global tag files using this format. Just save them in your tags directory, as described earlier in the section Global tags.

Generating a global tags file

You can generate your own global tags files by parsing a list of source files. The command is:

geany -g [-P] <Tag File> <File list>
  • Tag File filename 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).
  • -P or --no-preprocessing disables using the C pre-processor to process #include directives for C/C++ source files. Use this option if you want to specify each source file on the command-line instead of using a 'master' header file. Also can be useful if you don't want to specify the CFLAGS environment variable.

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

You may need to first setup the C ignore.tags file.

For C/C++ tag files gcc is required by default, so that header files can be preprocessed to include any other headers they depend upon. If you do not want this, use the -P option described above.

For preprocessing, 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.

Generating tag files on Windows

This works basically the same as on other platforms:

"c:\program files\geany\bin\geany" -g c:\mytags.php.tags c:\code\somefile.php

C ignore.tags

You can ignore certain tags for C-based languages if they would lead to wrong parsing of the code. Use the Tools->Configuration Files->ignore.tags menu item to open the user ignore.tags file. See also Configuration file paths.

List all tag names you want to ignore in this file, separated by spaces and/or newlines.

Example:

G_GNUC_NULL_TERMINATED
G_GNUC_PRINTF
G_GNUC_WARN_UNUSED_RESULT

This will parse code like:

gchar **utils_strv_new(const gchar *first, ...) G_GNUC_NULL_TERMINATED;

More detailed information about ignore tags usage from the Exuberant Ctags manual page:

Specifies a list of identifiers which are to be specially handled while parsing C and C++ source files. This option is specifically provided to handle special cases arising through the use of pre-processor macros. When the identifiers listed are simple identifiers, these identifiers will be ignored during parsing of the source files. If an identifier is suffixed with a '+' character, ctags will also ignore any parenthesis-enclosed argument list which may immediately follow the identifier in the source files. If two identifiers are separated with the '=' character, the first identifiers is replaced by the second identifiers for parsing purposes.

For even more detailed information please read the manual page of Exuberant Ctags.

Geany extends Ctags with a '*' character suffix - this means use prefix matching, e.g. G_GNUC_* will match G_GNUC_NULL_TERMINATED, etc. Note that prefix match items should be put after other items to ensure that items like G_GNUC_PRINTF+ get parsed correctly.

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 comes after the screenshot of that tab.

General Startup preferences

./images/pref_dialog_gen_startup.png

Startup

Load files from the last session
On startup, load the same files you had open the last time you used Geany.
Load virtual terminal support
Load the library for running a terminal in the message window area.
Enable plugin support
Allow plugins to be used in Geany.

Shutdown

Save window position and geometry
Save the current position and size of the main window so next time you open Geany it's in the same location.
Confirm Exit
Have a dialog pop up to confirm that you really want to quit Geany.

Paths

Startup path
Path to start in when opening or saving files. It must be an absolute path.
Project files
Path to start in when opening project files.
Extra plugin path
By default Geany looks in the system installation and the user configuration - see Plugins. In addition the path entered here will be searched. Usually you do not need to set an additional path to search for plugins. It might be useful when Geany is installed on a multi-user machine and additional plugins are available in a common location for all users. Leave blank to not set an additional lookup path.

General Miscellaneous preferences

./images/pref_dialog_gen_misc.png

Miscellaneous

Beep on errors when compilation has finished
Have the computer make a beeping sound when compilation of your program has completed or any errors occurred.
Switch status message list at new message
Switch to the status message tab (in the notebook window at the bottom) once a new status message arrives.
Suppress status messages in the status bar

Remove all messages from the status bar. The messages are still displayed in the status messages window.

Tip

Another option is to use the Switch to Editor keybinding - it reshows the document statistics on the status bar. See Focus keybindings.

Use Windows File Open/Save dialogs
Defines whether to use the native Windows File Open/Save dialogs or whether to use the GTK default dialogs.
Auto-focus widgets (focus follows mouse)
Give the focus automatically to widgets below the mouse cursor. This works for the main editor widget, the scribble, the toolbar search field goto line fields and the VTE.

Projects

Use project-based session files
Save your current session when closing projects. You will be able to resume different project sessions, automatically opening the files you had open previously.
Store project file inside the project base directory
When creating new projects, the default path for the project file contains the project base path. Without this option enabled, the default project file path is one level above the project base path. In either case, you can easily set the final project file path in the New Project dialog. This option provides the more common defaults automatically for convenience.

Interface preferences

./images/pref_dialog_interface_interface.png

Fonts

Editor
Change the font used to display documents.
Symbol list
Change the font used for the Symbols sidebar tab.
Message window
Change the font used for the message window area.

Miscellaneous

Show status bar
Show the status bar at the bottom of the main window. It gives information about the file you are editing like the line and column you are on, whether any modifications were done, the file encoding, the filetype and other information.

Interface Notebook tab preferences

./images/pref_dialog_interface_notebook.png

Editor tabs

Show editor tabs
Show a notebook tab for all documents so you can switch between them using the mouse (instead of using the Documents window).
Show close buttons
Make each tab show a close button so you can easily close open documents.
Placement of new file tabs
Whether to create a document with its notebook tab to the left or right of all existing tabs.
Next to current
Whether to place file tabs next to the current tab rather than at the edges of the notebook.
Double-clicking hides all additional widgets
Whether to call the View->Toggle All Additional Widgets command when double-clicking on a notebook tab.

Tab positions

Editor
Set the positioning of the editor's notebook tabs to the right, left, top, or bottom of the editing window.
Sidebar
Set the positioning of the sidebar's notebook tabs to the right, left, top, or bottom of the sidebar window.
Message window
Set the positioning of the message window's notebook tabs to the right, left, top, or bottom of the message window.

Interface Toolbar preferences

Affects the main toolbar underneath the menu bar.

./images/pref_dialog_interface_toolbar.png

Toolbar

Show Toolbar
Whether to show the toolbar.
Append Toolbar to the Menu
Allows to append the toolbar to the main menu bar instead of placing it below. This is useful to save vertical space.
Customize Toolbar
See Customizing the toolbar.

Appearance

Icon Style
Select the toolbar icon style to use - either icons and text, just icons or just text. The choice System default uses whatever icon style is set by GTK.
Icon size
Select the size of the icons you see (large, small or very small). The choice System default uses whatever icon size is set by GTK.

Editor Features preferences

./images/pref_dialog_edit_features.png

Features

Line wrapping
Show long lines wrapped around to new display lines.
"Smart" home key
Whether to move the cursor to the first non-whitespace character on the line when you hit the home key on your keyboard. Pressing it again will go to the very start of the line.
Disable Drag and Drop
Do not allow the dragging and dropping of selected text in documents.
Code folding
Allow groups of lines in a document to be collapsed for easier navigation/editing.
Fold/Unfold all children of a fold point
Whether to fold/unfold all child fold points when a parent line is folded.
Use indicators to show compile errors
Underline lines with compile errors using red squiggles to indicate them in the editor area.
Newline strips trailing spaces
Remove any whitespace at the end of the line when you hit the Enter/Return key. See also Strip trailing spaces.
Line breaking column
The editor column number to insert a newline at when Line Breaking is enabled for the current document.
Comment toggle marker
A string which is added when toggling a line comment in a source file. It is used to mark the comment as toggled.

Editor Indentation preferences

./images/pref_dialog_edit_indentation.png

Indentation group

See Indentation for more information.

Width
The width of a single indent size in spaces. By default the indent size is equivalent to 4 spaces.
Detect width from file
Try to detect and set the indent width based on file content, when a file is opened.
Type

When Geany inserts indentation, whether to use:

  • Just Tabs
  • Just Spaces
  • Tabs and Spaces, depending on how much indentation is on a line

The Tabs and Spaces indent type is also known as Soft tab support in some other editors.

Detect type from file
Try to detect and set the indent type based on file content, when a file is opened.
Auto-indent mode

The type of auto-indentation you wish to use after pressing Enter, if any.

Basic
Just add the indentation of the previous line.
Current chars
Add indentation based on the current filetype and any characters at the end of the line such as {, } for C, : for Python.
Match braces
Like Current chars but for C-like languages, make a closing } brace line up with the matching opening brace.
Tab key indents

If set, pressing tab will indent the current line or selection, and unindent when pressing Shift-tab. Otherwise, the tab key will insert a tab character into the document (which can be different from indentation, depending on the indent type).

Note

There are also separate configurable keybindings for indent & unindent, but this preference allows the tab key to have different meanings in different contexts - e.g. for snippet completion.

Editor Completions preferences

./images/pref_dialog_edit_completions.png

Completions

Snippet Completion
Whether to replace special keywords after typing Tab into a pre-defined text snippet. See User-definable snippets.
XML/HTML tag auto-closing
When you open an XML/HTML tag automatically generate its completion tag.
Automatic continuation multi-line comments

Continue automatically multi-line comments in languages like C, C++ and Java when a new line is entered inside such a comment. With this option enabled, Geany will insert a * on every new line inside a multi-line comment, for example when you press return in the following C code:

/*
 * This is a C multi-line comment, press <Return>

then Geany would insert:

*

on the next line with the correct indentation based on the previous line, as long as the multi-line is not closed by */.

Autocomplete symbols
When you start to type a symbol name, look for the full string to allow it to be completed for you.
Autocomplete all words in document
When you start to type a word, Geany will search the whole document for words starting with the typed part to complete it, assuming there are no tag names to show.
Drop rest of word on completion
Remove any word part to the right of the cursor when choosing a completion list item.
Characters to type for autocompletion
Number of characters of a word to type before autocompletion is displayed.
Completion list height
The number of rows to display for the autocompletion window.
Max. symbol name suggestions
The maximum number of items in the autocompletion list.
Symbol list update frequency

The minimum delay (in milliseconds) between two symbol list updates.

This option determines how frequently the tag list is updated for the current document. The smaller the delay, the more up-to-date the symbol list (and then the completions); but rebuilding the symbol list has a cost in performance, especially with large files.

The default value is 250ms, which means the symbol list will be updated at most four times per second, even if the document changes continuously.

A value of 0 disables automatic updates, so the symbol list will only be updated upon document saving.

Auto-close quotes and brackets

Geany can automatically insert a closing bracket and quote characters when you open them. For instance, you type a ( and Geany will automatically insert ). With the following options, you can define for which characters this should work.

Parenthesis ( )
Auto-close parenthesis when typing an opening one
Curly brackets { }
Auto-close curly brackets (braces) when typing an opening one
Square brackets [ ]
Auto-close square brackets when typing an opening one
Single quotes ' '
Auto-close single quotes when typing an opening one
Double quotes " "
Auto-close double quotes when typing an opening one

Editor Display preferences

This is for visual elements displayed in the editor window.

./images/pref_dialog_edit_display.png

Display

Invert syntax highlighting colors
Invert all colors, by default this makes white text on a black background.
Show indendation guides
Show vertical lines to help show how much leading indentation there is on each line.
Show whitespaces
Mark all tabs with an arrow "-->" symbol and spaces with dots to show which kinds of whitespace are used.
Show line endings
Display a symbol everywhere that a carriage return or line feed is present.
Show line numbers
Show or hide the Line Number margin.
Show markers margin
Show or hide the small margin right of the line numbers, which is used to mark lines.
Stop scrolling at last line
When enabled Geany stops scrolling when at the last line of the document. Otherwise you can scroll one more page even if there are no real lines.

Long line marker

The long line marker helps to indicate overly-long lines, or as a hint to the user for when to break the line.

Type
Line
Show a thin vertical line in the editor window at the given column position.
Background
Change the background color of characters after the given column position to the color set below. (This is recommended over the Line setting if you use proportional fonts).
Disabled
Don't mark long lines at all.
Long line marker
Set this value to a value greater than zero to specify the column where it should appear.
Long line marker color
Set the color of the long line marker.

Virtual spaces

Virtual space is space beyond the end of each line. The cursor may be moved into virtual space but no real space will be added to the document until there is some text typed or some other text insertion command is used.

Disabled
Do not show virtual spaces
Only for rectangular selections
Only show virtual spaces beyond the end of lines when drawing a rectangular selection
Always
Always show virtual spaces beyond the end of lines

Files preferences

./images/pref_dialog_files.png

New files

Open new documents from the command-line
Whether to create new documents when passing filenames that don't exist from the command-line.
Default encoding (new files)
The type of file encoding you wish to use when creating files.
Used fixed encoding when opening files
Assume all files you are opening are using the type of encoding specified below.
Default encoding (existing files)
Opens all files with the specified encoding instead of auto-detecting it. Use this option when it's not possible for Geany to detect the exact encoding.
Default end of line characters
The end of line characters to which should be used for new files. On Windows systems, you generally want to use CR/LF which are the common characters to mark line breaks. On Unix-like systems, LF is default and CR is used on MAC systems.

Saving files

Perform formatting operations when a document is saved. These can each be undone with the Undo command.

Ensure newline at file end
Add a newline at the end of the document if one is missing.
Ensure consistent line endings
Ensures that newline characters always get converted before saving, avoiding mixed line endings in the same file.
Strip trailing spaces

Remove any whitespace at the end of each document line.

Note

This does not apply to Diff documents, e.g. patch files.

Replace tabs by space

Replace all tabs in the document with the equivalent number of spaces.

Note

It is better to use spaces to indent than use this preference - see Indentation.

Miscellaneous

Recent files list length
The number of files to remember in the recently used files list.
Disk check timeout

The number of seconds to periodically check the current document's file on disk in case it has changed. Setting it to 0 will disable this feature.

Note

These checks are only performed on local files. Remote files are not checked for changes due to performance issues (remote files are files in ~/.gvfs/).

Tools preferences

./images/pref_dialog_tools.png

Tool paths

Terminal
The command to execute a script in a terminal. Occurrences of %c in the command are substituted with the run script name, see Terminal emulators.
Browser
The location of your web browser executable.
Grep
The location of the grep executable.

Note

For Windows users: at the time of writing it is recommended to use the grep.exe from the UnxUtils project (http://sourceforge.net/projects/unxutils). The grep.exe from the Mingw project for instance might not work with Geany at the moment.

Commands

Context action
Set this to a command to execute on the current word. You can use the "%s" wildcard to pass the current word below the cursor to the specified command.

Template preferences

This data is used as meta data for various template text to insert into a document, such as the file header. You only need to set fields that you want to use in your template files.

./images/pref_dialog_templ.png

Template data

Developer
The name of the developer who will be creating files.
Initials
The initials of the developer.
Mail address

The email address of the developer.

Note

You may wish to add anti-spam markup, e.g. name<at>site<dot>ext.

Company
The company the developer is working for.
Initial version
The initial version of files you will be creating.
Year
Specify a format for the the {year} wildcard. You can use any conversion specifiers which can be used with the ANSI C strftime function. For details please see http://man.cx/strftime.
Date
Specify a format for the the {date} wildcard. You can use any conversion specifiers which can be used with the ANSI C strftime function. For details please see http://man.cx/strftime.
Date & Time
Specify a format for the the {datetime} wildcard. You can use any conversion specifiers which can be used with the ANSI C strftime function. For details please see http://man.cx/strftime.

Keybinding preferences

./images/pref_dialog_keys.png

There are some commands listed in the keybinding dialog that are not, by default, bound to a key combination, and may not be available as a menu item.

Note

For more information see the section Keybindings.

Printing preferences

./images/pref_dialog_printing.png
Use external command for printing
Use a system command to print your file out.
Use native GTK printing
Let the GTK GUI toolkit handle your print request.
Print line numbers
Print the line numbers on the left of your paper.
Print page number
Print the page number on the bottom right of your paper.
Print page header
Print a header on every page that is sent to the printer.
Use base name of the printed file
Don't use the entire path for the header, only the filename.
Date format
How the date should be printed. You can use the same format specifiers as in the ANSI C function strftime(). For details please see http://man.cx/strftime.

Various preferences

./images/pref_dialog_various.png

Rarely used preferences, explained in the table below. A few of them require restart to take effect, and a few other will only affect newly opened or created documents before restart.

Key Description Default Applies
Editor related      
use_gtk_word_boundaries Whether to look for the end of a word when using word-boundary related Scintilla commands (see Scintilla keyboard commands). true to new documents
brace_match_ltgt Whether to highlight <, > angle brackets. false immediately
complete_snippets_whilst_editing Whether to allow completion of snippets when editing an existing line (i.e. there is some text after the current cursor position on the line). Only used when the keybinding Complete snippet is set to Space. false immediately
show_editor_scrollbars Whether to display scrollbars. If set to false, the horizontal and vertical scrollbars are hidden completely. true immediately
indent_hard_tab_width The size of a tab character. Don't change it unless you really need to; use the indentation settings instead. 8 immediately
Interface related      
show_symbol_list_expanders Whether to show or hide the small expander icons on the symbol list treeview. true to new documents
allow_always_save Whether files can be saved always, even if they don't have any changes. By default, the Save button and menu item are disabled when a file is unchanged. When setting this option to true, the Save button and menu item are always active and files can be saved. false immediately
compiler_tab_autoscroll Whether to automatically scroll to the last line of the output in the Compiler tab. true immediately
statusbar_template The status bar statistics line format. (Search in src/ui_utils.c for details). See below. immediately
new_document_after_close Whether to open a new document after all documents have been closed. false immediately
msgwin_status_visible Whether to show the Status tab in the Messages Window true immediately
msgwin_compiler_visible Whether to show the Compiler tab in the Messages Window true immediately
msgwin_messages_visible Whether to show the Messages tab in the Messages Window true immediately
msgwin_scribble_visible Whether to show the Scribble tab in the Messages Window true immediately

By default, statusbar_template is empty. This tells Geany to use its internal default, which is currently:

line: %l / %L\t col: %c\t sel: %s\t %w      %t      %mmode: %M      encoding: %e      filetype: %f      scope: %S

Note that \t = tab.

Key Description Default Applies
VTE related      
emulation Terminal emulation mode. Only change this if you have VTE termcap files other than vte/termcap/xterm. xterm immediately
send_selection_unsafe By default, Geany strips any trailing newline characters from the current selection before sending it to the terminal to not execute arbitrary code. This is mainly a security feature. If, for whatever reasons, you really want it to be executed directly, set this option to true. false immediately
send_cmd_prefix String with which prefix the commands sent to the shell. This may be used to tell some shells (BASH with HISTCONTROL set to ignorespace, ZSH with HIST_IGNORE_SPACE enabled, etc.) from putting these commands in their history by setting this to a space. Note that leading spaces must be escaped using s in the configuration file. Empty immediately
File related      
use_atomic_file_saving Defines the mode how Geany saves files to disk. If disabled, Geany directly writes the content of the document to disk. This might cause loss of data when there is no more free space on disk to save the file. When set to true, Geany first saves the contents into a temporary file and if this succeeded, the temporary file is moved to the real file to save. This gives better error checking in case of no more free disk space. But it also destroys hard links of the original file and its permissions (e.g. executable flags are reset). Use this with care as it can break things seriously. The better approach would be to ensure your disk won't run out of free space. false immediately
use_gio_unsafe_file_saving Whether to use GIO as the unsafe file saving backend. It is better on most situations but is known not to work correctly on some complex setups. true immediately
gio_unsafe_save_backup Make a backup when using GIO unsafe file saving. Backup is named filename~. false immediately
Filetype related      
extract_filetype_regex Regex to extract filetype name from file via capture group one. See below. immediately
Search related      
find_selection_type See Find selection. 0 immediately
Build Menu related      
number_ft_menu_items The maximum number of menu items in the filetype section of the Build menu. 2 on restart
number_non_ft_menu_items The maximum number of menu items in the independent section of the Build menu. 3 on restart
number_exec_menu_items The maximum number of menu items in the execute section of the Build menu. 2 on restart

The extract_filetype_regex has the default value GEANY_DEFAULT_FILETYPE_REGEX.

Terminal (VTE) preferences

See also: Virtual terminal emulator widget (VTE).

./images/pref_dialog_vte.png

Terminal widget

Terminal font
Select the font that will be used in the terminal emulation control.
Foreground color
Select the font color.
Background color
Select the background color of the terminal.
Background image
Select the background image to show behind the terminal's text.
Scrollback lines
The number of lines buffered so that you can scroll though the history.
Shell
The location of the shell on your system.
Scroll on keystroke
Scroll the terminal to the prompt line when pressing a key.
Scroll on output
Scroll the output down.
Cursor blinks
Let the terminal cursor blink.
Override Geany keybindings
Allow the VTE to receive keyboard shortcuts (apart from focus commands).
Disable menu shortcut key (F10 by default)
Disable the menu shortcut when you are in the virtual terminal.
Follow path of the current file
Make the path of the terminal change according to the path of the current file.
Execute programs in VTE
Execute programs in the virtual terminal instead of using the external terminal tool. Note that if you run multiple execute commands at once the output may become mixed together in the VTE.
Don't use run script
Don't use the simple run script which is usually used to display the exit status of the executed program. This can be useful if you already have a program running in the VTE like a Python console (e.g. ipython). Use this with care.

Project management

Project management is optional in Geany. Currently it can be used for:

  • Storing and opening session files on a project basis.
  • Overriding default settings with project equivalents.
  • Configuring the Build menu on a project basis.

A list of session files can be stored and opened with the project when the Use project-based session files preference is enabled, in the Project group of the Preferences dialog.

As long as a project is open, the Build menu will use the items defined in project's settings, instead of the defaults. See Build Menu Configuration for information on configuring the menu.

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.

The project menu items are detailed below.

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. Currently it's only used for a template wildcard - see Template wildcards.

The Base path field is used as the directory to run the Build menu commands. The specified path can be an absolute path or it is considered to be relative to the project's file name.

The File patterns field allows to specify a list of file patterns for the project, which can be used in the Find in files dialog.

The Indentation tab allows you to override the default Indentation settings.

Open project

The Open command displays a standard file chooser, starting in ~/projects. Choose a project file named with the .geany extension.

When project session support is enabled, Geany will close the currently open files and open the session files associated with the project.

Close project

Project file settings are saved when the project is closed.

When project session support is enabled, Geany will close the project session files and open any previously closed default session files.

Build menu

After editing code with Geany, the next step is to compile, link, build, interpret, run etc. As Geany supports many languages each with a different approach to such operations, and as there are also many language independent software building systems, Geany does not have a built-in build system, nor does it limit which system you can use. Instead the build menu provides a configurable and flexible means of running any external commands to execute your preferred build system.

This section provides a description of the default configuration of the build menu and then covers how to configure it, and where the defaults fit in.

Running the commands from within Geany has two benefits:

  • The current file is automatically saved before the command is run.
  • The output is captured in the Compiler notebook tab and parsed for warnings or errors.

Warnings and errors that can be parsed for line numbers will be shown in red in the Compiler tab and you can click on them to switch to the relevant source file (or open it) and mark the line number. Also lines with warnings or errors are marked in the source, see Indicators below.

Tip

If Geany's default error message parsing does not parse errors for the tool you're using, you can set a custom regex in the Build Commands Dialog, see Build Menu Configuration.

Indicators

Indicators are red squiggly underlines which are used to highlight errors which occurred while compiling the current file. So you can easily see where your code failed to compile. You can remove them by selecting Remove Error Indicators in the Document menu.

If you do not like this feature, you can disable it - see Editor Features preferences.

Default build menu items

Depending on the current file's filetype, the default Build menu will contain the following items:

  • Compile
  • Build
  • Make All
  • Make Custom Target
  • Make Object
  • Next Error
  • Previous Error
  • Execute
  • Set Build Menu Commands

Compile

The Compile command has different uses for different kinds of files.

For compilable languages such as C and C++, the Compile command is set up 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 if that is not available 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.

Note

If you need complex settings for your build system, or several different settings, then writing a Makefile and using the Make commands is recommended; this will also make it easier for users to build your software.

Make

This runs "make" in the same directory as the current file.

Make custom target

This is similar to running 'Make' 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 the filename for 'current_file'. It is useful for building just the current file without building the whole project.

Next error

The next error item will move to the next detected error in the file.

Previous error

The previous error item will move to the previous detected error in the file.

Execute

Execute will run the corresponding executable file, shell script or interpreted script in a terminal window. The command set in the "Set Build Commands" dialog is run in a script to ensure the terminal stays open after execution completes. Note: see Terminal emulators below for the command format. Alternatively the built-in VTE can be used if it is available - see Virtual terminal emulator widget (VTE).

After your program or script has finished executing, the run script will prompt you to press the return key. This allows you to review any text output from the program before the terminal window is closed.

Note

The execute command output is not parsed for errors.

Stopping running processes

When there is a running program, the Execute menu item in the menu and the Run button in the toolbar each become a stop button so you can stop the current running program (and any child processes). This works by sending the SIGQUIT signal to the process.

Depending on the process you started it is possible that the process cannot be stopped. For example this can happen when the process creates more than one child process.

Terminal emulators

The Terminal field of the tools preferences tab requires a command to execute the terminal program and to pass it the name of the Geany run script that it should execute in a Bourne compatible shell (eg /bin/sh). The marker "%c" is substituted with the name of the Geany run script, which is created in the working directory set in the Build commands dialog, see Build menu commands dialog for details.

As an example the default (Linux) command is:

xterm -e "/bin/sh %c"

Set build commands

By default Compile, Build and Execute are fairly basic commands. You may wish to customise them using Set Build Commands.

E.g. for C 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.

Build menu configuration

The build menu has considerable flexibility and configurability, allowing both menu labels the commands they execute and the directory they execute in to be configured.

For example, if you change one of the default make commands to run say 'waf' you can also change the label to match.

These settings are saved automatically when Geany is shut down.

The build menu is divided into four groups of items each with different behaviors:

  • Filetype build commands - are configurable and depend on the filetype of the current document; they capture output in the compiler tab and parse it for errors.
  • Independent build commands - are configurable and mostly don't depend on the filetype of the current document; they also capture output in the compiler tab and parse it for errors.
  • Execute commands - are configurable and intended for executing your program or other long running programs. The output is not parsed for errors and is directed to the terminal command selected in preferences.
  • Fixed commands - these perform built-in actions:
    • Go to the next error.
    • Go to the previous error.
    • Show the build menu commands dialog.

The maximum numbers of items in each of the configurable groups can be configured in the Various preferences. Even though the maximum number of items may have been increased, only those menu items that have values configured are shown in the menu.

The groups of menu items obtain their configuration from four potential sources. The highest priority source that has the menu item defined will be used. The sources in decreasing priority are:

  • A project file if open
  • The user preferences
  • The system filetype definitions
  • The defaults

The detailed relationships between sources and the configurable menu item groups is shown in the following table.

Group Project File Preferences System Filetype Defaults
Filetype

Loads From: project file

Saves To: project file

Loads From: filetypes.xxx file in ~/.config/geany/filedefs

Saves to: as above, creating if needed.

Loads From: filetypes.xxx in Geany install

Saves to: as user preferences left.

None
Filetype Independent

Loads From: project file

Saves To: project file

Loads From: geany.conf file in ~/.config/geany

Saves to: as above, creating if needed.

Loads From: filetypes.xxx in Geany install

Saves to: as user preferences left.

1:
Label: _Make Command: make
2:
Label: Make Custom _Target Command: make
3:
Label: Make _Object Command: make %e.o
Execute

Loads From: project file or else filetype defined in project file

Saves To: project file

Loads From: geany.conf file in ~/.config/geany or else filetypes.xxx file in ~/.config/geany/filedefs

Saves To: filetypes.xxx file in ~/.config/geany/filedefs

Loads From: filetypes.xxx in Geany install

Saves To: as user preferences left.

Label: _Execute Command: ./%e

The following notes on the table reference cells by coordinate as (group,source):

  • General - for filetypes.xxx substitute the appropriate extension for the filetype of the current document for xxx - see filenames.
  • System Filetypes - Labels loaded from these sources are locale sensitive and can contain translations.
  • (Filetype, Project File) and (Filetype, Preferences) - preferences use a full filetype file so that users can configure all other filetype preferences as well. Projects can only configure menu items per filetype. Saving in the project file means that there is only one file per project not a whole directory.
  • (Filetype-Independent, System Filetype) - although conceptually strange, defining filetype-independent commands in a filetype file, this provides the ability to define filetype dependent default menu items.
  • (Execute, Project File) and (Execute, Preferences) - the project independent execute and preferences independent execute commands can only be set by hand editing the appropriate file, see Preferences file format and Project file format.

Build menu commands dialog

Most of the configuration of the build menu is done through the Build Menu Commands Dialog. You edit the configuration sourced from preferences in the dialog opened from the Build->Build Menu Commands item and you edit the configuration from the project in the build tab of the project preferences dialog. Both use the same form shown below.

./images/build_menu_commands_dialog.png

The dialog is divided into three sections:

  • Filetype build commands (selected based on the current document's filetype).
  • Independent build commands (available regardless of filetype).
  • Filetype execute commands.

The filetype and independent sections also each contain a field for the regular expression used for parsing command output for error and warning messages.

The columns in the first three sections allow setting of the label, command, and working directory to run the command in.

An item with an empty label will not be shown in the menu.

An empty working directory will default to the directory of the current document. If there is no current document then the command will not run.

The dialog will always show the command selected by priority, not just the commands configured in this configuration source. This ensures that you always see what the menu item is going to do if activated.

If the current source of the menu item is higher priority than the configuration source you are editing then the command will be shown in the dialog but will be insensitive (greyed out). This can't happen with the project source but can with the preferences source dialog.

The clear buttons remove the definition from the configuration source you are editing. When you do this the command from the next lower priority source will be shown. To hide lower priority menu items without having anything show in the menu configure with a nothing in the label but at least one character in the command.

Substitutions in commands and working directories

The first occurence of each of the following character sequences in each of the command and working directory fields is substituted by the items specified below before the command is run.

  • %d - substituted by the absolute path to the directory of the current file.
  • %e - substituted by the name of the current file without the extension or path.
  • %f - substituted by the name of the current file without the path.
  • %p - if a project is open, substituted by the base path from the project.

Note

If the basepath set in the project preferences is not an absolute path , then it is taken as relative to the directory of the project file. This allows a project file stored in the source tree to specify all commands and working directories relative to the tree itself, so that the whole tree including the project file, can be moved and even checked into and out of version control without having to re-configure the build menu.

Build menu keyboard shortcuts

Keyboard shortcuts can be defined for the first two filetype menu items, the first three independent menu items, the first two execute menu items and the fixed menu items. In the keybindings configuration dialog (see Keybinding preferences) these items are identified by the default labels shown in the Build Menu section above.

It is currently not possible to bind keyboard shortcuts to more than these menu items.

You can also use underlines in the labels to set mnemonic characters.

Old settings

The configurable Build Menu capability was introduced in Geany 0.19 and required a new section to be added to the configuration files (See Preferences file format). Geany will still load older format project, preferences and filetype file settings and will attempt to map them into the new configuration format. There is not a simple clean mapping between the formats. The mapping used produces the most sensible results for the majority of cases. However, if they do not map the way you want, you may have to manually configure some settings using the Build Commands Dialog or the Build tab of the project preferences dialog.

Any setting configured in either of these dialogs will override settings mapped from older format configuration files.

Printing support

Since Geany 0.13 there has been printing support using GTK's printing API. The printed page(s) will look nearly the same as on your screen in Geany. Additionally, there are some options to modify the printed page(s).

Note

The background text color is set to white, except for text with a white foreground. This allows dark color schemes to save ink when printing.

You can define whether to print line numbers, page numbers at the bottom of each page and whether to print a page header on each page. This header contains the filename of the printed document, the current page number and the date and time of printing. By default, the file name of the document with full path information is added to the header. If you prefer to add only the basename of the file(without any path information) you can set it in the preferences dialog. You can also adjust the format of the date and time added to the page header. The available conversion specifiers are the same as the ones which can be used with the ANSI C strftime function.

All of these settings can also be changed in the print dialog just before actual printing is done. On Unix-like systems the provided print dialog offers a print preview. The preview file is opened with a PDF viewer and by default GTK uses evince for print preview. If you have not installed evince or just want to use another PDF viewer, you can change the program to use in the file .gtkrc-2.0 (usually found in your home directory). Simply add a line like:

gtk-print-preview-command = "epdfview %f"

at the end of the file. Of course, you can also use xpdf, kpdf or whatever as the print preview command.

Geany also provides an alternative basic printing support using a custom print command. 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 many 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.

Plugins

Plugins are loaded at startup, if the Enable plugin support general preference is set. There is also a command-line option, -p, which prevents plugins being loaded. Plugins are scanned in the following directories:

  • $prefix/lib/geany on Unix-like systems (see Installation prefix)
  • The lib subfolder of the installation path on Windows.
  • The plugins subfolder of the user configuration directory - see Configuration file paths.
  • The Extra plugin path preference (usually blank) - see Paths.

Most plugins add menu items to the Tools menu when they are loaded.

See also Plugin documentation for information about single plugins which are included in Geany.

Plugin manager

The Plugin Manager dialog lets you choose which plugins should be loaded at startup. You can also load and unload plugins on the fly using this dialog. Once you click the checkbox for a specific plugin in the dialog, it is loaded or unloaded according to its previous state. By default, no plugins are loaded at startup until you select some. You can also configure some plugin specific options if the plugin provides any.

Keybindings

Geany supports the default keyboard shortcuts for the Scintilla editing widget. For a list of these commands, see Scintilla keyboard commands. The Scintilla keyboard shortcuts will be overridden by any custom keybindings with the same keyboard shortcut.

Switching documents

There are some non-configurable bindings to switch between documents, listed below. These can also be overridden by custom keybindings.

Key Action
Alt-[1-9] Select left-most tab, from 1 to 9.
Alt-0 Select right-most tab.

See also Notebook tab keybindings.

Configurable keybindings

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 resulting dialog you can press the key combination you want to assign to the action and it will be saved when you press OK. You can define only one key combination for each action and each key combination can only be defined for one action.

The following tables list all customizable keyboard shortcuts, those which are common to many applications are marked with (C) after the shortcut.

File keybindings

Action Default shortcut Description
New Ctrl-N (C) Creates a new file.
Open Ctrl-O (C) Opens a file.
Open selected file Ctrl-Shift-O Opens the selected filename.
Re-open last closed tab   Re-opens the last closed document tab.
Save Ctrl-S (C) Saves the current file.
Save As   Saves the current file under a new name.
Save all Ctrl-Shift-S Saves all open files.
Close all Ctrl-Shift-W Closes all open files.
Close Ctrl-W (C) Closes the current file.
Reload file Ctrl-R (C) Reloads the current file. All unsaved changes will be lost.
Print Ctrl-P (C) Prints the current file.
Quit Ctrl-Q (C) Quits Geany.

Editor keybindings

Action Default shortcut Description
Undo Ctrl-Z (C) Un-does the last action.
Redo Ctrl-Y Re-does the last action.
Delete current line(s) Ctrl-K Deletes the current line (and any lines with a selection).
Delete to line end Ctrl-Shift-Delete Deletes from the current caret position to the end of the current line.
Duplicate line or selection Ctrl-D Duplicates the current line or selection.
Transpose current line   Transposes the current line with the previous one.
Scroll to current line Ctrl-Shift-L Scrolls the current line into the centre of the view. The cursor position and or an existing selection will not be changed.
Scroll up by one line Alt-Up Scrolls the view.
Scroll down by one line Alt-Down Scrolls the view.
Complete word Ctrl-Space Shows the autocompletion list. If already showing tag completion, it shows document word completion instead, even if it is not enabled for automatic completion. Likewise if no tag suggestions are available, it shows document word completion.
Show calltip Ctrl-Shift-Space Shows a calltip for the current function or method.
Show macro list Ctrl-Return Shows a list of available macros and variables in the workspace.
Complete snippet Tab If you type a construct like if or for and press this key, it will be completed with a matching template.
Suppress snippet completion   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 inserted, depending on what the construct completion keybinding is set to. For example, if you have set the construct completion keybinding to space, then setting this to Shift+space will prevent construct completion and insert a space.
Context Action   Executes a command and passes the current word (near the cursor position) or selection as an argument. See the section called Context actions.
Move cursor in snippet   Jumps to the next defined cursor positions in a completed snippets if multiple cursor positions where defined.
Word part completion Tab When the autocompletion list is visible, complete the currently selected item up to the next word part.
Move line(s) up Alt-PageUp Move the current line or selected lines up by one line.
Move line(s) down Alt-PageDown Move the current line or selected lines down by one line.

Clipboard keybindings

Action Default shortcut Description
Cut Ctrl-X (C) Cut the current selection to the clipboard.
Copy Ctrl-C (C) Copy the current selection to the clipboard.
Paste Ctrl-V (C) Paste the clipboard text into the current document.
Cut current line(s) Ctrl-Shift-X Cuts the current line (and any lines with a selection) to the clipboard.
Copy current line(s) Ctrl-Shift-C Copies the current line (and any lines with a selection) to the clipboard.

Select keybindings

Action Default shortcut Description
Select all Ctrl-A (C) Makes a selection of all text in the current document.
Select current word Alt-Shift-W Selects the current word under the cursor.
Select current paragraph Alt-Shift-P Selects the current paragraph under the cursor which is defined by two empty lines around it.
Select current line(s) Alt-Shift-L Selects the current line under the cursor (and any partially selected lines).
Select to previous word part   (Extend) selection to previous word part boundary.
Select to next word part   (Extend) selection to next word part boundary.

Insert keybindings

Action Default shortcut Description
Insert date Shift-Alt-D Inserts a customisable date.
Insert alternative whitespace   Inserts a tab character when spaces should be used for indentation and inserts space characters of the amount of a tab width when tabs should be used for indentation.
Insert New Line Before Current   Inserts a new line with indentation.
Insert New Line After Current   Inserts a new line with indentation.

Format keybindings

Action Default shortcut Description
Toggle case of selection Ctrl-Alt-U Changes the case of the selection. A lowercase selection will be changed into uppercase and vice versa. If the selection contains lower- and uppercase characters, all will be converted to lowercase.
Comment line   Comments current line or selection.
Uncomment line   Uncomments current line or selection.
Toggle line commentation Ctrl-E Comments a line if it is not commented or removes a comment if the line is commented.
Increase indent Ctrl-I Indents the current line or selection by one tab or by spaces in the amount of the tab width setting.
Decrease indent Ctrl-U Removes one tab or the amount of spaces of the tab width setting from the indentation of the current line or selection.
Increase indent by one space   Indents the current line or selection by one space.
Decrease indent by one space   Deindents the current line or selection by one space.
Smart line indent   Indents the current line or all selected lines with the same indentation as the previous line.
Send to Custom Command 1 (2,3) Ctrl-1 (2,3) Passes the current selection to a configured external command (available for the first three configured commands, see Sending text through custom commands for details).
Send Selection to Terminal   Sends the current selection or the current line (if there is no selection) to the embedded Terminal (VTE).
Reflow lines/block   Reformat selected lines or current (indented) text block, breaking lines at the long line marker or the line breaking column if line breaking is enabled for the current document.

Settings keybindings

Action Default shortcut Description
Preferences Ctrl-Alt-P Opens preferences dialog.
Plugin Preferences   Opens plugin preferences dialog.

Search keybindings

Action Default shortcut Description
Find Ctrl-F (C) Opens the Find dialog.
Find Next Ctrl-G Finds next result.
Find Previous Ctrl-Shift-G Finds previous result.
Find Next Selection   Finds next occurence of selected text.
Find Previous Selection   Finds previous occurence of selected text.
Replace Ctrl-H (C) Opens the Replace dialog.
Find in files Ctrl-Shift-F Opens the Find in files dialog.
Next message   Jumps to the line with the next message in the Messages window.
Previous message   Jumps to the line with the previous message in the Messages window.
Find Usage Ctrl-Shift-E Finds all occurrences of the current word (near the keyboard cursor) or selection in all open documents and displays them in the messages window.
Find Document Usage Ctrl-Shift-D Finds all occurrences of the current word (near the keyboard cursor) or selection in the current document and displays them in the messages window.
Mark All Ctrl-Shift-M Highlight all matches of the current word/selection in the current document with a colored box. If there's nothing to find, or the cursor is next to an existing match, the highlighted matches will be cleared.

Go to keybindings

Action Default shortcut Description
Navigate forward a location Alt-Right (C) Switches to the next location in the navigation history. See the section called Code Navigation History.
Navigate back a location Alt-Left (C) Switches to the previous location in the navigation history. See the section called Code navigation history.
Go to line Ctrl-L Focuses the Go to Line entry (if visible) or shows the Go to line dialog.
Goto matching brace Ctrl-B If the cursor is ahead or behind a brace, then it is moved to the brace which belongs to the current one. If this keyboard shortcut is pressed again, the cursor is moved back to the first brace.
Toggle marker Ctrl-M Set a marker on the current line, or clear the marker if there already is one.
Goto next marker Ctrl-. Goto the next marker in the current document.
Goto previous marker Ctrl-, Goto the previous marker in the current document.
Go to tag definition Ctrl-T Jump to the definition of the current word or selection. See Go to tag definition.
Go to tag declaration Ctrl-Shift-T Jump to the declaration of the current word or selection. See Go to tag declaration.
Go to Start of Line Home Move the caret to the start of the line. Behaves differently if smart_home_key is set.
Go to End of Line End Move the caret to the end of the line.
Go to Start of Display Line Alt-Home Move the caret to the start of the display line. This is useful when you use line wrapping and want to jump to the start of the wrapped, virtual line, not the real start of the whole line. If the line is not wrapped, it behaves like Go to Start of Line.
Go to End of Display Line Alt-End Move the caret to the end of the display line. If the line is not wrapped, it behaves like Go to End of Line.
Go to Previous Word Part Ctrl-/ Goto the previous part of the current word.
Go to Next Word Part Ctrl-\ Goto the next part of the current word.

View keybindings

Action Default shortcut Description
Fullscreen F11 (C) Switches to fullscreen mode.
Toggle Messages Window   Toggles the message window (status and compiler messages) on and off.
Toggle Sidebar   Shows or hides the sidebar.
Toggle all additional widgets   Hide and show all additional widgets like the notebook tabs, the toolbar, the messages window and the status bar.
Zoom In Ctrl-+ (C) Zooms in the text.
Zoom Out Ctrl-- (C) Zooms out the text.
Zoom Reset Ctrl-0 Reset any previous zoom on the text.

Focus keybindings

Action Default shortcut Description
Switch to Editor F2 Switches to editor widget. Also reshows the document statistics line (after a short timeout).
Switch to Search Bar F7 Switches to the search bar in the toolbar (if visible).
Switch to Message Window   Focus the Message Window's current tab.
Switch to Compiler   Focus the Compiler message window tab.
Switch to Messages   Focus the Messages message window tab.
Switch to Scribble F6 Switches to scribble widget.
Switch to VTE F4 Switches to VTE widget.
Switch to Sidebar   Focus the Sidebar.
Switch to Sidebar Symbol List   Focus the Symbol list tab in the Sidebar (if visible).
Switch to Sidebar Document List   Focus the Document list tab in the Sidebar (if visible).

Notebook tab keybindings

Action Default shortcut Description
Switch to left document Ctrl-PageUp (C) Switches to the previous open document.
Switch to right document Ctrl-PageDown (C) Switches to the next open document.
Switch to last used document Ctrl-Tab Switches to the previously shown document (if it's still open). Holding Ctrl (or another modifier if the keybinding has been changed) will show a dialog, then repeated presses of the keybinding will switch to the 2nd-last used document, 3rd-last, etc. Also known as Most-Recently-Used documents switching.
Move document left Ctrl-Shift-PageUp Changes the current document with the left hand one.
Move document right Ctrl-Shift-PageDown Changes the current document with the right hand one.
Move document first   Moves the current document to the first position.
Move document last   Moves the current document to the last position.

Document keybindings

Action Default shortcut Description
Clone   See Cloning documents.
Replace tabs by space   Replaces all tabs with the right amount of spaces.
Replace spaces by tabs   Replaces leading spaces with tab characters.
Toggle current fold   Toggles the folding state of the current code block.
Fold all   Folds all contractible code blocks.
Unfold all   Unfolds all contracted code blocks.
Reload symbol list Ctrl-Shift-R Reloads the tag/symbol list.
Toggle Line wrapping   Enables or disables wrapping of long lines.
Toggle Line breaking   Enables or disables automatic breaking of long lines at a configurable column.
Remove Markers   Remove any markers on lines or words which were set by using 'Mark All' in the search dialog or by manually marking lines.
Remove Error Indicators   Remove any error indicators in the current document.
Remove Markers and Error Indicators   Combines Remove Markers and Remove Error Indicators.

Project keybindings

Action Default shortcut Description
New   Create a new project.
Open   Opens a project file.
Properties   Shows project properties.
Close   Close the current project.

Build keybindings

Action Default shortcut Description
Compile F8 Compiles the current file.
Build F9 Builds (compiles if necessary and links) the current file.
Make all Shift-F9 Builds the current file with the Make tool.
Make custom target Ctrl-Shift-F9 Builds the current file with the Make tool and a given target.
Make object Shift-F8 Compiles the current file with the Make tool.
Next error   Jumps to the line with the next error from the last build process.
Previous error   Jumps to the line with the previous error from the last build process.
Run F5 Executes the current file in a terminal emulation.
Set Build Commands   Opens the build commands dialog.

Tools keybindings

Action Default shortcut Description
Show Color Chooser   Opens the Color Chooser dialog.

Help keybindings

Action Default shortcut Description
Help F1 (C) Opens the manual.

Configuration files

Warning

You must use UTF-8 encoding without BOM for configuration files.

Configuration file paths

Geany has default configuration files installed for the system and also per-user configuration files.

The system files should not normally be edited because they will be overwritten when upgrading Geany.

The user configuration directory can be overridden with the -c switch, but this is not normally done. See Command line options.

Note

Any missing subdirectories in the user configuration directory will be created when Geany starts.

You can check the paths Geany is using with Help->Debug Messages. Near the top there should be 2 lines with something like:

Geany-INFO: System data dir: /usr/share/geany
Geany-INFO: User config dir: /home/username/.config/geany

Paths on Unix-like systems

The system path is $prefix/share/geany, where $prefix is the path where Geany is installed (see Installation prefix).

The user configuration directory is normally: /home/username/.config/geany

Paths on Windows

The system path is the data subfolder of the installation path on Windows.

The user configuration directory might vary, but on Windows XP it's: C:\Documents and Settings\UserName\Application Data\geany

Tools menu items

There's a Configuration files submenu in the Tools menu that contains items for some of the available user configuration files. Clicking on one opens it in the editor for you to update. Geany will reload the file after you have saved it.

Note

Other configuration files not shown here will need to be opened manually, and will not be automatically reloaded when saved. (see Reload Configuration below).

There's also a Reload Configuration item which can be used if you updated one of the other configuration files, or modified or added template files.

Reload Configuration is also necessary to update syntax highlighting colors.

Note

Syntax highlighting colors aren't updated in open documents after saving filetypes.common as this may take a significant amount of time.

Global configuration file

System administrators can add a global configuration file for Geany which will be used when starting Geany and a user configuration file does not exist.

The global configuration file is read from geany.conf in the system configuration path - see Configuration file paths. It can contain any settings which are found in the usual configuration file created by Geany, but does not have to contain all settings.

Note

This feature is mainly intended for package maintainers or system admins who want to set up Geany in a multi user environment and set some sane default values for this environment. Usually users won't need to do that.

Filetype definition files

All color definitions and other filetype specific settings are stored in the filetype definition files. Those settings are colors for syntax highlighting, general settings like comment characters or word delimiter characters as well as compiler and linker settings.

See also Configuration file paths.

Filenames

Each filetype has a corresponding filetype definition file. The format for built-in filetype Foo is:

filetypes.foo

The extension is normally just the filetype name in lower case.

However there are some exceptions:

Filetype Extension
C++ cpp
C# cs
Make makefile
Matlab/Octave matlab

There is also the special file filetypes.common.

For custom filetypes, the filename for Foo is different:

filetypes.Foo.conf

See the link for details.

System files

The system-wide filetype configuration files can be found in the system configuration path and are called filetypes.$ext, where $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.

Warning

It is not recommended that users edit the system-wide files, because they will be overridden when Geany is updated.

User files

To change the settings, copy a file from the system configuration path to the subdirectory filedefs in your user configuration directory. Then you can edit the file and the changes will still be available after an update of Geany.

Alternatively, you can create the file yourself and add only the settings you want to change. All missing settings will be read from the corresponding system configuration file.

Custom filetypes

At startup Geany looks for filetypes.*.conf files in the system and user filetype paths, adding any filetypes found with the name matching the '*' wildcard - e.g. filetypes.Bar.conf.

Custom filetypes are not as powerful as built-in filetypes, but support for the following has been implemented:

  • Recognizing and setting the filetype (after the user has manually edited filetype_extensions.conf).

  • Reading filetype settings in the [settings] section, including:
    • Using an existing syntax highlighting lexer (lexer_filetype key).
    • Using an existing tag parser (tag_parser key).
  • Build commands ([build-menu] section).

  • Loading global tags files (sharing the tag_parser namespace).

See Filetype configuration for details on each setting.

Creating a custom filetype from an existing filetype

Because most filetype settings will relate to the syntax highlighting (e.g. styling, keywords, lexer_properties sections), it is best to copy an existing filetype file that uses the lexer you wish to use as the basis of a custom filetype, using the correct filename extension format shown above, e.g.:

cp filetypes.foo filetypes.Bar.conf

Then add the lexer_filetype=Foo setting (if not already present) and add/adjust other settings.

Warning

The [styling] and [keywords] sections have key names specific to each filetype/lexer. You must follow the same names - in particular, some lexers only support one keyword list, or none.

Filetype configuration

As well as the sections listed below, each filetype file can contain a [build-menu] section as described in [build-menu] section.

[styling] section

In this section the colors for syntax highlighting are defined. The manual format is:

  • key=foreground_color;background_color;bold_flag;italic_flag

Colors have to be specified as RGB hex values prefixed by 0x or # similar to HTML/CSS hex triplets. For example, all of the following are valid values for pure red; 0xff0000, 0xf00, #ff0000, or #f00. The values are case-insensitive but it is a good idea to use lower-case. Note that you can also use named colors as well by substituting the color value with the name of a color as defined in the [named_colors] section, see the [named_colors] Section for more information.

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.

You can omit fields to use the values from the style named "default".

E.g. key=0xff0000;;true

This makes the key style have red foreground text, default background color text and bold emphasis.

Using a named style

The second format uses a named style name to reference a style defined in filetypes.common.

  • key=named_style
  • key2=named_style2,bold,italic

The bold and italic parts are optional, and if present are used to toggle the bold or italic flags to the opposite of the named style's flags. In contrast to style definition booleans, they are a literal ",bold,italic" and commas are used instead of semi-colons.

E.g. key=comment,italic

This makes the key style match the "comment" named style, but with italic emphasis.

To define named styles, see the filetypes.common [named_styles] Section.

Reading styles from another filetype

You can automatically copy all of the styles from another filetype definition file by using the following syntax for the [styling] group:

[styling=Foo]

Where Foo is a filetype name. The corresponding [styling] section from filetypes.foo will be read.

This is useful when the same lexer is being used for multiple filetypes (e.g. C/C++/C#/Java/etc). For example, to make the C++ styling the same as the C styling, you would put the following in filetypes.cpp:

[styling=C]

[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.

[lexer_properties] section

Here any special properties for the Scintilla lexer can be set in the format key.name.field=some.value.

Properties Geany uses are listed in the system filetype files. To find other properties you need Geany's source code:

egrep -o 'GetProperty\w*\("([^"]+)"[^)]+\)' scintilla/Lex*.cxx

[settings] section

extension

This is the default file extension used when saving files, not including the period character (.). The extension used should match one of the patterns associated with that filetype (see Filetype extensions).

Example: extension=cxx

wordchars

These characters define word boundaries when making selections and searching using word matching options.

Example: (look at system filetypes.* files)

Note

This overrides the whitespace_chars filetypes.common setting.

comment_single

A character or string which is used to comment code. If you want to use multiline comments only, don't set this but rather comment_open and comment_close.

Single-line comments are used in priority over multiline comments to comment a line, e.g. with the Comment/Uncomment line command.

Example: comment_single=//

comment_open

A character or string which is used to comment code. You need to also set comment_close to really use multiline comments. If you want to use single-line comments, prefer setting comment_single.

Multiline comments are used in priority over single-line comments to comment a block, e.g. template comments.

Example: comment_open=/*

comment_close

If multiline comments are used, this is the character or string to close the comment.

Example: comment_close=*/

comment_use_indent

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.

Note: Comment indentation

comment_use_indent=true would generate this if a line is commented (e.g. with Ctrl-D):

#command_example();

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 ';').

Example: comment_use_indent=true

context_action_cmd

A command which can be executed on the current 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 for security reasons, it is 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"

Example: context_action_cmd=devhelp -s "%s"

tag_parser
The TagManager language name, e.g. "C". Usually the same as the filetype name.
lexer_filetype

A filetype name to setup syntax highlighting from another filetype. This must not be recursive, i.e. it should be a filetype name that doesn't use the lexer_filetype key itself, e.g.:

lexer_filetype=C
#lexer_filetype=C++

The second line is wrong, because filetypes.cpp itself uses lexer_filetype=C, which would be recursive.

symbol_list_sort_mode

What the default symbol list sort order should be.

Value Meaning
0 Sort tags by name
1 Sort tags by appearance (line number)
xml_indent_tags
If this setting is set to true, a new line after a line ending with an unclosed XML/HTML tag will be automatically indented. This only applies to filetypes for which the HTML or XML lexer is used. Such filetypes have this setting in their system configuration files.

[indentation] section

This section allows definition of default indentation settings specific to the file type, overriding the ones configured in the preferences. This can be useful for file types requiring specific indentation settings (e.g. tabs only for Makefile). These settings don't override auto-detection if activated.

width
The forced indentation width.
type

The forced indentation type.

Value Indentation type
0 Spaces only
1 Tabs only
2 Mixed (tabs and spaces)

[build_settings] section

As of Geany 0.19 this section is supplemented by the [build-menu] section. Values that are set in the [build-menu] section will override those in this section.

error_regex

This is a regular expression to parse a filename and line number from build output. If undefined, Geany will fall back to its default error message parsing.

Only the first two matches will be read by Geany. Geany will look for a match that is purely digits, and use this for the line number. The remaining match will be used as the filename.

Example: error_regex=(.+):([0-9]+):[0-9]+

This will parse a message such as: test.py:7:24: E202 whitespace before ']'

Build commands

If any build menu item settings have been configured in the Build Menu Commands dialog or the Build tab of the project preferences dialog then these settings are stored in the [build-menu] section and override the settings in this section for that item.

compiler

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.

You should quote the filename to also support filenames with spaces. The following wildcards for filenames are available:

  • %f -- complete filename without path
  • %e -- filename without path and without extension

Example: compiler=gcc -Wall -c "%f"

linker

This item specifies the command to link the file. If the file is not already compiled, it will be compiled while linking. The -o option is automatically added by Geany. This item works well with GNU gcc, but may be problematic with other compilers (esp. with the linker).

Example: linker=gcc -Wall "%f"

run_cmd

Use this item to execute your file. It has to have been built already. Use the %e wildcard to have only the name of the executable (i.e. without extension) or use the %f wildcard if you need the complete filename, e.g. for shell scripts.

Example: run_cmd="./%e"

Special file filetypes.common

There is a special filetype definition file called filetypes.common. This file defines some general non-filetype-specific settings.

You can open the user filetypes.common with the Tools->Configuration Files->filetypes.common menu item. This adds the default settings to the user file if the file doesn't exist. Alternatively the file can be created manually, adding only the settings you want to change. All missing settings will be read from the system file.

Note

See the Filetype configuration section for how to define styles.

[named_styles] section

Named styles declared here can be used in the [styling] section of any filetypes.* file.

For example:

In filetypes.common:

[named_styles]
foo=0xc00000;0xffffff;false;true
bar=foo

In filetypes.c:

[styling]
comment=foo

This saves copying and pasting the whole style definition into several different files.

Note

You can define aliases for named styles, as shown with the bar entry in the above example, but they must be declared after the original style.

[named_colors] section

Named colors declared here can be used in the [styling] or [named_styles] section of any filetypes.* file or color scheme.

For example:

[named_colors]
my_red_color=#FF0000
my_blue_color=#0000FF

[named_styles]
foo=my_red_color;my_blue_color;false;true

This allows to define a color pallete by name so that to change a color scheme-wide only involves changing the hex value in a single location.

[styling] section

default

This is the default style. It is used for styling files without a filetype set.

Example: default=0x000000;0xffffff;false;false

selection

The style for coloring selected text. The format is:

  • Foreground color
  • Background color
  • Use foreground color
  • Use background color

The colors are only set if the 3rd or 4th argument is true. When the colors are not overridden, the default is a dark grey background with syntax highlighted foreground text.

Example: selection=0xc0c0c0;0x00007F;true;true

brace_good

The style for brace highlighting when a matching brace was found.

Example: brace_good=0xff0000;0xFFFFFF;true;false

brace_bad

The style for brace highlighting when no matching brace was found.

Example: brace_bad=0x0000ff;0xFFFFFF;true;false

caret

The style for coloring the caret(the blinking cursor). Only first and third argument is interpreted. Set the third argument to true to change the caret into a block caret.

Example: caret=0x000000;0x0;false;false

caret_width

The width for the caret(the blinking cursor). Only the first argument is interpreted. The width is specified in pixels with a maximum of three pixel. Use the width 0 to make the caret invisible.

Example: caret=1;0;false;false

current_line

The style for coloring the background of the current line. Only the second and third arguments are interpreted. The second argument is the background color. Use the third argument to enable or disable background highlighting for the current line (has to be true/false).

Example: current_line=0x0;0xe5e5e5;true;false

indent_guide

The style for coloring the indentation guides. Only the first and second arguments are interpreted.

Example: indent_guide=0xc0c0c0;0xffffff;false;false

white_space

The style for coloring the white space if it is shown. The first both arguments define the foreground and background colors, the third argument sets whether to use the defined foreground color or to use the color defined by each filetype for the white space. The fourth argument defines whether to use the background color.

Example: white_space=0xc0c0c0;0xffffff;true;true

margin_linenumber
Line number margin foreground and background colors.
margin_folding
Fold margin foreground and background colors.
fold_symbol_highlight
Highlight color of folding symbols.
folding_style

The style of folding icons. Only first and second arguments are used.

Valid values for the first argument are:

  • 1 -- for boxes
  • 2 -- for circles
  • 3 -- for arrows
  • 4 -- for +/-

Valid values for the second argument are:

  • 0 -- for no lines
  • 1 -- for straight lines
  • 2 -- for curved lines

Default: folding_style=1;1;

Arrows: folding_style=3;0;

folding_horiz_line

Draw a thin horizontal line at the line where text is folded. Only first argument is used.

Valid values for the first argument are:

  • 0 -- disable, do not draw a line
  • 1 -- draw the line above folded text
  • 2 -- draw the line below folded text

Example: folding_horiz_line=0;0;false;false

line_wrap_visuals

First argument: drawing of visual flags to indicate a line is wrapped. This is a bitmask of the values:

  • 0 -- No visual flags
  • 1 -- Visual flag at end of subline of a wrapped line
  • 2 -- Visual flag at begin of subline of a wrapped line. Subline is indented by at least 1 to make room for the flag.

Second argument: wether the visual flags to indicate a line is wrapped are drawn near the border or near the text. This is a bitmask of the values:

  • 0 -- Visual flags drawn near border
  • 1 -- Visual flag at end of subline drawn near text
  • 2 -- Visual flag at begin of subline drawn near text

Only first and second arguments are interpreted.

Example: line_wrap_visuals=3;0;false;false

line_wrap_indent

First argument: sets the size of indentation of sublines for wrapped lines in terms of the width of a space, only used when the second argument is 0.

Second argument: wrapped sublines can be indented to the position of their first subline or one more indent level. Possible values:

  • 0 - Wrapped sublines aligned to left of window plus amount set by the first argument
  • 1 - Wrapped sublines are aligned to first subline indent (use the same indentation)
  • 2 - Wrapped sublines are aligned to first subline indent plus one more level of indentation

Only first and second arguments are interpreted.

Example: line_wrap_indent=0;1;false;false

translucency

Translucency for the current line (first argument) and the selection (second argument). Values between 0 and 256 are accepted.

Note for Windows 95, 98 and ME users: keep this value at 256 to disable translucency otherwise Geany might crash.

Only the first and second arguments are interpreted.

Example: translucency=256;256;false;false

marker_line

The style for a highlighted line (e.g when using Goto line or goto tag). The foreground color (first argument) is only used when the Markers margin is enabled (see View menu).

Only the first and second arguments are interpreted.

Example: marker_line=0x000000;0xffff00;false;false

marker_search

The style for a marked search results (when using "Mark" in Search dialogs). The second argument sets the background color for the drawn rectangle.

Only the second argument is interpreted.

Example: marker_search=0x000000;0xb8f4b8;false;false

marker_mark

The style for a marked line (e.g when using the "Toggle Marker" keybinding (Ctrl-M)). The foreground color (first argument) is only used when the Markers margin is enabled (see View menu).

Only the first and second arguments are interpreted.

Example: marker_mark=0x000000;0xb8f4b8;false;false

marker_translucency

Translucency for the line marker (first argument) and the search marker (second argument). Values between 0 and 256 are accepted.

Note for Windows 95, 98 and ME users: keep this value at 256 to disable translucency otherwise Geany might crash.

Only the first and second arguments are interpreted.

Example: marker_translucency=256;256;false;false

line_height

Amount of space to be drawn above and below the line's baseline. The first argument defines the amount of space to be drawn above the line, the second argument defines the amount of space to be drawn below.

Only the first and second arguments are interpreted.

Example: line_height=0;0;false;false

calltips

The style for coloring the calltips. The first two arguments define the foreground and background colors, the third and fourth arguments set whether to use the defined colors.

Example: calltips=0xc0c0c0;0xffffff;false;false

[settings] section

whitespace_chars

Characters to treat as whitespace. These characters are ignored when moving, selecting and deleting across word boundaries (see Scintilla keyboard commands).

This should include space (\s) and tab (\t).

Example: whitespace_chars=\s\t!\"#$%&'()*+,-./:;<=>?@[\\]^`{|}~

Filetype extensions

To change the default filetype extension used when saving a new file, see Filetype definition files.

You can override the list of file extensions that Geany uses to detect filetypes using the user filetype_extensions.conf file. Use the Tools->Configuration Files->filetype_extensions.conf menu item. See also Configuration file paths.

You should only list lines for filetype extensions that you want to override in the user configuration file and remove or comment out others. The patterns are listed after the = sign, using a semi-colon separated list of patterns which should be matched for that filetype.

For example, to override the filetype extensions for Make, the file should look like:

[Extensions]
Make=Makefile*;*.mk;Buildfile;

Filetype group membership

Group membership is also stored in filetype_extensions.conf. This file is used to store information Geany needs at startup, whereas the separate filetype definition files hold information only needed when a document with their filetype is used.

The format looks like:

[Groups]
Programming=C;C++;
Script=Perl;Python;
Markup=HTML;XML;
Misc=Diff;Conf;
None=None;

The key names cannot be configured.

Note

Group membership is only read at startup.

Preferences file format

The user preferences file geany.conf holds settings for all the items configured in the preferences dialog. This file should not be edited while Geany is running as the file will be overwritten when the preferences in Geany are changed or Geany is quit.

[build-menu] section

The [build-menu] section contains the configuration of the build menu. This section can occur in filetype, preferences and project files and always has the format described here. Different menu items are loaded from different files, see the table in the Build Menu Configuration section for details. All the settings can be configured from the dialogs except the execute command in filetype files and filetype definitions in the project file, so these are the only ones which need hand editing.

The build-menu section stores one entry for each setting for each menu item that is configured. The keys for these settings have the format:

GG_NN_FF

where:

  • GG - is the menu item group,
    • FT for filetype
    • NF for independent (non-filetype)
    • EX for execute
  • NN - is a two decimal digit number of the item within the group, starting at 00
  • FF - is the field,
    • LB for label
    • CM for command
    • WD for working directory

Project file format

The project file contains project related settings and possibly a record of the current session files.

[build-menu] additions

The project file also can have extra fields in the [build-menu] section in addition to those listed in [build-menu] section above.

When filetype menu items are configured for the project they are stored in the project file.

The filetypes entry is a list of the filetypes which exist in the project file.

For each filetype the entries for that filetype have the format defined in [build-menu] section but the key is prefixed by the name of the filetype as it appears in the filetypes entry, eg the entry for the label of filetype menu item 0 for the C filetype would be

CFT_00_LB=Label

Templates

Geany supports the following templates:

  • ChangeLog entry
  • File header
  • Function description
  • Short GPL notice
  • Short BSD notice
  • File templates

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, the inserted function description won't contain the correct function name but "unknown" instead.

Note

Geany automatically reloads template information when it notices you save a file in the user's template configuration directory. You can also force this by selecting Tools->Reload Configuration.

Template meta data

Meta data can be used with all templates, but by default user set meta data is only used for the ChangeLog and File header templates.

In the configuration dialog you can find a tab "Templates" (see Template preferences). You can define the default values which will be inserted in the templates.

File templates

File 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, file templates are installed for some filetypes. Custom file templates can be added by creating the appropriate template file. You can also edit the default file templates.

The file's contents are just the text to place in the document, with optional template wildcards like {fileheader}. The fileheader wildcard can be placed anywhere, but it's usually put on the first line of the file, followed by a blank line.

Adding file templates

File templates are read from templates/files under the Configuration file paths.

The filetype to use is detected from the template file's extension, if any. For example, creating a file module.c would add a menu item which created a new document with the filetype set to 'C'.

The template file is read from disk when the corresponding menu item is clicked.

Customizing templates

Each template can be customized to your needs. The templates are stored in the ~/.config/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}.

Wildcards for character escaping

Wildcard Description Available in
ob { Opening Brace (used to prevent other wildcards being expanded). file templates, file header, snippets.
cb } Closing Brace. file templates, file header, snippets.
pc % Percent (used to escape e.g. %block% in snippets). snippets.

Global wildcards

These are configurable, see Template preferences.

Wildcard Description Available in
developer The name of the developer. file templates, file header, function description, ChangeLog entry, bsd, gpl, snippets.
initial The developer's initials, e.g. "ET" for Enrico Tröger or "JFD" for John Foobar Doe. file templates, file header, function description, ChangeLog entry, bsd, gpl, snippets.
mail The email address of the developer. file templates, file header, function description, ChangeLog entry, bsd, gpl, snippets.
company The company the developer is working for. file templates, file header, function description, ChangeLog entry, bsd, gpl, snippets.
version The initial version of a new file. file templates, file header, function description, ChangeLog entry, bsd, gpl, snippets.

Date & time wildcards

The format for these wildcards can be changed in the preferences dialog, see Template preferences. You can use any conversion specifiers which can be used with the ANSI C strftime function. For details please see http://man.cx/strftime.

Wildcard Description Available in
year The current year. Default format is: YYYY. file templates, file header, function description, ChangeLog entry, bsd, gpl, snippets.
date The current date. Default format: YYYY-MM-DD. file templates, file header, function description, ChangeLog entry, bsd, gpl, snippets.
datetime The current date and time. Default format: DD.MM.YYYY HH:mm:ss ZZZZ. file templates, file header, function description, ChangeLog entry, bsd, gpl, snippets.

Dynamic wildcards

Wildcard Description Available in
untitled The string "untitled" (this will be translated to your locale), used in file templates. file templates, file header, function description, ChangeLog entry, bsd, gpl, snippets.
geanyversion The actual Geany version, e.g. "Geany 1.23.1". file templates, file header, function description, ChangeLog entry, bsd, gpl, snippets.
filename The filename of the current file. For new files, it's only replaced when first saving if found on the first 4 lines of the file. file header, snippets, file templates.
project The current project's name, if any. file header, snippets, file templates.
description The current project's description, if any. file header, snippets, file templates.
functionname The function name of the function at the cursor position. This wildcard will only be replaced in the function description template. function description.
command:path Executes the specified command and replace the wildcard with the command's standard output. See Special {command:} wildcard for details. file templates, file header, function description, ChangeLog entry, bsd, gpl, snippets.

Template insertion wildcards

Wildcard Description Available in
gpl This wildcard inserts a short GPL notice. file header.
bsd This wildcard inserts a BSD licence notice. file header.
fileheader The file header template. This wildcard will only be replaced in file templates. snippets, file templates.
Special {command:} wildcard

The {command:} wildcard is a special one because it can execute a specified command and put the command's output (stdout) into the template.

Example:

{command:uname -a}

will result in:

Linux localhost 2.6.9-023stab046.2-smp #1 SMP Mon Dec 10 15:04:55 MSK 2007 x86_64 GNU/Linux

Using this wildcard you can insert nearly any arbitrary text into the template.

In the environment of the executed command the variables GEANY_FILENAME, GEANY_FILETYPE and GEANY_FUNCNAME are set. The value of these variables is filled in only if Geany knows about it. For example, GEANY_FUNCNAME is only filled within the function description template. However, these variables are always set, just maybe with an empty value. You can easily access them e.g. within an executed shell script using:

$GEANY_FILENAME

Note

If the specified command could not be found or not executed, the wildcard is substituted by an empty string. In such cases, you can find the occurred error message on Geany's standard error and in the Help->Debug Messages dialog.

Customizing the toolbar

You can add, remove and reorder the elements in the toolbar by using the toolbar editor, or by manually editing the configuration file ui_toolbar.xml.

The toolbar editor can be opened from the preferences editor on the Toolbar tab or by right-clicking on the toolbar itself and choosing it from the menu.

Manually editing the toolbar layout

To override the system-wide configuration file, copy it to your user configuration directory (see Configuration file paths).

For example:

% cp /usr/local/share/geany/ui_toolbar.xml /home/username/.config/geany/

Then edit it and add any of the available elements listed in the file or remove any of the existing elements. Of course, you can also reorder the elements as you wish and add or remove additional separators. This file must be valid XML, otherwise the global toolbar UI definition will be used instead.

Your changes are applied once you save the file.

Note

  1. You cannot add new actions which are not listed below.
  2. Everything you add or change must be inside the /ui/toolbar/ path.

Available toolbar elements

Element name Description
New Create a new file
Open Open an existing file
Save Save the current file
SaveAll Save all open files
Reload Reload the current file from disk
Close Close the current file
CloseAll Close all open files
Print Print the current file
Cut Cut the current selection
Copy Copy the current selection
Paste Paste the contents of the clipboard
Delete Delete the current selection
Undo Undo the last modification
Redo Redo the last modification
NavBack Navigate back a location
NavFor Navigate forward a location
Compile Compile the current file
Build Build the current file, includes a submenu for Make commands. Geany remembers the last chosen action from the submenu and uses this as default action when the button itself is clicked.
Run Run or view the current file
Color Open a color chooser dialog, to interactively pick colors from a palette
ZoomIn Zoom in the text
ZoomOut Zoom out the text
UnIndent Decrease indentation
Indent Increase indentation
Replace Replace text in the current document
SearchEntry The search field belonging to the 'Search' element (can be used alone)
Search Find the entered text in the current file (only useful if you also use 'SearchEntry')
GotoEntry The goto field belonging to the 'Goto' element (can be used alone)
Goto Jump to the entered line number (only useful if you also use 'GotoEntry')
Preferences Show the preferences dialog
Quit Quit Geany

Plugin documentation

HTML Characters

The HTML Characters plugin helps when working with special characters in XML/HTML, e.g. German Umlauts ü and ä.

Insert entity dialog

When the plugin is enabled, you can insert special character entities using Tools->Insert Special HTML Characters.

This opens up a dialog where you can find a huge amount of special characters sorted by category that you might like to use inside your document. You can expand and collapse the categories by clicking on the little arrow on the left hand side. Once you have found the desired character click on it and choose "Insert". This will insert the entity for the character at the current cursor position. You might also like to double click the chosen entity instead.

Replace special chars by its entity

To help make a XML/HTML document valid the plugin supports replacement of special chars known by the plugin. Both bulk replacement and immediate replacement during typing are supported.

A few characters will not be replaced. These are
  • "
  • &
  • <
  • >
  • (&nbsp;)

At typing time

You can activate/deactivate this feature using the Tools->HTML Replacement->Auto-replace Special Characters menu item. If it's activated, all special characters (beside the given exceptions from above) known by the plugin will be replaced by their entities.

You could also set a keybinding for the plugin to toggle the status of this feature.

Bulk replacement

After inserting a huge amount of text, e.g. by using copy & paste, the plugin allows bulk replacement of all known characters (beside the mentioned exceptions). You can find the function under the same menu at Tools->HTML Replacement->Replace Characters in Selection, or configure a keybinding for the plugin.

Save Actions

Instant Save

This plugin sets on every new file (File->New or File->New (with template)) a randomly chosen filename and set its filetype appropriate to the used template or when no template was used, to a configurable default filetype. This enables you to quickly compile, build and/or run the new file without the need to give it an explicit filename using the Save As dialog. This might be useful when you often create new files just for testing some code or something similar.

Backup Copy

This plugin creates a backup copy of the current file in Geany when it is saved. You can specify the directory where the backup copy is saved and you can configure the automatically added extension in the configure dialog in Geany's plugin manager.

After the plugin was loaded in Geany's plugin manager, every file is copied into the configured backup directory when the file is saved in Geany.

Contributing to this document

This document (geany.txt) is written in reStructuredText (or "reST"). The source file for it is located in Geany's doc subdirectory. If you intend on making changes, you should grab the source right from Git to make sure you've got the newest version. After editing the file, to build the HTML document to see how your changes look, run "make doc" in the subdirectory doc of Geany's source directory. This regenerates the geany.html file. To generate a PDF file, use the command "make pdf" which should generate a file called geany-1.23.1.pdf.

After you are happy with your changes, create a patch e.g. by using:

% git diff geany.txt > foo.patch

or even better, by creating a Git-formatted patch which will keep authoring and description data, by first committing your changes (doing so in a fresh new branch is recommended for matser not to diverge from upstream) and then using git format-patch:

% git checkout -b my-documentation-changes # create a fresh branch
% git commit geany.txt
Write a good commit message...
% git format-patch HEAD^
% git checkout master # go back to master

and then submit that file to the mailing list for review.

Also you can clone the Geany repository at GitHub and send a pull request.

Note, you will need the Python docutils software package installed to build the docs. The package is named python-docutils on Debian and Fedora systems.

Scintilla keyboard commands

Copyright © 1998, 2006 Neil Hodgson <neilh(at)scintilla(dot)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 License for Scintilla and SciTE.

20 June 2006

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 appropriate keys (see Column mode editing (rectangular selections)).

Some keys may not be available with some national keyboards or because they are taken by the system such as by a window manager or GTK. Keyboard equivalents of menu commands are listed in the menus. Some less common commands with no menu equivalent are:

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
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
Extend selection to end of display line. Alt-Shift-End
Previous paragraph. Shift extends selection. Ctrl-Up
Next paragraph. Shift extends selection. Ctrl-Down
Previous word. Shift extends selection. Ctrl-Left
Next word. Shift extends selection. Ctrl-Right

Tips and tricks

Document notebook

  • Double-click on empty space in the notebook tab bar to open a new document.
  • Middle-click on a document's notebook tab to close the document.
  • Hold Ctrl and click on any notebook tab to switch to the last used document.
  • Double-click on a document's notebook tab to toggle all additional widgets (to show them again use the View menu or the keyboard shortcut). The interface pref must be enabled for this to work.

Editor

  • Alt-scroll wheel moves up/down a page.
  • Ctrl-scroll wheel zooms in/out.
  • Shift-scroll wheel scrolls 8 characters right/left.
  • Ctrl-click on a word in a document to perform Go to Tag Definition.
  • Ctrl-click on a bracket/brace to perform Go to Matching Brace.

Interface

  • Double-click on a symbol-list group to expand or compact it.

Compile-time options

There are some options which can only be changed at compile time, and some options which are used as the default for configurable options. To change these options, edit the appropriate source file in the src subdirectory. 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.

src/geany.h

Option Description Default
GEANY_STRING_UNTITLED A string used as the default name for new files. Be aware that the string can be translated, so change it only if you know what you are doing. untitled
GEANY_WINDOW_MINIMAL_WIDTH The minimal width of the main window. 620
GEANY_WINDOW_MINIMAL_HEIGHT The minimal height of the main window. 440
GEANY_WINDOW_DEFAULT_WIDTH The default width of the main window at the first start. 900
GEANY_WINDOW_DEFAULT_HEIGHT The default height of the main window at the first start. 600
Windows specific    
GEANY_USE_WIN32_DIALOG Set this to 1 if you want to use the default Windows file open and save dialogs instead GTK's file open and save dialogs. The default Windows file dialogs are missing some nice features like choosing a filetype or an encoding. Do not touch this setting when building on a non-Win32 system. 0

project.h

Option Description Default
GEANY_PROJECT_EXT The default filename extension for Geany project files. It is used when creating new projects and as filter mask for the project open dialog. geany

filetypes.c

Option Description Default
GEANY_FILETYPE_SEARCH_LINES The number of lines to search for the filetype with the extract filetype regex. 2

editor.h

Option Description Default
GEANY_WORDCHARS These characters define word boundaries when making selections and searching using word matching options. a string with: a-z, A-Z, 0-9 and underscore.

keyfile.c

These are default settings that can be overridden in the Preferences dialog.

Option Description Default
GEANY_MIN_SYMBOLLIST_CHARS How many characters you need to type to trigger the autocompletion list. 4
GEANY_DISK_CHECK_TIMEOUT Time in seconds between checking a file for external changes. 30
GEANY_DEFAULT_TOOLS_MAKE The make tool. This can also include a path. "make"
GEANY_DEFAULT_TOOLS_TERMINAL A terminal emulator command, see Terminal emulators. See below.
GEANY_DEFAULT_TOOLS_BROWSER A web browser. This can also include a path. "firefox"
GEANY_DEFAULT_TOOLS_PRINTCMD A printing tool. It should be able to accept and process plain text files. This can also include a path. "lpr"
GEANY_DEFAULT_TOOLS_GREP A grep tool. It should be compatible with GNU grep. This can also include a path. "grep"
GEANY_DEFAULT_MRU_LENGTH The length of the "Recent files" list. 10
GEANY_DEFAULT_FONT_SYMBOL_LIST The font used in sidebar to show symbols and open files. "Sans 9"
GEANY_DEFAULT_FONT_MSG_WINDOW The font used in the messages window. "Sans 9"
GEANY_DEFAULT_FONT_EDITOR The font used in the editor window. "Monospace 10"
GEANY_TOGGLE_MARK A string which is used to mark a toggled comment. "~ "
GEANY_MAX_AUTOCOMPLETE_WORDS How many autocompletion suggestions should Geany provide. 30
GEANY_DEFAULT_FILETYPE_REGEX The default regex to extract filetypes from files. See below.

The GEANY_DEFAULT_FILETYPE_REGEX default value is -\*-\s*([^\s]+)\s*-\*- which finds Emacs filetypes.

The GEANY_DEFAULT_TOOLS_TERMINAL default value on Windows is:

cmd.exe /Q /C %c

and on any non-Windows system is:

xterm -e "/bin/sh %c"

build.c

Option Description Default
GEANY_BUILD_ERR_HIGHLIGHT_MAX Amount of build error indicators to be shown in the editor window. This affects the special coloring when Geany detects a compiler output line as an error message and then highlights the corresponding line in the source code. Usually only the first few messages are interesting because following errors are just after-effects. All errors in the Compiler window are parsed and unaffected by this value. 50
PRINTBUILDCMDS Every time a build menu item priority calculation is run, print the state of the menu item table in the form of the table in Build Menu Configuration. May be useful to debug configuration file overloading. Warning produces a lot of output. Can also be enabled/disabled by the debugger by setting printbuildcmds to 1/0 overriding the compile setting. FALSE

GNU General Public License

            GNU GENERAL PUBLIC LICENSE
               Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                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.

            GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  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.

  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.

  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:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) 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.

    c) 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.

  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:

    a) 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,

    b) 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,

    c) 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.

  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.

  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.

  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.

  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.

  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.

  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.

  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.

                NO WARRANTY

  11. 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.

  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.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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.

License for Scintilla and SciTE

Copyright 1998-2003 by Neil Hodgson <neilh(at)scintilla(dot)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.

geany-1.23.1+dfsg/doc/stash-gui-example.c0000644000175000017500000000243412146146075020327 0ustar hyperairhyperairgboolean want_handle; StashGroup *group = ...; /* Add the stash setting first so we can load it from disk if we want. * Effectively, stash_group_add_boolean() is called for you. * We need to use either a widget pointer or a widget name, and as we * haven't created the widget yet we'll use a name - check_handle. */ stash_group_add_toggle_button(group, &want_handle, "handle", TRUE, "check_handle"); /* here we could load the setting from disk */ ... /* Later we create a dialog holding the toggle button widget. * (Note: a check button is a subclass of a toggle button). */ GtkWidget *dialog = ...; GtkWidget *check_button = gtk_check_button_new_with_label(_("Handle")); /* pack the widget into the dialog */ gtk_container_add(GTK_CONTAINER(dialog->vbox), check_button); /* Now we set a name to lookup the widget from the dialog. * We must remember to pass 'dialog' as an argument to Stash later. */ ui_hookup_widget(dialog, check_button, "check_handle"); ... /* At some point we want to display the dialog. * First we apply the want_handle boolean variable to the widget */ stash_group_display(group, dialog); /* now display the dialog */ gtk_widget_show_all(dialog); /* let the user manipulate widgets */ ... /* Now synchronize the want_handle variable */ stash_group_update(group, dialog); geany-1.23.1+dfsg/doc/geany.css0000644000175000017500000000262212146146075016442 0ustar hyperairhyperair/* :Author: Enrico Troeger :Contact: enrico(dot)troeger(at)uvena(dot)de :Copyright: This stylesheet has been placed in the public domain. Stylesheet for Geany's documentation based on a version of John Gabriele. */ @media screen { body { background-color: #f2f2f2; color: #404040; margin-left: 0.4em; max-width: 60em; font-size: 90%; } a { color: #990000; } a:visited { color: #7E558E; } a:hover { text-decoration: none; } h1 { border-top: 1px dotted; margin-top: 2em; } h1, h2, h3 { font-family: sans-serif; color: #5D0606; } h1.title { text-align: left } h2 { margin-top: 30px; } h2.subtitle { text-align: left } h3 { padding-left: 3px; } blockquote, pre { border: 1px solid; padding: 0.4em; } blockquote { font-family: sans-serif; background-color: #DBEDD5; border: 1px dotted; border-left: 4px solid; border-color: #9FD98C; } pre { background-color: #ECDFCE; border: 1px dotted; border-left: 4px solid; border-color: #D9BE9A; } tt, pre, code { color: #6D4212; } table { border: 1px solid #D9BE9A; } th { background-color: #ECDFCE; border: 1px dotted #D9BE9A; } td { border: 1px dotted #D9BE9A; } .docinfo-name { color: #5D0606; } p.admonition-title { color: #990000; font-weight: bold; } div.note { margin: 1em 3em; padding: 0em; } dt { font-style: italic; } } @media print { } geany-1.23.1+dfsg/doc/Doxyfile.in0000644000175000017500000002426312146146075016745 0ustar hyperairhyperair# Doxyfile 1.5.4 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = Geany PROJECT_NUMBER = @VERSION@ OUTPUT_DIRECTORY = ./ CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = "The $name class " \ "The $name widget " \ "The $name file " \ is \ provides \ specifies \ contains \ represents \ a \ an \ the ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = YES QT_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO INHERIT_DOCS = YES SEPARATE_MEMBER_PAGES = NO TAB_SIZE = 4 # ALIASES taken from pidgin ALIASES = "signal=- @ref " \ "signaldef=@subsection " \ "endsignaldef= " \ "signalproto=@code " \ "endsignalproto=@endcode " \ "signaldesc=" \ "signals=@b Signals: " \ "endsignals= " OPTIMIZE_OUTPUT_FOR_C = YES OPTIMIZE_OUTPUT_JAVA = NO BUILTIN_STL_SUPPORT = NO CPP_CLI_SUPPORT = NO SIP_SUPPORT = NO DISTRIBUTE_GROUP_DOC = NO SUBGROUPING = YES TYPEDEF_HIDES_STRUCT = NO #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- EXTRACT_ALL = NO EXTRACT_PRIVATE = NO EXTRACT_STATIC = NO EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_METHODS = NO EXTRACT_ANON_NSPACES = NO HIDE_UNDOC_MEMBERS = YES HIDE_UNDOC_CLASSES = YES HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = YES INTERNAL_DOCS = NO CASE_SENSE_NAMES = YES HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = NO INLINE_INFO = NO SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = YES SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES GENERATE_TESTLIST = NO GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 SHOW_USED_FILES = NO SHOW_DIRECTORIES = NO FILE_VERSION_FILTER = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = YES WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES WARN_NO_PARAMDOC = YES WARN_FORMAT = "$file:$line: $text " WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = ../src/ ./ \ ../plugins/geanyplugin.h ../plugins/geanyfunctions.h \ ../tagmanager/src/tm_source_file.c ../tagmanager/src/tm_source_file.h \ ../tagmanager/src/tm_work_object.c ../tagmanager/src/tm_work_object.h \ ../tagmanager/src/tm_workspace.c ../tagmanager/src/tm_workspace.h INPUT_ENCODING = UTF-8 FILE_PATTERNS = *.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.h \ *.hh \ *.hxx \ *.hpp \ *.h++ \ *.dox \ *.py \ *.C \ *.CC \ *.C++ \ *.H \ *.HH \ *.H++ \ *.dox \ RECURSIVE = NO EXCLUDE = EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXCLUDE_SYMBOLS = EXAMPLE_PATH = . EXAMPLE_PATTERNS = * EXAMPLE_RECURSIVE = NO IMAGE_PATH = INPUT_FILTER = FILTER_PATTERNS = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = NO REFERENCES_RELATION = NO REFERENCES_LINK_SOURCE = YES USE_HTAGS = NO VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = reference/ HTML_FILE_EXTENSION = .html HTML_HEADER = HTML_FOOTER = HTML_STYLESHEET = HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = NO HTML_DYNAMIC_SECTIONS = NO CHM_FILE = HHC_LOCATION = GENERATE_CHI = NO BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = NO LATEX_OUTPUT = latex LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex COMPACT_LATEX = NO PAPER_TYPE = a4wide EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO XML_OUTPUT = xml XML_SCHEMA = XML_DTD = XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- GENERATE_PERLMOD = NO PERLMOD_LATEX = NO PERLMOD_PRETTY = YES PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = YES EXPAND_ONLY_PREDEF = YES SEARCH_INCLUDES = NO INCLUDE_PATH = INCLUDE_FILE_PATTERNS = # make G_GNUC_PRINTF a no-op unless doxygen would ignore functions with varargs PREDEFINED = "G_GNUC_PRINTF(x,y)=" HAVE_PLUGINS GEANY_FUNCTIONS_H EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = NO #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- CLASS_DIAGRAMS = NO MSCGEN_PATH = HIDE_UNDOC_RELATIONS = YES HAVE_DOT = NO CLASS_GRAPH = YES COLLABORATION_GRAPH = YES GROUP_GRAPHS = YES UML_LOOK = NO TEMPLATE_RELATIONS = NO INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES CALL_GRAPH = NO CALLER_GRAPH = NO GRAPHICAL_HIERARCHY = YES DIRECTORY_GRAPH = YES DOT_IMAGE_FORMAT = png DOT_PATH = DOTFILE_DIRS = DOT_GRAPH_MAX_NODES = 50 MAX_DOT_GRAPH_DEPTH = 1000 DOT_TRANSPARENT = YES DOT_MULTI_TARGETS = NO GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO geany-1.23.1+dfsg/doc/makefile.win320000644000175000017500000000116112146146075017263 0ustar hyperairhyperair# Optional documentation generation. # localwin32.mk is an optional file to override make variables. # Use localwin32.mk instead of editing variables as it is included in sub # makefiles. # Use localwin32.mk to override RST2HTML, DOXYGEN RST2HTML=python rst2html.py DOXYGEN=doxygen CP = copy /y -include ../localwin32.mk ifdef MSYS CP = cp endif doc: geany.txt $(RST2HTML) -stg --stylesheet=geany.css $^ geany.html hacking-doc: ../HACKING $(RST2HTML) -stg --stylesheet=geany.css $^ hacking.html # FIXME: we should also replace anything like @VERSION@ Doxyfile: Doxyfile.in $(CP) $< $@ api-doc: Doxyfile $(DOXYGEN) geany-1.23.1+dfsg/doc/geany.10000644000175000017500000001156712146147777016034 0ustar hyperairhyperair.TH "GEANY" "1" "May 19, 2013" "geany 1.23.1" "" .SH "NAME" Geany \(em a small and lightweight IDE .SH "SYNOPSIS" .PP \fBgeany\fR [\fBoption\fP] [\fP+number\fP] [\fBfiles ...\fP] .SH "DESCRIPTION" .PP Geany is a small and fast editor with basic features of an integrated development environment. .PP Some of its features: syntax highlighting, code completion, code folding, symbol/tag lists and many supported filetypes like C(++), Java, PHP, HTML, DocBook, Perl and more. .PP Homepage: http://www.geany.org/ .SH "OPTIONS" .IP "\fB\fP \fBfiles ...\fP " 10 A space-separated list of filenames. Absolute and relative filenames can be used. Geany also recognises line and column information when appended to the filename with colons, e.g. "geany foo.bar:10:5" will open the file foo.bar and place the cursor in line 10 at column 5. .IP "\fB\fP \fB\fP " 10 Projects can also be opened but a project file (*.geany) must be the first non-option argument. All additionally given files are ignored. .IP "\fB\fP \fB\+number\fP " 10 Set initial line .I number for the first opened file (same as \-\-line, do not put a space between the + sign and the number). E.g. "geany +7 foo.bar" will open the file foo.bar and place the cursor in line 7. .IP "\fB\fP \fB\-\-column\fP " 10 Set initial column number for the first opened file (useful in conjunction with \-\-line). .IP "\fB-c\fP, \fB\-\-config\fP " 10 Use an alternate configuration directory. Default configuration directory is ~/.config/geany/ and there resides geany.conf and some template files. .IP "\fB\fP \fB\-\-ft\-names\fP " 10 Print a list of Geany's internal filetype names (useful snippets configuration). .IP "\fB-g\fP, \fB\-\-generate\-tags\fP " 10 Generate a global tags file (see documentation). .IP "\fB-P\fP, \fB\-\-no\-preprocessing\fP " 10 Don't preprocess C/C++ files when generating tags. .IP "\fB-i\fP, \fB\-\-new-instance\fP " 10 Don't open files in a running instance, force opening a new instance. Only available if Geany was compiled with support for Sockets. .IP "\fB-l\fP, \fB\-\-line\fP " 10 Set initial line number for the first opened file. .IP "\fB\fP \fB\-\-list\-documents\fP " 10 Return a list of open documents in a running Geany instance. This can be used to read the currently opened documents in Geany from an external script or tool. The returned list is separated by newlines (LF) and consists of the full, UTF\-8 encoded filenames of the documents. Only available if Geany was compiled with support for Sockets. .IP "\fB-m\fP, \fB\-\-no-msgwin\fP " 10 Don't show the message window. Use this option if you don't need compiler messages or VTE support. .IP "\fB-n\fP, \fB\-\-no-ctags\fP " 10 Don't load symbol completion and call tip data. Use this option, if you don't want to use them. For more information please see documentation. .IP "\fB-p\fP, \fB\-\-no-plugins\fP " 10 Don't load plugin support. .IP "\fB\fP \fB\-\-print-prefix\fP " 10 Print installation prefix, the data directory, the lib directory and the locale directory (in this order) to stdout, each per line. This is mainly intended for plugin authors to detect installation paths. .IP "\fB-r\fP, \fB\-\-read-only\fP " 10 Open all files given on the command line in read-only mode. This only applies to files opened explicitly from the command line, so files from previous sessions or project files are unaffected. .IP "\fB-s\fP, \fB\-\-no-session\fP " 10 Don't load the previous session's files. .IP "\fB-t\fP, \fB\-\-no-terminal\fP " 10 Don't load terminal support. Use this option, if you don't want to load the virtual terminal emulator widget at startup. If you don't have libvte.so.4 installed, then terminal-support is automatically disabled. Only available if Geany was compiled with support for VTE. .IP "\fB\fP \fB\-\-socket-file\fP " 10 Use this socket filename for communication with a running Geany instance .IP "\fB\fP \fB\-\-vte-lib\fP " 10 Specify explicitly the path including filename or only the filename to the VTE library, e.g. /usr/lib/libvte.so or libvte.so. This option is only needed, when the autodetection doesn't work. Only available if Geany was compiled with support for VTE. .IP "\fB-v\fP, \fB\-\-verbose\fP " 10 Be verbose (print useful status messages). .IP "\fB-V\fP, \fB\-\-version\fP " 10 Show version information and exit. .IP "\fB-?\fP, \fB\-\-help\fP " 10 Show help information and exit. .PP Geany supports all generic GTK options, a list is available on the help screen. .SH "AUTHOR" .PP This manual page was written by the Geany developer team. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2. .PP The complete text of the GNU General Public License can be found in /usr/local/share/geany/GPL-2. geany-1.23.1+dfsg/doc/pluginsignals.c0000644000175000017500000002464312146146075017657 0ustar hyperairhyperair/* * pluginsignals.c - this file is part of Geany, a fast and lightweight IDE * * Copyright 2008-2012 Enrico Tröger * Copyright 2008-2012 Nick Treleaven * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* Note: this file is for Doxygen only. */ /** * @file pluginsignals.c * Plugin Signals * * * @section Usage * * To use plugin signals in Geany, you have two options: * * -# Create a PluginCallback array with the @ref plugin_callbacks symbol. List the signals * you want to listen to and create the appropiate signal callbacks for each signal. * The callback array is read @a after plugin_init() has been called. * -# Use plugin_signal_connect(), which can be called at any time and can also connect * to non-Geany signals (such as GTK widget signals). * * This page lists the signal prototypes, but you connect to them using the * string name (which by convention uses @c - hyphens instead of @c _ underscores). * * E.g. @c "document-open" for @ref document_open. * * The following code demonstrates how to use signals in Geany plugins. The code can be inserted * in your plugin code at any desired position. * * @code static void on_document_open(GObject *obj, GeanyDocument *doc, gpointer user_data) { printf("Example: %s was opened\n", DOC_FILENAME(doc)); } PluginCallback plugin_callbacks[] = { { "document-open", (GCallback) &on_document_open, FALSE, NULL }, { NULL, NULL, FALSE, NULL } }; * @endcode * @note The PluginCallback array has to be ended with a final @c NULL entry. */ /** Sent when a new document is created. * * @param obj a GeanyObject instance, should be ignored. * @param doc the new document. * @param user_data user data. */ signal void (*document_new)(GObject *obj, GeanyDocument *doc, gpointer user_data); /** Sent when a new document is opened. * * @param obj a GeanyObject instance, should be ignored. * @param doc the opened document. * @param user_data user data. */ signal void (*document_open)(GObject *obj, GeanyDocument *doc, gpointer user_data); /** Sent when an existing document is reloaded. * * @param obj a GeanyObject instance, should be ignored. * @param doc the re-opened document. * @param user_data user data. * * @since 0.21 */ signal void (*document_reload)(GObject *obj, GeanyDocument *doc, gpointer user_data); /** Sent before a document is saved. * * @param obj a GeanyObject instance, should be ignored. * @param doc the document to be saved. * @param user_data user data. */ signal void (*document_before_save)(GObject *obj, GeanyDocument *doc, gpointer user_data); /** Sent when a new document is saved. * * @param obj a GeanyObject instance, should be ignored. * @param doc the saved document. * @param user_data user data. */ signal void (*document_save)(GObject *obj, GeanyDocument *doc, gpointer user_data); /** Sent after the filetype of a document has been changed. * The previous filetype object is passed but it can be NULL (e.g. at startup). * The new filetype can be read with: @code * GeanyFiletype *ft = doc->file_type; * @endcode * * @param obj a GeanyObject instance, should be ignored. * @param doc the saved document. * @param filetype_old the previous filetype of the document. * @param user_data user data. */ signal void (*document_filetype_set)(GObject *obj, GeanyDocument *doc, GeanyFiletype *filetype_old, gpointer user_data); /** Sent when switching notebook pages. * * @param obj a GeanyObject instance, should be ignored. * @param doc the current document. * @param user_data user data. */ signal void (*document_activate)(GObject *obj, GeanyDocument *doc, gpointer user_data); /** Sent before closing a document. * * @param obj a GeanyObject instance, should be ignored. * @param doc the document about to be closed. * @param user_data user data. */ signal void (*document_close)(GObject *obj, GeanyDocument *doc, gpointer user_data); /** Sent after a project is opened but before session files are loaded. * @param obj a GeanyObject instance, should be ignored. * @param config an exising GKeyFile object which can be used to read and write data. * It must not be closed or freed. * @param user_data user data. */ signal void (*project_open)(GObject *obj, GKeyFile *config, gpointer user_data); /** Sent when a project is saved(happens when the project is created, the properties * dialog is closed or Geany is exited). This signal is emitted shortly before Geany * will write the contents of the GKeyFile to the disc. * @param obj a GeanyObject instance, should be ignored. * @param config an exising GKeyFile object which can be used to read and write data. * It must not be closed or freed. * @param user_data user data. */ signal void (*project_save)(GObject *obj, GKeyFile *config, gpointer user_data); /** Sent after a project is closed. * @param obj a GeanyObject instance, should be ignored. * @param user_data user data. */ signal void (*project_close)(GObject *obj, gpointer user_data); /** Sent after a project dialog is opened but before it is displayed. Plugins * can append their own project settings tabs by using this signal. * @param obj a GeanyObject instance, should be ignored. * @param notebook a GtkNotebook instance that can be used by plugins to append their * settings tabs. * @param user_data user data. */ signal void (*project_dialog_open)(GObject *obj, GtkWidget *notebook, gpointer user_data); /** Sent when the settings dialog is confirmed by the user. Plugins can use * this signal to read the settings widgets previously added by using the * @c project-dialog-open signal. * @warning The dialog will still be running afterwards if the user chose 'Apply'. * @param obj a GeanyObject instance, should be ignored. * @param notebook a GtkNotebook instance that can be used by plugins to read their * settings widgets. * @param user_data user data. */ signal void (*project_dialog_confirmed)(GObject *obj, GtkWidget *notebook, gpointer user_data); /** Sent before project dialog is closed. By using this signal, plugins can remove * tabs previously added in project-dialog-open signal handler. * @param obj a GeanyObject instance, should be ignored. * @param notebook a GtkNotebook instance that can be used by plugins to remove * settings tabs previously added in the project-dialog-open signal handler. * @param user_data user data. */ signal void (*project_dialog_close)(GObject *obj, GtkWidget *notebook, gpointer user_data); /** Sent once Geany has finished all initialization and startup tasks and the GUI has been * realized. This signal is the very last step in the startup process and is sent once * the GTK main event loop has been entered. * * @param obj a GeanyObject instance, should be ignored. * @param user_data user data. */ signal void (*geany_startup_complete)(GObject *obj, gpointer user_data); /** Sent before build is started. A plugin could use this signal e.g. to save all unsaved documents * before the build starts. * * @param obj a GeanyObject instance, should be ignored. * @param user_data user data. */ signal void (*build_start)(GObject *obj, gpointer user_data); /** Sent before the popup menu of the editing widget is shown. This can be used to modify or extend * the popup menu. * * @note You can add menu items from @c plugin_init() using @c geany->main_widgets->editor_menu, * remembering to destroy them in @c plugin_cleanup(). * * @param obj a GeanyObject instance, should be ignored. * @param word the current word (in UTF-8 encoding) below the cursor position where the popup menu will be opened. * @param click_pos the cursor position where the popup will be opened. * @param doc the current document. * @param user_data user data. */ signal void (*update_editor_menu)(GObject *obj, const gchar *word, gint pos, GeanyDocument *doc, gpointer user_data); /** Sent whenever something in the editor widget changes. * E.g. Character added, fold level changes, clicks to the line number margin. * A detailed description of possible notifications and the SCNotification can be found at * http://www.scintilla.org/ScintillaDoc.html#Notifications. * * If you connect to this signal, you must check @c nt->nmhdr.code for the notification type * to prevent handling unwanted notifications. This is important because for instance SCN_UPDATEUI * is sent very often whereas you probably don't want to handle this notification. * * By default, the signal is sent before Geany's default handler is processing the event. * Your callback function should return FALSE to allow Geany processing the event as well. If you * want to prevent this for some reason, return TRUE. * Please use this with care as it can break basic functionality of Geany. * * The signal can be sent after Geany's default handler has been run when you set * PluginCallback::after field to TRUE. * * An example callback implemention of this signal can be found in the Demo plugin. * * @warning This signal has much power and should be used carefully. You should especially * care about the return value; make sure to return TRUE only if it is necessary * and in the correct situations. * * @param obj a GeanyObject instance, should be ignored. * @param editor The current GeanyEditor. * @param nt A pointer to the SCNotification struct which holds additional information for * the event. * @param user_data user data. * @return @c TRUE to stop other handlers from being invoked for the event. * @c FALSE to propagate the event further. * * @since 0.16 */ signal gboolean (*editor_notify)(GObject *obj, GeanyEditor *editor, SCNotification *nt, gpointer user_data); geany-1.23.1+dfsg/doc/stash-example.c0000644000175000017500000000126512146146075017546 0ustar hyperairhyperairStashGroup *group; gboolean china_enabled; gchar *potter_name; const gchar filename[] = "/path/data.conf"; /* setup the group */ group = stash_group_new("cup"); stash_group_add_boolean(group, &china_enabled, "china", TRUE); stash_group_add_string(group, &potter_name, "potter_name", "Miss Clay"); /* load the settings from a file */ if (!stash_group_load_from_file(group, filename)) g_warning(_("Could not load keyfile %s!"), filename); /* now use settings china_enabled and potter_name */ ... /* save settings to file */ if (stash_group_save_to_file(group, filename, G_KEY_FILE_NONE) != 0) g_error(_("Could not save keyfile %s!"), filename); /* free memory */ stash_group_free(group); geany-1.23.1+dfsg/doc/pluginsymbols.c0000644000175000017500000001125612146146075017703 0ustar hyperairhyperair/* * pluginsymbols.c - this file is part of Geany, a fast and lightweight IDE * * Copyright 2008-2012 Enrico Tröger * Copyright 2008-2012 Nick Treleaven * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* Note: this file is for Doxygen only. */ /** * @file pluginsymbols.c * Symbols declared from within plugins. * * Geany looks for these symbols (arrays, pointers and functions) when initializing * plugins. Some of them are optional, i.e. they can be omitted; others are required * and must be defined. Some symbols should only be declared using specific macros in * @link plugindata.h @endlink. */ /** Use the PLUGIN_VERSION_CHECK() macro instead. Required by Geany. * @return . */ gint plugin_version_check(gint); /** Use the PLUGIN_SET_INFO() macro to define it. Required by Geany. * This function is called before the plugin is initialized, so Geany * can read the plugin's name. * @param info The data struct which should be initialized by this function. */ void plugin_set_info(PluginInfo *info); /** @deprecated Use @ref GeanyPlugin.info instead. * Basic information about a plugin, which is set in plugin_set_info(). */ const PluginInfo *plugin_info; /** Basic information for the plugin and identification. */ const GeanyPlugin *geany_plugin; /** Geany owned data pointers. * Example: @c assert(geany_data->app->configdir != NULL); */ const GeanyData *geany_data; /** Geany owned function pointers, split into groups. * Example: @code #include "geanyfunctions.h" * ... * document_new_file(NULL, NULL, NULL); @endcode * This is equivalent of @c geany_functions->p_document->document_new_file(NULL, NULL, NULL); */ const GeanyFunctions *geany_functions; /** @deprecated Use @ref ui_add_document_sensitive() instead. * Plugin owned fields, including flags. */ PluginFields *plugin_fields; /** An array for connecting GeanyObject events, which should be terminated with * @c {NULL, NULL, FALSE, NULL}. See @link pluginsignals.c Signal documentation @endlink. * @see plugin_signal_connect(). */ PluginCallback plugin_callbacks[]; /** Plugins must use the PLUGIN_KEY_GROUP() macro to define it. * To setup a variable number of keybindings, e.g. based on the * plugin's configuration file settings, use plugin_set_key_group() instead. */ KeyBindingGroup *plugin_key_group; /** Called before showing the plugin preferences dialog for multiple plugins. * Can be omitted when not needed. * The dialog will show all plugins that support this symbol together. * @param dialog The plugin preferences dialog widget - this should only be used to * connect the @c "response" signal. If settings should be read from the dialog, the * reponse will be either @c GTK_RESPONSE_OK or @c GTK_RESPONSE_APPLY. * @return A container widget holding preference widgets. * @note Using @link stash.h Stash @endlink can make implementing preferences easier. * @see plugin_configure_single(). */ GtkWidget *plugin_configure(GtkDialog *dialog); /** Called when a plugin should show a preferences dialog, if plugin_configure() has not been * implemented. * @warning It's better to implement plugin_configure() instead, but this is simpler. * This does not integrate as well with the multiple-plugin dialog. * @param parent Pass this as the parent widget if showing a dialog. * @see plugin_configure(). */ void plugin_configure_single(GtkWidget *parent); /** Called after loading the plugin. * @param data The same as #geany_data. */ void plugin_init(GeanyData *data); /** Called before unloading the plugin. Required for normal plugins - it should undo * everything done in plugin_init() - e.g. destroy menu items, free memory. */ void plugin_cleanup(); /** Called whenever the plugin should show its documentation (if any). This may open a dialog, * a browser with a website or a local installed HTML help file(see utils_open_browser()) * or something else. * Can be omitted when not needed. */ void plugin_help(); geany-1.23.1+dfsg/doc/plugins.dox0000644000175000017500000004562512146146075017034 0ustar hyperairhyperair/* * plugins.dox - this file is part of Geany, a fast and lightweight IDE * * Copyright 2008-2011 Enrico Tröger * Copyright 2008-2011 Nick Treleaven * Copyright 2009-2012 Frank Lanitz * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This file contains additional plugin documentation like the signal system and a small howto. * It is best viewed when filetype is set to C or C++. */ /** * * @mainpage Geany Plugin API Documentation * * @author Enrico Tröger, Nick Treleaven, Frank Lanitz * * @section Intro * This is the Geany API documentation. It should be considered work in progress. * We will try to document as many functions and structs as possible. * * @warning Do not use any symbol not in the documentation - it may change. * * @section pluginsupport Plugin Support * - @link howto Plugin HowTo @endlink - get started * - @link pluginsymbols.c Plugin Symbols @endlink * - @link plugindata.h Plugin Datatypes and Macros @endlink * - @link pluginsignals.c Plugin Signals @endlink * - @link pluginutils.h Plugin Utility Functions @endlink * - @link guidelines Plugin Writing Guidelines @endlink * - plugins/demoplugin.c - in Geany's source, bigger than the howto example * * @section common Common API files * - @link dialogs.h @endlink * - @link document.h @endlink * - @link editor.h @endlink * - @link filetypes.h @endlink * - @link keybindings.h @endlink * - @link msgwindow.h @endlink * - @link project.h @endlink * - @link sciwrappers.h Scintilla Wrapper Functions @endlink * - @link stash.h Stash Pref/Setting Functions @endlink * - @link utils.h General Utility Functions @endlink * - @link ui_utils.h Widget Utility Functions @endlink * @section More * - All API functions and types - see Files link at the top * - Deprecated symbols - see Related Pages link at the top * * @note See the HACKING file for information about developing the plugin API and * other useful notes. */ /** * @page guidelines Plugin Writing Guidelines * * @section intro Introduction * * The following hints and guidelines are only recommendations. Nobody is forced to follow * them at all. * * @section general General notes * * @subsection ideas Getting a plugin idea * * If you want to write a plugin but don't know yet what it should do, have a look at * http://www.geany.org/Support/PluginWishlist to get an idea about what users wish. * * @subsection code Managing the source code * * For authors of plugins for Geany, we created a dedicated @a geany-plugins project * on Sourceforge and GitHub to ease development of plugins and help new authors. * All information about this project you can find at http://plugins.geany.org/ * * To add a new plugin to this project, get in touch with the people on the * geany-devel-mailing list and create a fork of the geany-plugins project * at https://github.com/geany/geany-plugins. * Beside of adding a new plugin, geany-devel-mailing list is also the place where * to discuss development related questions. * However, once you have done your fork of geany-plugins you can develop * your plugin until you think its the right time to publish it. At this point, * create a pull request for adding your patch set into the master branch of the main * geany-plugins repository. * * Of course, you don't need to use GitHub - any Git is fine. But GitHub * is making it way easier for review, merging and get in touch with you for * comments. * * If you don't want your plugin to be part of the geany-plugins project it is also fine. * Just skip the part about forking geany-plugins and sending a pull request. * In this case it is of course also a good idea to post some kind of announcement * to geany-devel and maybe to the main geany mailing list -- it's up to you. * You can also ask for your plugin to be listed on the http://plugins.geany.org/ * website as a third party plugin, helping Geany user to know about your plugin. * * At time of writing, there are some plugins already available in the * repositories. Feel free to use any of these plugins as a start for your own, * maybe by copying the directory structure and the autotools files * (Makefile.am, configure.in, ...). Most of the available plugins are also ready for * i18n support, just for reference. * * We encourage authors using this service to only commit changes to their * own plugin and not to others' plugins. Instead just send patches to * geany-devel at uvena.de or the plugin author directly. * * @section paths Installation paths * * - The plugin binary (@c pluginname.so) should be installed in Geany's libdir. This is * necessary so that Geany can find the plugin. * An easy way to retrieve Geany's libdir is to use the pkg-config tool, e.g. @code * `$PKG_CONFIG --variable=libdir geany`/ geany * @endcode * - If your plugin creates other binary files like helper programs or helper libraries, * they should go into @c $prefix/bin (for programs, ideally prefixed with @a geany), * additional libraries should be installed in Geany's libdir, maybe in a subdirectory. * - Plugins should install their documentation files (README, NEWS, ChangeLog, licences and * other documentation files) into the common documentation directory * @c $prefix/share/doc/geany-plugins/$pluginname/ * - Translation files should be installed normally into @c $prefix/share/locale. There is no * need to use Geany's translation directory. To set up translation support properly and * for additional information, see main_locale_init(). * - Do @a never install anything into a user's home directory like installing * the plugin binary in @c ~/.config/geany/plugins/. * * * @page howto Plugin HowTo * * @section intro Introduction * * Since Geany 0.12 there is a plugin interface to extend Geany's functionality and * add new features. This document gives a brief overview about how to add new * plugins by writing a simple "Hello World" plugin in C or C++. * * * @section buildenv Build environment * * To be able to write plugins for Geany, you need the source code and some development * packages for GTK and its dependencies. The following will only describe the way to compile and * build plugins on Unix-like systems [1]. * If you already have the Geany source code and compiled it from them, you can skip the * following. * * First you need to have Geany installed. Then install the development files for GTK * and its dependencies. The easiest way to do this is to use your distribution's package * management system, e.g. on Debian and Ubuntu systems you can use * @code apt-get install libgtk2.0-dev intltool @endcode * This will install all necessary files to be able to compile plugins for Geany. On other * distributions, the package names and commands to use may differ. * * Basically, you are done at this point and could continue with writing the plugin code. * * [1] For Windows, it is basically the same but you might have some more work on setting up * the general build environment(compiler, GTK development files, ...). This is described on * Geany's website at http://www.geany.org/Support/BuildingOnWin32. * * @section helloworld "Hello World" * * When writing a plugin, you will find a couple of functions or macros which are mandatory * and some which are free to use for implementing some useful feature once your plugin * becomes more powerful like including a configuration or help dialog. * * You should start your plugin with including some of the needed C header files and defining * some basic global variables which will help you to access all needed functions of the plugin * API in a more comfortable way. * * Let's start with the very basic headers and add more later if necessary. * @code #include * @endcode * * @a geanyplugin.h includes all of the Geany API and also the necessary GTK header files, * so there is no need to include @a gtk/gtk.h yourself. * * @note * @a plugindata.h contains the biggest part of the plugin API and provides some basic macros. * @a geanyfunctions.h provides some macros for convenient access to plugin API functions. * * Then you should define three basic variables which will give access to data fields and * functions provided by the plugin API. * @code GeanyPlugin *geany_plugin; GeanyData *geany_data; GeanyFunctions *geany_functions; * @endcode * * Now you can go on and write your first lines for your new plugin. As mentioned before, * you will need to implement and fill out a couple of functions/macros to make the plugin work. * So let's start with PLUGIN_VERSION_CHECK(). * * PLUGIN_VERSION_CHECK() is a convenient way to tell Geany which version of Geany's plugin API * is needed at minimum to run your plugin. The value is defined in * @a plugindata.h by @a GEANY_API_VERSION. In most cases this should be your minimum. * Nevertheless when setting this value, you should choose the lowest possible version here to * make the plugin compatible with a bigger number of versions of Geany. * * For the next step, you will need to tell Geany some basic information about your plugin * which will be shown in the plugin manager dialog. * * To do this you should use the PLUGIN_SET_INFO() macro, which expects 4 parameters: * - Plugin name * - Short description * - Version * - Author * * Based on this, the line could look like: * @code PLUGIN_SET_INFO("HelloWorld", "Just another tool to say hello world", "1.0", "John Doe "); * @endcode * * Once this is done, you will need to implement the function which will be executed when the * plugin is loaded. Part of that function could be adding and removing of an item to * Geany's Tools menu, setting up keybindings or registering some callbacks. Also you will * need to implement the function that is called when your plugin is unloaded. * These functions are called plugin_init() and plugin_cleanup(). Let's see what this * looks like: * @code PLUGIN_VERSION_CHECK(211) PLUGIN_SET_INFO("HelloWorld", "Just another tool to say hello world", "1.0", "Joe Doe "); void plugin_init(GeanyData *data) { } void plugin_cleanup(void) { } * @endcode * * If you think this plugin seems not to implement any functionality right now and only wastes * some memory, you are right. But it should compile and load/unload in Geany nicely. * Now you have the very basic layout of a new plugin. Great, isn't it? * * @note * * If you would rather write the plugin in C++, you can do that by marking the * plugin functions that it implements as @c extern @c "C", for example: * * @code * extern "C" void plugin_init(GeanyData *data) { } extern "C" void plugin_cleanup(void) { } * @endcode * * @section building Building * * First make plugin.o: * * @code gcc -c plugin.c -fPIC `pkg-config --cflags geany` @endcode * * Then make the plugin library plugin.so (or plugin.dll on Windows): * * @code gcc plugin.o -o plugin.so -shared `pkg-config --libs geany` @endcode * * If all went OK, put the library into one of the paths Geany looks for plugins, * e.g. $prefix/lib/geany. See @ref paths "Installation paths" for details. * * @note * * If you are writing the plugin in C++, then you will need to use your C++ * compiler here, for example @c g++. * * @section realfunc Adding functionality * * Let's go on and implement some real functionality. * * As mentioned before, plugin_init() will be called when the plugin is loaded in Geany. * So it should implement everything that needs to be done during startup. In this case, * we'd like to add a menu item to Geany's Tools menu which runs a dialog printing "Hello World". * @code void plugin_init(GeanyData *data) { GtkWidget *main_menu_item; // Create a new menu item and show it main_menu_item = gtk_menu_item_new_with_mnemonic("Hello World"); gtk_widget_show(main_menu_item); // Attach the new menu item to the Tools menu gtk_container_add(GTK_CONTAINER(geany->main_widgets->tools_menu), main_menu_item); // Connect the menu item with a callback function // which is called when the item is clicked g_signal_connect(main_menu_item, "activate", G_CALLBACK(item_activate_cb), NULL); } * @endcode * * This will add an item to the Tools menu and connect this item to a function which implements * what should be done when the menu item is activated by the user. * This is done by g_signal_connect(). The Tools menu can be accessed with * geany->main_widgets->tools_menu. The structure @a main_widgets contains pointers to the * main GUI elements in Geany. * * Geany has a simple API for showing message dialogs. So our function contains * only a few lines: * @code void item_activate_cb(GtkMenuItem *menuitem, gpointer user_data) { dialogs_show_msgbox(GTK_MESSAGE_INFO, "Hello World"); } * @endcode * * For the moment you don't need to worry about the parameters of that function. * * Now we need to clean up properly when the plugin is unloaded. * * To remove the menu item from the Tools menu, you can use gtk_widget_destroy(). * gtk_widget_destroy() expects a pointer to a GtkWidget object. * * First you should add gtk_widget_destroy() to your plugin_cleanup() function. * The argument for gtk_widget_destroy() is the widget object you created earlier in * plugin_init(). To be able to access this pointer in plugin_cleanup(), you need to move * its definition from plugin_init() into the global context so its visibility will increase * and it can be accessed in all functions. * @code static GtkWidget *main_menu_item = NULL; // ... void plugin_init(GeanyData *data) { main_menu_item = gtk_menu_item_new_with_mnemonic("Hello World"); gtk_widget_show(main_menu_item); // ... } void plugin_cleanup(void) { gtk_widget_destroy(main_menu_item); } * @endcode * * This will ensure your menu item is removed from the Tools menu as well as from * memory once your plugin is unloaded, so you don't leave any memory leaks. * Once this is done, your first plugin is ready. Congratulations! * * @section listing Complete listing (without comments) * * @code #include GeanyPlugin *geany_plugin; GeanyData *geany_data; GeanyFunctions *geany_functions; PLUGIN_VERSION_CHECK(211) PLUGIN_SET_INFO("HelloWorld", "Just another tool to say hello world", "1.0", "John Doe "); static GtkWidget *main_menu_item = NULL; static void item_activate_cb(GtkMenuItem *menuitem, gpointer gdata) { dialogs_show_msgbox(GTK_MESSAGE_INFO, "Hello World"); } void plugin_init(GeanyData *data) { main_menu_item = gtk_menu_item_new_with_mnemonic("Hello World"); gtk_widget_show(main_menu_item); gtk_container_add(GTK_CONTAINER(geany->main_widgets->tools_menu), main_menu_item); g_signal_connect(main_menu_item, "activate", G_CALLBACK(item_activate_cb), NULL); } void plugin_cleanup(void) { gtk_widget_destroy(main_menu_item); } * @endcode * * * Now you might like to look at Geany's source code for core plugins such as * @a plugins/demoplugin.c. * * @section furtherimprovements Furter Improvements and next steps * @subsection translatable_plugin_information Translatable plugin information * * After having written our first plugin, there is still room for improvement. * * By default, PLUGIN_SET_INFO() does not allow translation of the basic plugin * information for plugins which are not shipped with Geany's core distribution. * Since most plugins are not shipped with Geany's core, it makes sense to * enable translation when the plugin is loaded so that it gets translated * inside Geany's Plugin Manager. As of Geany 0.19, the plugin API contains * the PLUGIN_SET_TRANSLATABLE_INFO() macro which enables translation of the * basic plugin details passed to PLUGIN_SET_INFO() when the plugin is loaded. * * PLUGIN_SET_TRANSLATABLE_INFO() takes two more parameters than PLUGIN_SET_INFO(), * for a total of six parameters. * * - Localedir * - Gettextpackage * - Plugin name * - Short description * - Version * - Author * * The @a Localdir and the @a Gettextpackage parameters are usually set inside * the build system. If this has been done, the call for example HelloWorld * plugin could look like: * * @code PLUGIN_SET_TRANSLATABLE_INFO( LOCALEDIR, GETTEXT_PACKAGE, _("Hello World"), _("Just another tool to say hello world"), "1.0", "John Doe "); * @endcode * * When using this macro, you should use the gettext macro @a _() to mark * the strings like name and the short description as translatable as well. You * can see how this is done in the above example. * * As you can see the author's information is not marked as translatable in * this example. The community has agreed that the best practice here is to * use, if possible, the latin version of the author's name followed by the * native spelling inside parenthesis, where applicable. * * @subsection plugin_i18n Using i18n/l10n inside Plugin * * You can (and should) also mark other strings beside the plugin's meta * information as translatable. Strings used in menu entries, information * boxes or configuration dialogs should also be translatable as well. Geany * offers a way to enable this in the plugin's code using the main_locale_init() * function provided by the plugin API. This function takes the same two * parameters discussed in the previous section; @a GETTEXT_PACKAGE and * @a LOCALEDIR. * * The main_locale_init() function is best called during initialization in the * plugin's plugin_init() function. Adding this to the HelloWorld example could * look like: * @code void plugin_init(GeanyData *data) { main_locale_init(LOCALEDIR, GETTEXT_PACKAGE); main_menu_item = gtk_menu_item_new_with_mnemonic("Hello World"); gtk_widget_show(main_menu_item); gtk_container_add(GTK_CONTAINER(geany->main_widgets->tools_menu), main_menu_item); g_signal_connect(main_menu_item, "activate", G_CALLBACK(item_activate_cb), NULL); } * @endcode * * @note If you've previously called the PLUGIN_SET_TRANSLATABLE_INFO() you do not * need to call main_locale_init() yourself, as this has been already been * done for you. **/ geany-1.23.1+dfsg/doc/images/0000755000175000017500000000000012146150003016052 5ustar hyperairhyperairgeany-1.23.1+dfsg/doc/images/pref_dialog_printing.png0000644000175000017500000010427512146146075022774 0ustar hyperairhyperairPNG  IHDRzaֻTsBIT|dtEXtSoftwaregnome-screenshot>OIDATx e%"[6!Q^EY*IZW%R_IY0cvf fcgf6c7֔xNgf:f4|>_y;׽<7ݔ/B!?n7nDFFHzz??>pe3g˗ ryB!]tIN>%cZ^ddJw!BH'<<\,mB!|αcǮ?pB!,_ɹsg !BH"zhwl:!* 6+**Uu',Vz+WK/(իWڵkȑ# !ѻt5&BHnbނ dʔ)ҩS'ݳgOرc%00Pv-qBEr6 !*sIMM/y%gһwoW^yEU&/YZjҤIbc!a.a:jJ6oڨfϞ%_xAZUq7:QzK.<CI.ynBrҍ sNYl|{ذaV}QYx͛{OW^OȩStw|:" `<ÇI:ul~M\\6tP8pҥ̙aFb-[(iii!ׯWn*y!$DZޙӧ$!.m ;> >\ cOLoܸ:䓏NVZjɐ .tyX/瞓zK8qBˏ?Qaz%qt="zN0d!*bC\ː:ߔ+Wej*Gy8[<2/o~vÒ?vTfϞUf !$2!$73[ 1;W9dӦM"xmlwȼ{ҤIsβzjYflذizS*qjAq,w4-UN:I!JÆ#f6#UYyxx?RTfMn7CƏ>v1㏤QF:Ɋ+Z!$^rʘ@! {25 D?tu#ֿ/\`)~/^t:eΞ=sdhG!B ;y8!B)@P!B 8~B! (zB!=B!B#B!=B!B#B!=B!B#BB!%z $w̝5B!A<=fJbٙA|m9|6?dr Y$bOMU=~w٥w*{vLm[7g`ۖMVlM6ȖM֬M)6M(֙V֭֯YeajgaM|??.Ȏk޶sGkRvGqK?sB!9*  vM<=fٳ=!B8N4}ӢwM7B!B(zDHb/>%A*w3gLNޒ S\!(.= _N8p],/aʑ!R@EoyRhQ ͗UyMh^ڶm#O>3}G-QԫW/[DZBcw^|Q>_L.=w+JR^uLAj;j< fNKRBc*DуpvEJ.-ŋ믽&e˖nM>7<+zV{,O{G! zǎAx$zC~)CeYRmуxMΙ-a!f7ZDd< =<,,=TY.1D)^_\D/4gBU"|OP&M/e˖ zVF\IѫYT\InV7"]Tҽ[7Cj+g{VZW%4yUR–f+-0kLVR%-/B!y{=Ѓ2x6#z y0E/6:fD @[jw}g7f([a)Ueŋlg D!{r^-90oRl6;iկ__1:![ )a`)[DFt(z Yvp$z;zaK|}i!dUl[f[7#֖YFǛ=giu]r=.!RDתUK/JPjkjժYb yGdY0+Ӽԭ[W>Ր)':ٳf>uz=g%JAiTif~ǎ]wZ=r-fu=SULуXuTRE'Q%]Uok&֯Qhݻuնm۾Rb[sM 5}9֤ɳe߾*5vhG#B hO"#Uծ&i:wܸjzOO#B(zȎD~(!rE/GRP(z9 "{7|SE>J!-[{N)z`YhH!o0NMyB!9$zK(zѻ':^Æ -yqB!=!BEG!EG!B)z=!B |Q(zB)`M|}>rI%\.mwERHޟHժU5_T_Zl ^zѴTMplyn|5gXeuErQ:Gk|s' iRÍW0DC'z_9$z?\G/ ۷Ɇ$lYe5j(+u5{nsΑȈpټi>+j m-Yݴ=p[a}`O8Qz)K^",:Ç -7iutGwDehذ7; /`\͛[oa;9B֯[?T@$Yz'dV``]p?ؚh+[iO9,駟VwN:M#9qz9'!=^A=!Tл֕˗sD=' @@ J+ۄ$Vy1qu%]{͝;ѼT[$!a{Gt^UidbBd_JrĻOo]%ժm;UYҊrKǖ9:4!뮻sP(zL􎦥ߥ3&1Qr,1ufޭTTI^~F0ґ:YUҼs'TY?2?=\;| 6`@L9}w=3Al ַjbvfβsM?.}a:4Q@=RHEE7+5ћT^Kyf|x"uF_HnݺvիbѳU=矗ut@N~u+W6e%zUQ+bTb[0אF10EB!Nr]54GawXC0$C%-h[>orY. [!B,DoDm&lA0K|\J)zёw,u-A!^vDoc>M8^AF-EgJTD, 19gMmF>xEs5Zj$#-:r 9d !ޖ:/t/*pٳgԟ'^|(zLa^)ø< G̳|$b# 7 JvVړC Asތ +W)z.t凿l]+B'w$Jeve q;{H;rH"V˽)zqW oRpH޿_B8=C9Cn$GK QHtP!޲D廑)z=B#}a-D!_7#=qWR!$#aaaҲazE/G.?/gd@Jl0|a ٸqv~+sEGngoY4U %!!AbD`m$^UٷwƍW227E/8G#=Bɟ:_dW[DEEfX޲4%K7+3k ox[cGA_`M c}۱8?q%2q [,Ʋ+EqEr@>zV>ћ3akw36A 񋎎ȡ# : Js[1^م!N _lHNCNiϟ)]CHp!A\>l.D?`re3;o9s[/ =ikW:rr4^;w4'@[ƣ= ڝ9}* beun%:*x# :kV6}*zzgm3?.]19zr$z8dh6 ]7/|,+9ʉs[/q14$3G I"L#2i(9v,U<(cWSRRD/.6FVDEFȡvX^]/=OqӨ`r/UNH?!'is$`DXm~Mh"/IغeR!@!sWEGt|GD=9Oh Zcq*z6#rr:ըIFg/*H -Tm=NS739O+v勉\ _=R f|q]!$_Arٸ#د8(I=zT~=F:$3& T7ZENExV6T-H^ )ox# :6h:k*FTQ 8vT/\[z\z\x0CT q *W[7okWa'HugY8hSH8:YKtnuyyj/(c/ T5^czAc>"`֢H9#ۿgw*YWEbsew n\VH1E!z,eWÍ/qk;iP͋k+aciA#YU$-{ӧg^W޴/ȑ#2yD~bENE/;iSN:kы+zK)za7wsßyUix)o@3 2N\*[]^,υ E'-{ հqIY3Oj+5F*1ߌYWݢv;TR}8=P Y%B&s>3ʆD̖Y绲!:i1ò<"g?EzUmJެ)'NŸH9 qEN?+KTTӧOnceV\[g+m Ɯ1WȪn񰇀ԫ_Yi80 E^[87"8.߻w$JHpJ/sիz@̐C̢at(C Qþ^,8w9=Sq^liY1Tx"BX۷ GqC̘LyLmr=6ߓGĚ4DB,wzxXhL׉6ުAhW:cWCԶOE\EpjD3wͭeEive3Ej;39&zbA:qNfu7_-=-у08f9gjDbk7Wd0^ Q!ɛ>Y)յSu\eo]v#z^XH>ClfB%$lY;`ߺ*zeD;?WAx=$>5`-];LmݴQ;0@r쉍|Lw:M@0ޙ͡7L_$P{bׄѳ8_QV[Xùl]⊘a?e*uy8>B\JeOe2k$F>*)))`[6o޴\LF~-UpcU6f`1Ƴ:?)z\PѮ '?-q!D;suSmǺβ:[X+y˜}m>6}#|IE{R%"tٳG&xX헦Z;jȰ9.z k3`|?93kmfנZgC|\Ed˖+ GF&TKߌKsvWEjC y񆘡ʎD &3ݚmHkg<0$L~bF#7LP(z8aL%%ˊavjٶ:zgFe9òmݲEmټY_ wM7eGq(zX&ti(z^LQ!$^8D/-mڸA%K ܅!M<^eUiZ- rE nQ 3vxݺu衽%G!$؄qL}PZmڸ@H iZ} -_Vխ)zntEP!8U]tieN`p\=oz|Gr=U2Tf3zT*Iƫ]h/ʗrJ_(-ZTv,KŋSH 81HoRpس3Q| E/UeFwXڿFoC,׽{7yZ2cJ9}6z"zڶFJtdA4nHڴ~"zX/J^q)zŗmW|!H!)ɖgsaa׎#!ݻoP!z!A(R.v3-уr-RuhNC^cHN@ [IP& HxTXuF':b#چF1Vi/xݢuD^-oaˮ腆,i֬L0Q;H~ !Ektv$lWA?2h`}ncew%&h9+cE=7,~}=TɚCW#z6!B4 @Twxo-B؉.Jdr Q+5OG|%zWiۦ~!;G#|~jWLFnjX-˭Zj/^m^ m(zBmWhMK:J XbgRJvL~Gw;rJ2cު(y][)S/WN:!B yV n)zBQ!BrV|}$-EG!&zu)z=B!P(z=B!P(z=B!P(zB!=!B(zNE/8G#BH@/EB!LlۺIŎG#BHsK͞!sgM'9D~CG#pLO!$68pfN!9$z}c-#zxIhv9zB=EHs-$v ͜BrJ<=fٳ=^]ͮ4uQ$oS*Q(z@USPvR!Gѻ1w $!7I=B٪ۙ*zOÇ`r$KIr9*gNrr $!7)z9w,Eio^ 󓱣GwVqr/8?#LR/!7D!!C+8w,-Mm"G 3yaeΝrY|PvɄ+y3'E^u]{dO$|yXL\p^Φ)z{RwRn&YZ[iyz^FulOiܤ,YJ.yaO$v&7 ,e e˖1헜ܷ8S!GѳMQ;|.\ G}TwLDGFջ*zL?[I{ HwZ+VL/!+$f=K~, ev;e!`waus^|ߏs޷8(zBѣm۷w/PT`>{vI\)zJ᫢"*^[iy͍.ERhQ_SL4|.]9"zAҸsRDITۥ#^tiߡlJcw;T;C#Z ,z=)WV.3m<>YDQj] g7ߒVY_l|g9&L<]P۹4QNg-%J;eX{~[ʔ-m~weߺr$JNG! z>^jԸQ#А%=| P,zo/7sLN}\߭4k]ǐ%f&YZX}ߏ /8LC[o%M~Ϗ_7Hw;K5,ў u/54[<-"vrٚTgd .5j֒e~J;(4"1yS͖[oMNc7oG,`JIvcr8[Gi 8FYΛ9![R-Euߥ3&1Qr=xLpX~7#R.ϋ-kqNG^OigO6K{*]ƒ|emMq/#["_Cu4*ek8ywC~*WuZ6*ʾu;;C !$EyJ\uِ RTIi۶FGXDoOiР}ݺL7; у$%8y˗^%,TƏUW=ۨqŨjճLߕtD {,*Sg,Zielݙ=L'#j1z2:\ʔ-Ր9-zk| Z>[۸+95EѾuΤ9׋G!7JKmLuE|,'g^^͚5^մ0cB3`2xǍYv5LӦdp4 zxKǤ .-G3hE`Ͽˀm"Vmeں+Ey'c!,$Đ ,f<4<1 .Qћ`N ˯V;3d09&mڽ.5j>(M{>tw˺Ӑ/1(!}(KVE|B;h*yHK/C8gc&N5z>&mw~wu:K3xC-qQ!^6z9WDo!rL0^ʖ-k=E! 4EE* 2yXT'yEowQXy'G]ŋt|;*!U]j=X[Θc~nrϽeY!OUJ)#oY;-X/h iO0ݲ]i2lyɧulOo kPx#v ʎQse:Kczʕ+̜+(EBrR5n-2E/dItx/WN5k*gN/TP% 8yyYQA ɳU]kͤma*?*X46S!$'Ega?!i!Kvƀ}u?ꋉ(Tw=0R6#5ުhyrJZSFui?klc"Ej[E//2k"V^|HoG!I /z Û Q$&B(zfN`oўx[A~ aٶa6$ao6νUBrO)z>zG#iJ+JmF  Y!,P GfN!v_wG#BH~=Í(z=B!P(z=B!P(z=B!P(z=B!ˢ@+lw,-c8ҝB!yPBU(zGp\|/m4{^`BH~Ąm)۶nR|ñq:uJfΜ)2C(zBH~sK͞!sgM'9D^=D}I&RJ wI֭]Z5Az9Hiv>7)ɺ۶n B(zE/[o-\UDҸqc{dʔ)rE:;]rDGGI˖-jժIyz'Ou\-m[^znP!!gϦS nݹs2^>}47aH`cYWEz=uZbbB\f+(ufٸaJ5o|Bѳ+zb<ECyIIIQH^ǎUOvEo:-%9I+VO\rRD yң{w^-ZTjժ%A:cvakAn;*|!L2ҩS'ow<~K֯HťbŊu~ҫW/k!֢WdIy:RT)iѢEh:͚6մ=zJ!yTP#Kѣ9=ҡ]Zj Q>wD±kY'͛7Wegae&%`޻'*IֵԬY#z駽QR}Y3yw(=g?!׭?@bccdA*iG,h= rjmqп$l&֯eBHEVΤRǔ:uhsG[Ν3թzsEs  rXB\nWDϜ_oȗ6z+I"E+eW"D7SBɻwE2rY^!˗/g=E~en]i7L2-ѳ=KIngk2/o%zwi4WnO{nRR%yV›*!Aۿo{^%z?=jd]v6{=t!z,/N>G͛6p.67DBv뭷j=~LKKKgN՚q.]Z&OdI|ڴiøklx^mC{=t@Kh;=Tך3}vpDmQ6H䤉J!=^> *p?@dbCdİgD|gr]wɽk:@TZj|.gϞ:BԮ][ڵmm[=qov[KZ>wE)_kܸԨQCˉUZv{NdNڲ`|T !Go~&K,.!Bѣu#BH=/"z_no@0q=K#BEF$ {׵vB QWoB!Gѳ Q!ˍ[!B(zVw<#z:vԑ˗+'ovxCVYDo1B_5S4/w}4)zB)wXZ_{M<<&MmXDvmqF` H0GzJ`cb=kEB!)z[nEZmu"}2|T,i4{wګ*z%BH=?o<#z+t:= o 3EigOJ7kUofMe֌i=B!YgDwZG[nQaa~boAL]l3훯1Q=B!Pnd6[k=th-m^yыTF_+Y 2X♒e57dZիb(zBHу\7ĭlٲNϷtukNʔ)c/';BhG"׬sKK,!Ew n !B+ KK瘺!Bѣqq pʷ _r /0B!$^"ñq:uJfΜ)2C(zBH~=Dk>D+dhOrr4iD wI֭].M HtTK~$ܶu !P(z֞>}Z7n,sL2E.^(C'K¶^X(iٲTZUߥlo':}R^=^=BQ(zDowTΝ;A飑 &oD˺*z٭r:[6 U_!G+ygyFRRRTꢣ5ױcG;][[KRwb TPRD yң{w^SV- y3T^ lyuEA^MKҥTPAA^^ Ifo y;*|G:u2vmH־_Z~E/.+V^ziؗ )=%uTRҢE Sgeu5mic{ B(z.z;CV_!͙LH؞8sծͶ7o[{NAsDw&*U_nNp !$^b64T(zC~:H{Ԛ^vl5{%ѳsWZʼn֚rwȔɓ5qMvmfLaDlC5ln[oնyݞYFU6MB-+^2o ;k:!al3g2]ZZZe?sWDϬDnjCki()^>о ٷo|q+ڻ͚uڴiCk (ۢzm.YGP]kv{&:+=CA 9iDvBH@_opE:?ÆJp_=hGw`]-Ѵk)MJ˖-#RŒ/>~~ʀjݞ={j֮][ڵmm[=qovw=!R|ږqFRF -'ݞSGҥuԖK!A<=fٳB$zgTϢ -0Ӆ bbUx!DUϟy/̛WI3qBQ,5E0ȎDm G~%ngR(z=+4ZGõ_ !;C;sR(zB)^=!B(z=!B(z=!B(z=B!EB!=D% ̔ɓn!@_!B(z#z 0m6]iㆫlX, ?L#BE^mx ]u KK瘺!E9&z!*UҥKI_LA/ {G^lB.)_|ҵK)Ujj^bEtŋkSr$zȯlٲrm'ƍU,ǍQу;RBy)Yn\n=ϹRrwKhE5G)J}|^`BH~crL>oPyqcyCaA?dW_;CnޤyYi~cJmޘ_Fy$(@zeAz6G.ߓzO-7{GL"/^%aۿoq,wIttlRVm@wq]ղo߶Uիo.Cd)zBG|%&lQ6;c\yԪ-7ZDU"w~"Wh [y3EoUlEuƀGgse>}h$o„ Ʋ^h%&&kqB]K/c>*Q 3g[ƌ%T~F'RgFzRћTCkkыV;)e@Y%ƏU#{-ZTbA<<wޖi]t *H"E4/?*{ǏO>X#N:~oSׂ9*+~ː)zҶuL!Pϡ-BժUSZlm3\oOGT5kvyŋKRbŊ`ݻuU\̞9CE/*btzT2AW&͛`ƍCƃ?[S vhKvy-Zjժ3D=TڹCVbi>llټI`mݶ[[׮RfM#dXf%axyUrs?D"#e*J >>q e䈟26w5Z5{~a;l;XBV``/sKSmB)w^ꖯ@Yǔ:uꨜ0 K=wD@!;g=m2hw7gK26jMCN:C@ly >zQED\tZoYۂ?L ݕYK!=^˗/g=E~en]i;L2Ϯ!g^pܹOjuuu'Ժ9s vqu&l&6-5涻6EB #B&z?=jd]v6{=tي9+| GkxmV0edoi`ۋ}mFDԲÝ`Tdmw=B)ࢇB+\Ϝ tiii~a:r^7:f:x@e^^3O3m/gyh+yB6e߾Egׄ졍ڰYM:K@F c>ދ%zsV:pBKu]g=YY)zBDٻn)z *p?@dbCdİgDG,{zfˡñi.S:uyqO*|q]|Q/lPTSEvҮml۽[7\ks;++EB(z&zgTϢ -0Ӆ !E/^! 'Eo̘_t2C(zz-0ᇸ/>ћ0~PrHssED鍊nukdiwm駽s,)Zm["CIW^׎]v+ב%+zzؘ()[ d!Ȉ6E/tiο |;En;ωm[^zE}xÇ."zPThiux,vyjU_-HbW} ϐ)zs=fI..˗7ڿNEу, _o exZ SDJ]fVT!C4-7f'S3;Z;w^c7mwbEE{RcU͚5kG| 12x #oI^x}J孷r+t#Y~#eu|z{=n/_[ sZowYWf9)zsl=LKLLȶeoʊ}w%z_<,z~^NEm ՝K3Mɓ&j7p@cUli_Daj^Xh֚lϢUm\zvE# }&oS 8tucu&D淩f>_F6{6VC sud͙,-уzBxlÔɓu3:;(_wD[GìvGr*Kq/@]9-z⬬<ǨȈkV\BH~=.@bGܙ#_댱kgFeHcL`sLt2iDmQ? ~;в.YeGVM:L C42nf$:x@lD=TךѤl煶d.B>_|=(_wD/;oh=:mP=Nq̲̘>M;|8,gk[\)k䑺u?u>]C>6tC:N#M{3e?daЏ&<$CƘKПpA9/Ο5p;%^s\r河g;=}ٙ?]:yu.D_E^4k/CIr)?9)`0*HKKn O,>eޖdq_/ç3.}+uAw9,Qwk*N>QN]rI'/9u4:e8q|O[9a|~B_XK[N7>/Dϭcۃx1 J =u܆ڤ`0zS&M0ؙ*sKҡ7@Q\]P$ n3^-vgy+;}2IɂN\?y'Ka9 9rZP;=qB`0zC|=B$5] b#~FYr^>B`0f.F{R26ek [ ]&/7WT;gE-ٚHzV[Tbqmw6 %z$}xpS~EGYB/p4G9&7X ,y瞳:SO=U}?Ԕ 3GT+B^y-If$;;`0*P $}B"Օ#[1P!"21GzlUjUٽ+#%IYS}vy饗瑑r=ȺuXQ ,Yыt Ɍ?ZO㧨 $3S':u ʍ7ި#pҥtov*˗-<;OϤI;nݺҾ}{IL/S端]x„j^Ν;KFd5jH~}~k? !CwegSЋ-]=xzzo!ӧeȑwvvE7 -yn$(qHL`O%r풓4a7WCͿ(2pٶw9?TGS-vv=j7l/߷/KS\<}Q{yW$!ֲeKi׮]i&j7kd>|gz1?ېֺB/2< '|R8oʮ]$330 %I k.? 9_ȱ'@"%= ņ(cwHgCBh&k^h>}={uz Kz=OӧNծ'/ԬYSG-gֆ^vVp d9-(0Pf~-)fˮ۫^LL>&qرzw>+>O]w% |\2^]bnz'獆:Vן4z 2Q7R-&.=&ZzO?U(TiBn[-Zd|…i.ւTDD_ ;tPQAuZDxաW ~nfmCZ-k{wg2 ]xUIo!'S>#.o/9;zjkuIvpvݪ+zn+11njק\=Ao3fHzZ)6HO+eEcLzF-z/]e lֆ1?zfj7nߗ`:-Ǎ۬:>P q&MV?`8g$j-)בT.Ўƶܘr:CoE'8%ҍsyj݀-Vҽ{7`R/a:y x_gWUO] ]zy< _?HZUfUu"޵^^4Rĕ%EsȩhB"&,`0qT7b~#SN.1jK^^^nBOAjg% zS=TC5w3قޒ_FÖS5q\>>R/Kc0 Ơ} BO8`>_7o9<|io}0za^=`z.h;w$@1 C՗z Ikzpz&ˬiSeǶ| QIFTdM{ɏdƘJzO_Vĉ=8zdo_*Pe}@2''LVf~FZ<[gJ\UCoUz ]?󈞤/Km2qzS:nz3bؗp ?~-`2qOp7c>Ҙ1m^U_xA^N1jdGn#=*a'GzCq\2Z'=jk!i?l]O=BzUBO(G/wz1! vC)fzz|W.'@#JwP#)F8;#T;={^][~۬#zuK ܣ=e{ҸQ#֭eKըQCzt&u֕[oUަ ;-_ZjI'>ی{2jwUA6rw7$w4YBJzuZjrqɓ=z٣<쳲G6o(/\!f=u# ߍKO__>t ߈ "ǝ:v^&ٸ~y={-6a,^-kWM] 6rBxݲ5k֐F5IECo+z6/zݶ;qvņj?_ˮKKժUuu˥[]=Co/V\ dű%SN3ޤ?ˣMԩc^|Vz^vH߮d g3tM>P[YABϪckҬY3Y`ئnlr 3y/ ӽ[BWvm7zлfc:u(M4O|xU.^NkNr-g~kiԨ%>SW.G Bz=B#\-֮3"/#Gz#=`SEzCOuGz =BdmZFG Ȉ0‹%~v\(/^(~+ɢsdٰBk[-zBo9q"#xIBGd\BzKy!=#Gz#=@z=+Bgb޸co0#ŠmH˖:֮Y-UT!WBZj2uBN:2y[CO=@GݶlR|B`<^Ǯ['^nQɓtEGK*tއ| [^1͚i 5Kݤnݺr-vwpm4l@_﷖S]k U~>4s-YP9[aҶmBVegg5"Л9c=^zbY(fL&|}6K>_COaCe˯ȯl,6}mi;Wy:& h*?%ׯǼ9 =@Vޒw~[%v~g݆z61nnA|WZv,ק@&4i"}Gn˅ުz&YRfMw:uv~p˫̜1]vm:tm\oUiX9T~ٸ[_ڼC$ r^h7O4jP._(TtM2~OzWktTM"jժ[Ԗ9z˗^5OPAپ7Bz%`m=$ 4V0Vj|uwOl =o۱}{uk1z 63wtءP}ekol'WR-êKW3:.Wz.}(7)w'dg6hP_> {}p;u3K/(u7mzL6]-=@z0@9dfzp[ψTBGB#Gz u\26[#^dDpء:=BHco,?GΛ ;!@@z#=@=@@z#=@=@@z#=@=@`]%z`=@=@zbBzKyz @B =BzGB#Bz Gz#=Bz=z=B@z#=@=@z =BGB @B#Gz =Bz Bz=B#G蕷| =~* =B#Gz=z#aB =@z @B =n#=Bz=z=B& =BGB @B =B#Gz=z#aB =@z @B =n#=Bz=z=B& =BGB=Bz Bz B/1#+JMI"=@=@@z#=@=@@z#=@=@@zKIN$=@=Ph\Bz &=@=@z =BGB @B#Gz =Bz Bz=B#Gz=z#=@z=B=@GB =@z @B =BzGB#Bz/zsE7'Gz =Bz Bz=B#Gz=z#=@zvX$z%23ҹa;#iɲ{.WN"JVfc˞t1X/ZQ8@l5/&*\֮%[tT,["F쥦$}ꕙq:RrR$&ġJJT %.6ƵE%e<A!mIU[OobU+% ʲEިV.[$+]!kVڰvlZ~nA(BBz;UCŋc@G^VFdJzj l*Y،yk/s휹Ζ#x(U-HCia̟G^fZ" Α)n`n2l $/y({epb2eKJJRbJ뼵v\-R* Sm6Re)K.<(k^ys1S/\ȜArFL,zj<[6YYdqA U뜵v\'c͘I̓~(%4صv\ ==z;'M/^w1<*X{2Λkz|zݧc\BBy\;/Lu ŋQJh}$--؍Lj # 4'J襊i 9w>PՑ7<[ϳ-7(s;`yW;u](kZ3<#=x{{KTTDGG<{fU:s|'Og}VɪU$..Nl"w}: ^z333Sou8G qwyƍΝ; =;Æ Aq XTCo̘1rwHBBBϜ9#-Zݻ_5T$˴mV˅ zxEJm С.k]W͚5[nuԑN:ɉ'xy$z\{7m$͛7O>+.SҺYEoVڴiS?ުX^kk^k׮ҨQ#iӦg9VZҳgO}$믖U@-KjK~[*.c3+Pz'ݽ6l z®}: %zNtJ]K套^ }z˖-s׼cǎɁ1OȵK.=̡`ibFm9M6={v=:##C׼%88X>|@} 9w[|AתǼ_|Qn*ɅB4 g%n='ŝ>scBs\g̣]C/?8-[~+BC˩E}6+W .vZ@N}:~c. =ޣGsokZC(__M[W^}U6]wX?fff눹NNN?{ZZ_c~;tPs UV\7pQW\Oi#1;~ᏻ1Kqedy9|8r#uڒ%Zjlrɵowړ'JM澽{J3zo߮\^G͵BZYx~8Yؾ\r9x;@A9̽{BJέX>VYܖ1sD= =G?Q_Bq=㗎1-pz9W>[S^.߿YvQQ_;dYs^VoSO=%,>+WXW$fL^ku̙%)I߿.hvxLw'zX{Ą+{GdYŭ{O\{5*oLt8m2uٰ~le5k BuE4篿B/#-E.Z(BDW(_0o$:z뼵v\ʔE[$849+Qˁaietٽ+HIDATxxSۇEEdV"{㟽e(KRZJ B*{1E]}p%!i6ݿuݐ37Բy&7rss  RJtIٳgI&ef>vOҽ{e칹 N(\tm򸨏>~rRRR^8)Ex=z y>\ETJAժUQF4_)!>.[˻t}ߵ+թS4h@ׯ~W(D'P,zvvvk.:t{ĉܹۧ˖-L7oޤy} ʢcz>*q>ɤ$wg>)Sуj׮M]v%??6mڼ6=Q35j$ @=MdыgҜ9s߫Wm_~IG%''' ?FA/P&M(##C<_<(O 68σW:YVXA ,5ZQ]~]?S)իW3IH]nݚ֬Y# C>yxV|rp8"yxx{zz,OrCס<=?n۶- 2DNKK_ȑY.em1Q^Fz${($OB'b,U{VתZGGG!G˓סkCס>w߾}넄zU=ןr/jJPDY4W*fΜ)9)00U c5P^{ǎȑ#Ϗڵk:gn'9;;Q@5Q/^<0: ѻD2 Wi3 _^(Y[[SիWOq#㬖|c`tTBR@PE/-5! z==="%za!xl[tQ_XRhHPB|,%Hޡ8hE12ѷL-A4soAs6ws3B7yC͈pa!r=P FJA2Wd.SU+2~_W}\cz CAA1FdfҍWq#L?sv<",1!A.z1w(TsgN'z{= 8'EHwJ?cyDDB!z܃@=CDEQˀAуAуAу@ z(wS$E袷ʂZjIʕʔOק&'7-zo9:IfLFK~AgNrwn:t; vdחݐy+@lOnn PE*U9w,UA:6{*| <_A؞@^zzQD]i/?F/"<ƍKUT?KW$EKfOwߥڵjѾǂ6jH211/G{"/Wp=ʗ/OBG+V~jԨAf[6DdK^7a8曯%:Bg]N6}PߌǍC6s.gAV ck֬) $=t,:u™Μ>7k:|LddY+lw32B>N:+UءQ2e(vmR $٭(Jn#;W_~Ir{4xԴiS*[6mZ x^z5kzşWeŊ8qʺXC99ΞM͘A;wys〷%#=/^$x;{P%b8i/^۞lpaPhE{g}JK,Xw^ʢᦵ6;|\ cѻpEDM|Xbǣ 蹻}zV s.1eH^z5βp7iDøϐnݺôViWo*-NѓX|RX^RB$Yח.#+@~ͽzu$zEIeK]ț=REo=ZEw%$8ӨS咲?o(z-Ŷ_׺n}ރ:\ȥ~CvEb/z,qݺOT Ξ5N8'_o/QEۯo]]З_~AG?Oc:wD5"+KsI"۵s{!z?n+[.Y$J u9#]#zNbؠATU3OaȈ%cnj(W)w z4l@sۜmg>؋.֭]h_Ӕɿ aEjTzu.}WE˃~6Lu֡.]:g)zSwѢ.0?Ub'$zkۦ@޽te9ٱ};mXNcRѣG U.*m% "XO<)[.fZbhۦ,I&fΤGzZRLϝ*DTCvE~-z܉N,\JYjUjݺUEOעE :qYeWreڴirĒGQǎU$:H=huz*Q26'ۢk>+?VО%'%B z='s z=P8D1D01'у1DD@I'DER\N: APD/<,m)$8PD"$zlm=ؿG 0=9;oEZ@ z(j2#D=Dv/D@搽x( zjGB e֭fwQJtEF4yyr&M:h˻rٟx wr:N}ԣG{Bؘ;bC o?¸ ֍'Gu]*̟IQk2 zL~u5i҄vlN/k۷{!ԴilMg9=-U:Nn=}Z=!>|ocT6zd&ľ(^vk?D+t  z!x9/e۷mS,ibbB%Kfog~׵Yo}?}֣Iʕ+Gސ>CҥʷrC>KM7BF۵e7NuMNQ5T޻>UڿYmGa=f%׬>ܾzuIM׹HSL5kϗޫ<18::n 5Ϙ~D^̝h1b81|ٲ.V\ݲe rtQ|ڷDAŢZ#\'qz 6:v({:u!C̳fj\堼 +i&L //OZt|ml"7K .KR\)agz~ֵMǥyEo,=>NϛGa!tu͌g}tޢg6zLV@~7߈tVǺǡ>5$/Gcyq]xu[hA.gH7K 9t/]Ǿ㦠]uA M[hm֭[o-U4oJ|s ߶YnUzxbu}ׯ놬|2+/[ۻbt]  O}=8곟[Fjw9 Y#z\R1r!Zo;#nǡ>$/G9⺤xu%'%aa'G/]Ǿ>p3ֵXmEw M,ͩN{QU3?}Go)gܐugIaU^|aK4llYf*qIvQgi>%z\ OogcnjURDi> oc յSdi}o|>eˋ뒮M׹%q,?r*zYG/]Ǿs]uy]/hӘѣdzX?G BՅR.90d:]'>7IzKk{C/wߥ];wghtӶ:Y.>i~*+.֥i:}MZ1E4ph!W]p; jC./zV5sʴ'CQEOgk=Dk忹M!%ml59}h?>gGrp5H׺ $:yRq%zoVۘ۳JHW95nܘO|s9ٯY}&ggc\ =⺤\G}NGrey<18tgA_D/]hLV͚ 4mmؾeK?腇رcDׯoI|rǎM /Dˉep$~`CvBXXF LL*g={ta+p7o\q}{L3ctQdZ}:}.ߘP>*W,n2kP9=B{mō?^]eZ]mԧz]gk=ʰ`t|alժ%խ[W|nY2|Ss\mŽ <;{x|ZP{߮m>c6fGdxyr wݺuSTz_Lt(q=2ˋ>ǛsŃ4q{9.rUnV牡Ǒϱ? 5Xb'z))F={„dg{<]|ծ][gqc雯&'U4p7jH211\NӻݍڷkGʕ?nNJ ?E夳/^=86gg' NԩSez֡}{1b=,]8N=ޞQXh]zΝuI 腇$ B z_< Ԍ4r,yܮ;.3iXO>F!D'#P@D 9?ſ CnVrRF }jVFf͚^`}D/z3FNp@~QSǂWD rws(zI 8]1tPK.ڹSqYe?%׭ˊ/ѳC>6z /5S'O<#UJz)t\gincF|\CnSrx9f*z˗;vmXN:% ؾJ.-~^ǙΞ-}$RGB&z,g\MZZU]۶Q M'N?J*E 4>{,cƌ{iXʖ-K+V1G+.zE[na]t6l@vq,D U{!z=Ecy!D(z6 DDDP|D]B z={<=M_d)z{Q˖-Ujْz=gtRZޙS=@rE%K#zu$z,eo&9:VT:>$d;耪[;v>DO[-x슞˙Sb?豀eH z(~p(EDt쨃AU豈2KyYD/һW/jgdk(ᳲ4*z^no%De{6znEуL JC &*]4;Z&7ʔ)CժU%B|ܩoTB\ a$=@[=@ z=tsrtDDEMNw$/DOMM C^rD %%YfD,=%>A@A;1xШE6t3nod7i$C^t>}у聂@t  9{-LqED\A$'9{9fh|s9, wєիc' tȢB(= H~C6xĞC6v#+!=At'* .hFfKy#zΎGDnQ'z)z!=AL>dB6vHclټ=[=D@ 2&z`R}y&{]F-K=ywNm۶GRTTEGGx]D/<<\+))Ie,NNN*WZE'O6mǂf Rҝt EzRBqJ9=Sj&7f D[Ο;+I{)Բe rtQס}{1bpJ(Aa{.]s^mrŢu[%4C Qg%%%&"9}Wt=(BCMgϖ\TNt ^WߴiaÆ JGݻw-ϧPڶm.eEKdbћ2eb]'O@Q̢%ŲK.տ,mڴ^nݺb=ÇOzxx4h yԯ_~ ~SOYm K"6ǻ$zۥK 4/QԵҒM3fԙt/zE_pJ,s7Z@ z:ESTbWD)SFHcۑbz.[bx>QDŽ>^dz7G1[ :MxQҥ(=-5[[m\*?k,SkuAC^ƽ{߷nFի4MS'VOӶG}}Wc))/͛G |p1c\e>.Qcm`,4jbmRfM!Vj=mgQv}!Hɿ/PՖ|#e&Ӆ=#g"Ӌ4 у'zYiZ U靫<֭fX ^zҥKW]BaU\JBC4%{v)ڿ)*%ն> R!ŋ!zR܏7u.H!Hُ#Qf={|=M%6Zr[=~}8DOU]?^\H2r)7wr:.J|a 8Ply^-_<ܱCExY9BEպ\ 7}4שM򣍞6vp]v W؈q&M$Un̙e|b^ejWr(]|YkY\s*z\e՜\j^=oy8wSϸqģjTk[~Wܹtxy^y!ΐeK#-,, zRUR#JЃ5t?z%iSgIi#zGK+,Ţ.}!zz>0K>n(m۴S<&N4M8Q3اwoi:˲0h^ݺuS #zV\VJubBr瘚}SG[m'ͦMX ,WӧOռ, sU7F</%u+(')_|!]?d{ڲs68;;e VW!3Ih„ z?eu)Z;z;QRX{J٘?VDO[4~>rԻw/pU!;[j[4у]fnr 1!#b䶆=)y8oNd$}1GRR D];-zcFf͚r>H-=bYw]9nfЖ<];mώE/,~,TB zHn]qu-wBڿ "DA}A=_7ns.Z&ޙS4h\oߎ =$OC$EP=c @v 1X1wy<]!z xGQ,+WVX.J6z;uma,3th'yshn+!˖.㉞t͉#pBAr㞑4m؉_' QE˃~6UJ.խ[t6[ A,YxF-Qu ?gZd#NP6E #.*%҅xT8s9)8'ECh( Mӥoa\+ +Đyh M͎4obmN^sD1KDSG@*ɓa99:PrR"D{މwH!z=ѓDDD@>I'Dd d>o@OrA\N: AᒗG^i3k͚1w=%~^xX9RHp;Dh)F˖,җJNJ*4$%&R"MB|<'D,P#tK@NΖ!#t`ٷ ^&^R.'A%,,,vaTsv<"JPu=`|Np{lL P HO۶l6Z@ z +AAr*zfl3qǏ z=CA]KF,z 暢A+QgvA32^-̑99ַv/Dr zo e$:#Eڏcf[nݼ豌dgU={F[l={RڵQFԻwo{ $'pcE|JwV-+J )$ (O14ފ/zy"zf\(}V/c={ʔBBӘѣ^zK4\/QP`15ҥKcF}yC?oеWY8ٳEWQP5]:YZ6---ˋ?խ[>}*?~<>|XM&MC A RYE]kM!-y47c&=OIwQ/ Ĉ͒=(z˥{J=4Gۿ?I|a=#TDl2vDZi=.u9rTuMtx+Qt|駔"͓y—3f Ru%%HcEt!zcLjH=?zpr93BrQܲ#zllYfTBEɫ|M|=JRRjU޽9SEo;^芩K.uuu͛>.}6 4\]{' %Gq?R^JSjD%ѫU<"ziFXĆ ,چUT~4|/$ 31L'_o,Et>\^&DV~Ү;c#^L.z]n?6NWj5kPuqi[`tnV y}?EA nbQB.ץ3i7Qz L\`D~ԦuWCmڴ޽z)DoԪeKpjՒzꙥqȤ_&ҙ'qGi=^ncF|\,%%&LXԜY3g,|smXN:%ؾJ.MIE6޶]vVEDDx&N3|xp[Ν6A*U߄ $/61%u#(9=OJ7ϔȽtꄳq1KX1GEխa1%Mq{ C?ctz?b< WeRŊEǎ(/;]uM.]|wadw`uMd۴ix6w&ߟΝ;2mܸ脡gggq*! RyG]]}K7kR|@gLneC9FcG ^ ɢǏJaι(cE8mw3 8@ToߎO^hHr <ϞPʝt IM{=F()=ls8T`Dō{*+WB(ޤ_~"׾][赖ı\ٖͨ=A@e֌ECh  =! E>kIsf099:gA z@ѓΕ?o%7W\AFxm޸Nqjڸ~ 'nH;n_;oϟ@ z o_j Ou$@D%' z=Is9, @ >j{5͜zO7>}gSiLs(1h90ۜH 55asGsiK@ zSћmu}ci(ZK$xBYNU2*tdM!u Yc |,x<~Ǐd>zG_xvP!@/yp_12>ti,d's8f=%ḬÞBJ&{\MKdS+{K^ɝI#G<|)y_,w^IC>.jsU zE[˝6_S VEzN3'D'RÍ-YH})1! Iqʼn;ܹC^'Ю' z=scŷ˾>A$G %];9Up; 5 $ mf =UT=|=n_E S3cbFw z=CA у聂"z 暢A+QgvA32^-A@a۷ A2anj ؑ"GҎe!z=CA {ɼO?P!4Hm֙7UdڰvDW89doGҷ쎇! 5އӒ&tf*E؏2ņLNInm-[x 33f8W8/.{&MЬYTHe5OwرcO?׭[G-Fї_~I*נAرÇSZZb]ƍ'|BZg*իW̙#sul۶mK1I!p|-9U~o,+VPgʕԬY3Ŵ%KNJ9M6O?~xխ[/_.;?API޿O(8[~W(;BSIQRc6iKO2͘1ZKSOOO 7/YxM6꜅ 'N|}heTT)Jn,z}*Doʔ)u>N IsQ,zr-pMT7_eѻvCH׫6Z4׃޽4Qrm.m#GA(hU;Q?I.*M WϢ~@M۫kg稯=y>c$N<.<<\1_0e)Q=]Ȣ'CyߺuKc9orҢiۂkG};^8qBܹ=m|sI\[~}!qr_xZĜ;wNi56җDNRR(;c|~?AF}񀢮)3q H.Da?\r{DoF[+W1ʢUk4^rrq#\5z^*zaZY&z3VJݻw#3g EGݦ 6fjˎi[NnWxmgQ[BET(,sI0.Y$ $ ː$z\⨼SNQ=DzurdҶ],\IMMXJ5-YSSgNRBO HѨԅCУ)vWy)5U*zܗaDoF41<<,Lcg%Q{^BXdѻO.kQDIYtrI>=Sׯ[+s@smL]];wGJ.i]wVb+Q>ִk$#}V+UDONb.IR/ⶊ%B'U"""VZdoo/Y9o05oޜ<<<:Iշ9p1Bu$^xQK :tyܦ Wi\zͅE]K/gnA0ӧ}t)[?v,ۢwJP&i6z\zK:Q'sY3g^ttzmz%V;9F,1G+vS-َEqrRb=]6i]&}c-?eAѩ'>ixmW6zj:u7v.1Sn5i$K6^3'?';;;YjR:`E ˗0q[~͚5 3337l K+Wr5.Okii)w%s3nܔ=n8޽I.cǵc9܆_]Vi5!RUR#JЃ5t?z%iSgɵir`$B˥oۍeWdjJJvY̟Geʔnݺ ǤpgYbE#=n!aYaыs&N(6s>{+v(gve 6.hUr\I[eɏxjjժvuڶ5hs':۟UVrV3e&Dj ^2X!| 4[(c }.;+lRUZƢ\- H\GPʝt IM{=F()=lA@a-7P`~A..A7n*r* @W HpJ9]:Ud>y=9 уDp5+?q54w1TU~{rY E,1 H;Do#dyD z"3Y/Ay~v^׮])%%H?A Of͘Z|DOoBDAA z o͙5݇XsVps AQnA zr7=hEU~nq?jEqtjؘb ?%ׯ wʱMYуc"։"wn_QX}O,\0V.[ VӦk@>u&ڱmKd^¾뾣5;Nf=0|%O,(]%yy`:?F[O܆APKs*{3ÂzO7>}gSiLs(1h90ۜH 55asGsiYlB!s[grWewiU#ziY\}qɛz=nc7a8Z*/! ߟ%bɛ1}uMEشZleҧ֧rRvm8i-]4 a}'RZhn+豌<'^OFS-/kTF zwV͚diB$qdbRYeYXo>}\2 CA}h9-iBIgRhI*Sl4~M.?5+cY&˔@~ 9?Fϟ֭[y{SR`ɢ׶Mڰ~B.;+KXQ5׾=i4h4YFA#+KsiZE_1, 'INQ͚(Dʂ=BfWaOiҝt EzRBqJ9=Sj&b=J 4`E}=}՗d{|=YڷwJ[BQh,zG$b^~-Wk=mM\N۲%z^-fdaE v1D/:؞۷nذԱcG1=өS'2dBx^˴`|O&'-]D/ĐqqRbvCU/qp1 cҥ1&;ed!w!ׅ|r{J"Xo矻v)J.Ԭ^xh(l xFQZS|HKz6͘ISgҽ]}ŋ")1b$s5r鞒LF7ڋ/qIOEoQnS=<^UgnŊAEZj\_&+ҧ4r)UvD{(IRX}*תe Q%^mڸ.OneS#uR&ӛo_{Uo]Pa * .(+Ru_EAEE4YzF@j( {$? )3ɤL|?̽w93gι+do4_3M/Ⰹ^uZϢ"ڲsv#hil[Ԕ%}>wk{ܾ}{4lZ5n=B!s2%@+I n+Y =$'S1=_%ԧd(Oxs-B-AԃFK\^UW]Untr{U/0&dy-{:-((<^h4ot,`|yVomu7j7!hwm_IxJNǾ.;њ[RC^#z7)zgf=={:K}4iҤJ^}{= *xjEO/mHO{vӦYߥ8i v>f*##zRsii$/b_3IcH $]$+{剞'|P=⊍QIzOT)4]ӦN5 f.;s+Us|[e͝K.޽?16Ɉߧ˫:"zçm#*y.!zBBJj3_7Ɍ~H^^NFv%;jh܅"Eog}йn*SgwO\EObcfH tv 4=OZ #D6.eKUӫcW\;ϻg[n1\eH>yzޥ^lѸQ#DOE mׄBJ:kIMȴ=.a>M$P{Ɋ_j0ECEO׸u[W^/\}{ujvj9Bp.ZRFK,Y|I%35 QOHjXDѫ7o;ؕL8~ !b˹3Aے`DO܋!z5WȣFt)sG!8!zU[ӱ’ca!~}z9_{"z zBmZG!r#q[B!G聝g+3L۽!)A2~(xEo"Y|,?W͛Nѫ>_3;#:s 钚 ؘ0]z,9z䈜;wֹvrF--z8OeZ;L34!B%1t2ϡ;jT&'HMd%9%w=suB=(K )):|@ARRK^EOϜ9!zPA;w/&Ty,+G;}_L[xD/z'2=D\@ z ze Ml}Nǒ'=D%&Ċ3ا 3XCX#zT[$Ce>/I.CbB$8~o&.6 %޻v[;l-K=*z["]vY.^{4o\]mY,v*D*8k__avrB!eJ``̚>%%D%Pk=]۶r뭷.xE^Hp&{Eor=۷!zP!>MzCjB!,ǻoIN鴮u:麅==B !orͿl2TTj׮-ԯ__Bnu]_&MnZv#yƍ=L<钮[]]:mj*&2g\7 DBHov:ݢ'G>׿>e$^~^ ={ȢM7 Zq-zEOn2YqZҋ86o)w}0wYRC7tB+7ƕlkRNmW^~وR^Sy+b %?-/aSu.ìC%OeN:xܮU+~Ba;~ڋBH >OM6m+Kߔo׭[|i^qëF֭]cEVZaymlDBH|Io7 X z5|$''ɘߖXҢWFTGNG!lx~$n%!K[wx[&#=]F办TǏ#}l9"zJ/ 7`dO.%zZkײ._eJ^ޢ(KF$,,̮`޽Kye۶mԎ‰>Y2~IȒ7$ѿA ;on&Y`âWݾkҰ4__|j+zi8<.Jkw}KDoܹҥKYrݢwiڴ̜9SBCCeԩr-75%!`T؂wI䁇%p{}9B6k!F.VztnZ{6lhKlL]eeD/Grrrn|'7,jLBqg%> [ =%'@Hj؇zIW}0狞P#EOke3jA tY={~l#:wyg"TX^i-^!8`%_w:|&(([k\bYg)|ٶ{ϗ(z:t0+K~|x㍦WﹽgUիdŶɝN:ݻ= !uג$ԧiՋ{\|Hܡ`ߋ\¯qD\US # %%j}%̷|Z2c^$1Fx۴~/DEo1f(B!Ėsg$!%{M-E/(ZC6.DE#E&z<ɪKehpG!؛~}z9_֮ZnZ躥E=B!L<̕S2=D=B!~}/zxiDGEWfL$;{QCB)SeQrEDуSgvaf_cYg### ؘ+k4:LK9"ΝuvLs cF&w=U?d@$T9T"cGqJbq2uɴ)̱$';âd##C}iS;!%EO(CJj+=D6!z!zT[ԣL׿?ˊd)"zk׬2szV._@@K!U+I:dAPk~E =`2ɺWD!z,9y ^ޮۭn6]+y &@ V= "zi.zڲ;oM ةؿ/Wj׮-ԯ__:#x~^/7v5\#7pH7^?[_u{Kg[ꫯoo"sf;K4/ӟVk#z-R{vꋡonkD!1!AD7qqknw];-Ўv-TUޢ{c=&W͛6ʓO.DO7dgZm[sE6}:OGk]_5">-ڒݗ֛dduI&7~hX@z6MףT[Ug}E-!)2kTs =햭S$%O*MϚiZަuDmc>^gəvz5ޚU+sn-/Ю[n]3EsO^5F mrRB!eI||L8zr=?0=%)6A+IT2uM&#ԫW/Z_MBHYE}XD/A[E/"/ƨH[e竮ʜߧ*nEoO zB*Z~s=s3ʢ *us|_)7\#zfN7C¼N|Wn]a!zP t]BJ1q,ZDOυ{7QF‡SWp*oxKZsK/u rE/jՒ)DJǨ!dضMv]=n!zBH:)&_A!&o$3[DDB+g0IKBvF ʷLFzDs IJL@\H"#K dܸ@:PJ3g=#'OΝvС{f'Nvx@͛﹑ҬY3ٳg5#!xven Ixofį`M֭YeI^b-zg͔uZo^޷D 8󡗈O#ifs]ZQD| MJiڴ,]$wvI/sm9M+ۋ|;v}2{lΖg}VzYhEpq;dƍ#Ȗ-[ !ĕ[.w$n:4\PX#aJ%5z\͗=,D\1lP+K.իjxmjL[u{#wE e6;|H`]- w#FtksoZ/zAE*}*pE..r|GԐɹ&[K+ND.fԾr"rD Io\vuLGԻ"zjRozFzԩSH^pòKL ^afAKhs腆.#G4ݹ=믗,jԒ⢹)ZIRp[J!9齍蝊a*>-%'D?}tzODՇW)LmŋIMmm=}7j7^NNtQ/ڵ+Wʆ /K;^X.`B! O%x?ZzKjȋyD"E,xt۴~/Dz^bB|ݳܡdiFRR 3f?n.V,9y9#ꕘ$HK#yINzCZX'I"Y+O=asB);>'>xz1-|*w+dmek=skq^ɢXXxv2۴icZ,YbZ=B^ n(X$3e#y1~K_{9M^%r! A2EjRY<,7De^tT|D:{>ҧOosEܣ{w3M$P{Ɋ_j0ECEO8U֮ZnZhP: # %%j}%̷|Z2c^$1FxX0WND=(M?F:H G!$7IBXoKZw=%+soŋv19sCBqB" DDBH5M>/z ~@=@!TG[xDDBHDدO> CAѳS&^PBʔ@?v C $>_3;#u @>22%55 11WDht.==rDΝ;!zPU8}*1d˜Q]ϯpU4*?_}Q#d4qL[8ԪU˴u PATћ4q@Z׮/ 7`Z4i"fLڵk{#ח뮽Ю۽}Kz^zz=]vͪz 3&z?z,?.]w(]tFz^JJSE/0Ӧֺ Ȭ޴SdGS!<3ٺBE_/;`>`2T`z c|[\D/4=mҰ,Z8?]uU2zw5$8!S ɴi˜iْ"Ev1+ownjZ%)1eHLHM|\ƚ۝A~{s #~ =0.]䞻o[^[n բMoDO>k۹ˠةS9zzݷZsf[ov'z s%y3ZF=Y ۷ۗ[>B)Sd..#z 3bգGK}믗W_}En&Do.sA^{7+t=޹]~qFUl'^f~fMeUFt݂>MzCjB!,ǻq 4D_MBHYE}X7DDBH5ߜ+zVHRbA)Do%bW"o+gЊukVY!zPJ;~ڋBH >OM6m+KߔoE=@!zgYvůʠW]qʷLrr-:ټy !5:>ˆH^%}7JLWe2ewͽw_"n>WDDo̙r=ɓs]pA:t ىӭy{ndd4kLSla6lKo3F-O>Y2~IȒ7$ѿABE/xUamn;w]w?nG}q+}KD'oooiٲe˃>()))Ӗ/_n*99<֝_AXyػ g,B!55ZpKrܫlBVx Rase+8]omմiSeZqg k۟=;vH֭㠠 dT<^fhB233K@݆3Rm!zP ٵ[C<$+$MHJ*N6_k ѫL4ɴ֛ft3}eK,uyk׮N]V_7eْ->ٳЊrwƍG-[Uس ,ͲQFɰa7-rNٖܹsf**x6=BHjɻxVߑP߻%p ߳_B}$>`}(A;q7_s6.DEo_/ZP{mÇdRvܮݢӫWOsam[2kFu{#wMK7T$"qww[nE>RU*EmCKEkΜ9r1ݪk8z<̬2oK_H۶me׮]-^^^!F%BDl-q$;WSʉ[B$!d%sم1g=Uehp%z?o 4(tӧS+j=iRN#y-}*Hjgu=BHMHwCI }&/ɋ{Xnd] -P l"z^/rilPSf,=پ}uztn{Ŭοk*:-:*R>3VZr ?U%ŋSN2dȐi:Ϧݜ(ٻ g#G[h~ yҥK3\ G:kIMȴ=.a>M$P{Ɋ_j0ECEO7)Aj9Bp.ZRFK,Y|I%35 QOHjXDWC!ܙ Im^SKn0deE=p%sG!8!zG!_^!DC#с!zPeD/.FfL$;{QCB)SeQfX+Dу*@Jr._9kK֙3HT|HLttFc#GܹUӧ2O&e WE_A:SP9BƎ.˜4qL.FbcF!z,9y=D%&Ċ3ا 3XCX#zT[$Ceݒ/I.CbB$8~o&.6 %޻v[;-=*Ř_avrB!eJ``̚>%C UhސB)KdAy_MBHYE}X7Do!=D t]BJ1q,!z w<!b}|lVB)S߮!zBq:)&_A!&o$3[Dѫ$'%/"x6ol}gN 1,,LΟ?W{L iР9Eo̙r=ɓs]pA:t ىJFسt2zd޼y)͚5={Wst,GWB*9G;KF2c7 Y$S<73W0WEca-fΐKqe/Ѽcaz iUu󡗈Ow5v%2W]oYV'uÆ 3¡Qddk?~\ӂٲeKvD >vd!!!w9`}lQرWPJnݺ]v#-nݖڻBH9]<+Huh/>FR>KjBE/!z^ɢe/Fpl-Z(۽CFj׮۵[zz)Z=!^۶e֦uyפݴ*bn7r"#RP1GɁdA'޻/ZjoZ%zAU222.]zz @ttj+Ūsus̑cǎ}]穜eeezy.r|GUŭs #GZ6t=6?"TC![ySmi_S*SN-LK9h&Y?Ym#TNr.IJ>}%;.%;HB[2]}mS=DDys1Dq]*}E'#=MԩcDIWM[z=z^޽k?bmG$zyEGE/k// o 믿yJӤI#tMނN]J>/6F/]n]/9LWنm=7|S}O -Gg… 套^2dxzz:mݾFR@BHbNDh%Im%+6w*>_/C=DO?맞jxEҼysgIRa ;FQGG+v!v!?-[*2:^º_mK"zF|S镖ؿsʕ+e%ڭ5"qYD&(%uw: GZKWm w}sLU7H3֭g)sHKH%vFut~y%53M/tsܻ^ϦMڵkk~C.;{,WkwUEOvԩ 2$w]nȝ-5z~JRCc$ػ^GE4(9^umSlk̘1U?c<fӦMe.+=S]Bd$& idZb0&wdſ/{n5"סUU{&,SBH υsђ5Z>`ILb>-1IЎzFR"zM?tWB!;$ a-kjI F̽$z!'D/@=@!T C#!z zB\":.~}=DȌ)dv/j(B!eJpP; !zPHIN]/Tsy:s fiHLttFc#GܹUӧ2O&e WE_A:SP5Bƍ*Ik$ӦL2ǒ;ҦvBJP=Ԓ!zPA=@D=@D@=DD=@D=@=VjƆ%#=/& z!z z!z|1C=D=DD=@D !z!z z z_L@=DDCD=@Cb z z z=DCC=@D=@=!z zD@=@=D=@!z z$zQՑhDD=@D=@=DDCD=@D=DCC=@D=@D@=D!z zT-@uE z z z!z!z z z!z!z z z!z!z z z!z!z z z!z!z z z!z!z z=@#7n@C=D=DD=@DCC=D=DD=@DCC F%%&*q1DEo9A^a~2'piӠHOK1ynJD K KbLzMFILtDEC$:J9vqLB l,! 0p!`"48ѫ*n*Ī5 K/eOK'Yz%P~^Z6_ b:y] z ze]; S C- zPޢ(qq 'I |a{++SSR$xhZ4K'sȾ=ǁ 솺^ʺbZd_` s6JQ?”/(DٳKR}2{4  lNΟ?/a!A2{4-ID{++'KRN]+qe}AMi9G$]c/ Ilt$1(ފ{)+k8"GAxǗ]]e$K-cD{++3~Ρ@Lb[Y:I-)A =ފ{)+k@5FlREŋPJ={)+뼢GmSy$97}vc.ѣV7~%e]Dodws@ʼnuoʼne]q7`*@YW=ѻp@)`y8$zԽ_RW6;weVTѫJd#zUF$ͬ 'zrW^ʺs)S&Upest3G^EԽ3СC+^JW^e%_}lRjժ% 4'xB6o\Ǥ\OWWeffʐ!C;Zn6%>>F&-BCCoqUыYӧs̉-=w}zj [3<#~D8))|T痜vC+sֺ7nl㦛n]v!zNAP?qs&ˏ@U{{{ӺT;=UVvmIIIɝfs̩tsfY'&&Pr˖-ݻw.}|9cǎ֦+z{'Kbbb\i)zV ]{L j%okM[n%_WYT͔yFzZ,XNumYQ*&zA%z}-oJ|q[=Ccgz2W>9mYi)Ol_<{u<=erkĴS=G1w->>޽?)$̩=pLʡ2-Q̻{ٳ7K_X]r7̺Z4Chqj64]~ްA6Ɉڵ|XW4r%,4|e9FVDY^ 9$9)QyyLyhgק2.?oe?S*ەHIW;Wי澽{!|99V 6>5oC/&'ɴ)/Q1[ʣLyfI =w~Aޕ^gYkYhmZEdVt=}u5W5=<:XD;m!}kPcdEu^ѫcoaJ߾5W+k'.Y`+ qҼysСyOSFtjx}k=kg7;-zeTz e]uou:U&MOPfe 1)ٹ 4dʘ iJvrb^U{K7K[Ν;ǜUtL)ks6JRJ:eV+z )Ihgol;=pPB[RYz֭eĈoD[sI-z" IWYH,KJrS+ݾ>&"zUr[RYz50_|3KU{q)moU6_\KvԔd("zQKYW\Y=ʫlE/4kCAqѣ-ﺗʫ8]BN#!!^O@!ѣ-p8eVN>cWv?'^b|,YH0?BA"G쀺^ʺ?No݇(2pz?좗 {o[8Y`B˕P w;xfDq<(kvw>lue#QNHq -_CaPA<JpDbEOIJ>P9~g0M2~fbo_P8GNhb0 GuoսuŔʉD7ngjvj$y z@u=~?%nAVIENDB`geany-1.23.1+dfsg/doc/images/find_in_files_dialog.png0000644000175000017500000006117312146146075022715 0ustar hyperairhyperairPNG  IHDRrysBIT|dtEXtSoftwaregnome-screenshot>b IDATx|ڇQ trT 6 y*z)UJAl X(B%$$J5@4 gv7 !߼gfevl=Μ>sLpG Sx":~@ ¹- <*))*(vBͥғǏSIq1ܸcGOWձݐf&+>s ۷nэ@A'rnޤRDfI *X~*"DI jB@U‚v5Tt"Wp]ZuF7.C^tg^{ǖ5D(@>+/Bn˴mۖ\{WLnx, *rׯ]y`5pH۷3+˳RdbǖQ/7:v*K `-cjQ~H=䓂aÆQRJL^^.Q޽E&NY{aiҤԩsԦM0K_ / sN4z(M(@Dΐkטy+?O:U42,q֩S'iĉDx?gg_M?8͝+-]Tdz>Kb=zPӦMi̙uVZ`yxx?]|lA}v-R2DG3%%%zK<גywo!:jZv e?<sP)}#ܶliIs]XX\XX :Љ\^nhkod$%ycst n޼)Zj%j8zزG֭Fk%KJ7`]z߾}ȑ(F'r9wdD_|L-SJt|6ګXc?:.]>9|X9?@ӊ+y, d_AJiڵGC8ȵlق4iBƍM|M[^ņҺuki }7cn,y'):gX7ߤ۷o `e_M`-cj}1XZNN6,]dV{ٿH2ג:v(딜$UrrmۻKbJ/MȣG&J%|wPNd]ͫ` nݼ#>fϦx ~.cxnϗ>pr!omAw`o e]DTE!1@@'rs.D.#]"ՈWNx z"wE 9D@D"\ r&ijJQ%RRbQRT*Ҩ r$qiI9k*T1vp8>^;>pr!rıčq3ySWtl,ZEE%??T ׇ|\e"}\R@o@ *]~)?\%}c,@  \aa!]vh5j:rO"3s,@ %ҵ:9g_f͚@ ʉ\hD$rŨs +EgCpP ^?@q;y"@ ťhF?7ze5/r9:C r@ Gэo%Rwy 㯤ҨESkӦM 4buF 6￟ZnMnn[tvٶnݺ7n,jRs(?cE9{wڵkG3)o;#FP&MQF"mq r@8db)iʌqS)#]:V.YׯSnNIo k5iBx>QnGr}{/r q4tGTV-jѢ͜S)Icٲ[t={u7Çܹ`:u =Bd13{6P:~׮]h/E]S97dj߾c0&_^zQ\lw4hRה)_YlVEy-D@ ʨU@O(6)JC gQl`$i"}(+n,ExR[ɜRE߷Q,R+ݻڪukCԩSGH\lLMgIb3%YTQv>"\QѣGDRhb'ON4]TZfIF@Y|Tbw*2nL)ΝSQYHoX90vKpK"  3b}N˓Nv&$;Vd.gҷӦ?.>l7u#izu͜dLΜ5k})9K *4RiavO~v!Qqf>BSFtoM7"w5u B7Kr-nӗ9MǰT1;wl}x:U2H6CxA-IʖPJrek-US9.,ӯToyD9[!r@T`psjr[| }IY1Drd]3+KWJ)Y+"rxzWW!p?|=5nܘ~eVe:w,5t,o۶y܏EKM<٢1}vG.1!n"|0`#'7saÆZԠD@  S.BTmfd);?tC3"'\NNbEnEoBxt'dp۲̀1cPŠ~k4qY~=1Rƒȱ\Wkǵ<8e/c1A 4bѢВ) C b#Tcʊ#߈S KD7)/i8eD+)dc}Xq9nI%%xEWeC F^$iM(6Kx[:M/%i!/%Abv; C 0.'A g)ОEFu|&2jDh7غ<66UGC5yvp9#Bi͊C%%%tm`EEEEkV.3(#]cܹ&|x8)"/&-J蝫9I5q 11;E[PZJrON$I\fV-y9Y}EkGOǎA*&Ǎُ 涅T &˝ps*E]DPkW?vh9qEN7o:t33iMř9`/+D$Z&]#~9g[nU{ds>F"E]w8\#"W\ sŋ rX4PF s.[rsWY9OwR$DO䊋!r$$$)r)I;`Oz?F!!E@<s6+*SݑESLڴ"\رK?~ҍ.]DmlV $g9"sN%Fke.''6u|}}ihΝ4W( Ay_&pD""'K\ӦMi4|1mAsNHK}WHݙE.O-G(kPٳw:(P|_ rijM"exEiUEL5Z̪LIώMCIJck%Scjܸ1ԦMڵkW9{"v E"w7ie>/mE~]͢tZ< [ɜREnOۼib?nu֕СoߞM"Ӵ>ݼ)S*+rݸq [ɓ'$9@ӧKkyaXXX卥99rENh3K]\t%w[;Z--c)LE/g-NKƿC!(4X7>JӤ8L i4jE"#0ԩ#$N^ݍ6l[e4lP!rխiEkf]. .w-2Ҝ YLͿ"2O,\!r,7& ۰M7$q#%#u|r (kXߌ,qEa"gkp5zG)6"f]ZwwwzES\!b4gB9Sںuk,3x/ci9iuE]ܜʏq]iBvnAFH^{{Q foӗ9k$ѨӜCO>]t\ysR5)1! 4|ZpYU\ҥcjpmx\^Ks&d36/2"lRӖMUJDn/DZX-yUH܊]7R4nZџ*b G*]R"c˒%wsδS:I۶6oٳBCiŢ*#r9e^Pܞ={M:E'jsM[=R{+Wx}1cPͅ<Կ7|CJ͚5]ves"φ1xr3M%խ[ׯOFf͚:?}tQӭc,͙E2.&7%4)p˗.D3qV))),жE8;%c ~J=ޞTRRl_WUwdTfܗ"r?t:x;W/)[ZT:DX9~\uG9%FD JE.1"sIf9nT,r9♸s"ۼadB;9r|)9{( |@f۸+YYM9ܜhGU'̌ ,rŋ r1P{jN CT[AJ#P"oDDšzh4"U'!]F[(",B}7oI -H ;`ML%:췟 !r-=$^)u><4jC*$U"Vy ")"4TglPSM;/&hbP*ryn1*1c+FD!6:/E$!rN@V-)ڴ~-ke.iRzrr]$묀nMbpwSV7  3b $D|wӎ~66"'{NU_/7LJ-^:䷯ aǏdI n(r \E\RH'vTScf E?Q 7*Tq r99DdSZMZuZQCAFCizWEI//.-(LxO;DIj%OQ%rHQHN}9#Bi͊C%%%tmRTTDq1Qfr:xJ"DǏ?ҴicN㵃 )';w&M%8\ "[(-% "WpM\#4k|4i5ɰӫ_JNJW~Ί3$3#m&UB ?͚D"r} $',E ] x*'rFek_ОnwVϞʹgyr%ǟ'PZZ""T"@ wU\:֎mD{SZq]"W \~aI;T䊊=C&OM}_.?a݆zݟ4>33'PF}%+6U5;u}8QFE [I7iς̊\A u8݃K&|96-?O3ʊUsi럴zor\ZWZ|6,DΠ?5휜lLj@QG}ty~e8hD:cc3f͚ኀ@ *3;S1Jy)DP^;~$d_& &L4, //hO*Gbcb(&:˗Q۶m饗^\FV,HA  Ν;W o-8@ J\r[iFmiO 3Bn\ks(Y.S%"zr**,4<~>~q,׳gR˼ktY~:cWdb)iʌqS)#]:V.YoTnNIo k5iBx>QnGr }{%rFO>H,r3,rθCM+r2fl93{$D>~8֭+?(a:#|f9KQ"KI W@&Vi?ؠ(9l%9Gu1JYPn3'sJ%N9~ߪ c5l9!&En+r{MaVfF:թSGHcVaÆ{wG+΋F<K; Ҹ\oEK顇{jZ6N)+ر#>(W,BWI};\DrPIMZAINQ̩(,۷K, %ŎkSH>I'{SZ|/ȍlmgdh+^zW a ?s:j֬IY3%,4Tiiq׺9nޭQx94)rj)rܗ@ [|RttC;nf)Djh?؅nZܖ5"/snJ%aOP"rkW4I"7P'r]zbb(**$}XO>0휊lٲ6obKlϝ 6/O I_=SF>݈ZS"5voes6*rJײeKQZ3}{=\aSpsjr[| }IY1DrJIMM5pq叒Gq?5ޮC|AR"rz-M_~5O v,IV:#1w?b.gf(9w)jO$mtC:~6嚴$IX 9D^Z6lPyax`'J#gJq#-c``*믿Nĕ@ 6E)|!q6t3{JpeTdPr-nhichEt/K'ljuR;TbA`gg%ј1cyTV-z駩,boW?V5oqnݺ4%$Ampg !9՘bH7BR#:&MKNQ=D>٘n.V$r\-h[x{RIIEGH0q$Ig8L(! Giմq" 7H_ I|Z'{z)SǔΊ.xEp?\iQMJkx0@ 7$IkBD\j؊ao )L !x)}mYEkXd.C>Avyxr$ҎI.᱊IlݶRuſЏ?M-[t %Bcڵs GaavA(.LPg$kJqAm(5'~DQP)+er$+UMju"i/{v: C6ڷݿs'_={}=[gfI7M彑:yx}p. p_:@ k^"mܗ=!I]!r̍E.7'G \t4GNmZN4s(RUb<1ϟA;wXMkk-ڵדQb*[G;vWѶm})mٲL }' rVώ{g;d!Q"x{n(r7͜DHIJ.Qc8K0'rbDDSQQKͫ DI`>qxjc졾@@J?[oJd1Q;Mї"[RU- D..&ZkVA  FӦN'@9ݻvo2xI-^:䷯ aǏdI nNפ~}Dy]mް r[qQhu73Afr:NC蒓5qft"/M$Es "uj2D2jIN-kp'BW uh5mpw[(8(T 0%sJKI"UBh9k-@ r" r99 "Nj5iiFIר{^!rNDFCizW{qk!mt]Gg{^!rNt 5+SB\ ۷JQTTDq1Qfr:xJ"WɤkDM\Bl H`(غR r wsU)ǰ 涅T 9g9n&P9pn޼}\̤[6I"s&u09r\#sŋ rD*K9-sY/լF"<"W\\D.!!A"WT$xT]dD||<5|96wAdR l9YjԨ!Vrri/rns0>>>[ml߾ Re /PDD.\,qM6 Ŵ520RN:U$O xYEnr"xbtNyJpkSyF^~eZ|c5kѿ7ݶ y7'O?Okצ;ҁJ͟4i}ǸpP$rSmfuؿbcbt$*x갣E.#]+"+SQaCd1L:VU-ʣR>L=Szyyy☘'Nt3s5ݶx,yq5hЀ&L@w#<"eb)4-,rرx !k82}q",l,s4#Gҗ_~i1+ ['$>k4PG.^,sU9թSFE[ZjQ۶min~Zj 7ZjIu?Z#FP&MQF4|0R%&ըh)ԢERhƚV-9iDf-G,r\kV{/iӆxzꩧСCFڬɓ'*\ezwu5M駟RfDYsӡ~ qTVJׯ ){ǩ~4222Alْ6oT"/FeO>epHU+*Ϣ*ČC?tGԵkKQ")>ϞysZʔ(&&ڮ"'2~ʤs_lq?KB|Iˎ9w.?T$X7lPz7(--U[oG ͟( nh߾}b?w./D 8 z%gؘ'OX}̖m?d~ 6Xypu iU=Ytlja9$j=Bs^:^fZ;)i'DV}j֬I%1Q2\>.gfڭCu9XB__V;RZ&xOc2\ʼnˍEplfK9ǩ?_9m6h"JH~~aQscǎ 3u|.d35ʕ,ÿ9sM ! Y3ˬǵf7i,~&i}iFtB|\UB]ZWl 9EMg4i.Wl32T4}cx 29ر1rygd[}ƎX闋RڵkG6/hBj޼yҍ ˫P=ErDJ9AI?5r<}}l,p;>yc6D7>rsfvh;"#& 1ce˖ }Qur&iN3f~m\4//OݼCQwg1Bog:Ҿ}{ҥK鹳Ծyp?{|nes=K7n!墔?\ر]曯K-ǃFL>,r_xAWZ̛7WӜa@`Kł6h jذ!5__ pZYl/G.ֆ$I:F) Gkb-"ǵrXK/9t*\nn3]\\_#Lz!!dr'&iN3fDYr5.O >n.O>DQoN9Cd;D$&JkdxĈí>fcja(0g!|';,["gn  q]9M>؍/]Bxת2lZ,w#\ƲĵU)< k;ENoܜfB䬀Ys9ib[yhڴiU*\X "dوpHș+Z4^pֻRz?~wmް^ 4`[9xЏzj/nдdZe@E9GgE9˙DYp>DιD.]T"s22`~?9VtMyo1 +~ERBD3AUIV7KÏIMNIQ݈PճAANM9Z􅜢MҿvﻑeKK]]eKu*:`3׭]J݅[(8(T "WQ2;!NyP2nN8]9j D" r"9ȡ0 r" r9'ru%%&(&YHWP-r,fޞ;h7_Y_N***Ba*܄ r|cA+*,$KÔ*܄ r_DAA"Q ,i<:c{МZ~7Z1^|EUիW^~e4״jG*.A䔓ؘșv%''kF͚5G*9uZ*uܙڶmKVsgܹ`r۲YLmkxX(8tE"w-YZ"VM\nn.+ӊ+߄2S|Eڵ3j"7SqS9L=zGy6mJ]ic/D:7k 4bMv4axjP>խ[Wvҵ4qy1u,`XF 6￟ZnMnn[,Xӎ|; s" @|κI}?@1bX3d9e;35ϰ̒T4rjҤ 5jH*1A7N:4z(Qvܬ5#}]"'߄^vujҤI&ŪPo۶f1wVmz韯]]K]wwR|J=x`Ol:f rUHڷoOӦ}Catiڿonq[tXgϞ4tGf9gl 9'ne晎i/=C-mܰ1SNx@|b)ӿ:th/l /!RS_@[^3S ˌ/zA޽i6nX*M6.kצMk׮"Q'N2o߶g9nZyeydxO{.5M?Ϧc"WDe4lPq!_.3#]MTؚ}Z qJEMe)Vs|wMdž׳}g闙F;{|Y4s7G q{^ʳ-[#kEڵ ͚v]|IR`1Q䊋wNU$rǏI4 IhH97nL~[Ԋq2MJDvbbtB|]En ϋfy2JDN/};m9Nm)/sߙye5% #r|.KLϛ4QV䛿cn`1߿?n!wz*qh ./sߙy }#M(Znbr\\݃Ќ oBe\. .VlڵiԠ~}[H[*WS#G#}|6l(.|lnn[IKMqRV-Ez~(]]d^j׮߷d9ڇ|;fj8\YmZwkN0A\.E^4JslĉVɅ2Aӊfyay #FP6mļsg{ #guZ*=O|nݺ!b={C?*9gSH9ql텠}<"<Ξ9]J,{t?;LSNx@H|]vu)R'Xr~gI2dȟr6K6w֊6+rnMS'_(9^ M̙\rJI&YJLPtm|v4-+W2c7w3ϼsKKu؁ MڜGTRصMny$OnyhѢqC rN%r="Mb3kbu:z')r&ef  IlL/|tעTZlAÆ d|K||D;6%6u9s"gk7g,&,n|7hG2wnfyaϛ9nիz]J4D;\cHLץ6-u1sǯOt%QrM'?[>گ,Mny4OnY.ؼwyi9ubEンj3-Z{Y1;Џ? Yx je%r!!4jHjܸ1{mqqUM7?/  Y_K`lJm-rOs-V>}D%hx3gly{i4j'ti'D<)6v>FoqMizH4YN ߐ>oE񻘞/ߋ={v ]--n͹y%O@]`!F*I~=S!Q'"U\=}YSS^|d ^kI'ߍZ7߭K]\D:oI89=(DNI:fN ̊a-"ǵ)=Mn-oϛ9y,/&ׂrcƵLݻuӿ2T!ߐիW0sYRYrJnr˓g[$ׂr:/ V\tţ^yW^nlz)Q-5t?`hV^"37pmW2asY~M`gkď`Lnfokx+WגktH;wt3k>}JlNPzfM-ye{IA,h3g8~6`ޯiDņӸc~zB|37o.j?Bs'e80o9dLe}5o;r {ҬY3"b}*C,c޽Gty;벀y~o_emn?Wݚ`|t3gǞ7s|7rS!~JnWN$ilߖύkirڳ<#-/ұ;6K7ɳ-߇̇| D/D"~e _tHw(*qZ> P85Zt3gǞ7s,, 4}Q?-3y.Ծ!,P݀ui3OB?SIYX:vcf&&{- lZFf#[QlL ]p^iӆUBH׊csFgV4~8JNR).D"ܭ[giY%"g幓~a|IvА >{.Y{S'.D"7Sq*r=adڷoO>(A7c?~w#FP&MQF4|0R%&x4ԩSE,-s՘hI۶mBM~2<ݭ[W:PAϞ=iЏtyk.WlC_,Oϙ=BBQx!Y~M"Ӵ>1'r<͞,Mܔl|Cqm,[,rR6x`իzM4K{8;ZRy9'9}/ըefZ,Mb]Æ |uZ*{t>"\Q12زe 6ltKQ"r;zh4U>TOgl}F-]ډƵjmլY77%ewr\qq"۩V5nX^49ςf({2^;(*iRj&- G:G\WPХ wXOWCrRŝ%IP@EG"m\w(rHV=Au"m9rEo/jjgD%&J<@i)FE5rܹњaɪDʾ/;SQ8:u245?Xq"bE5xT GRPHwLHBx%InUjaq= ZQa!Y|7gEQF:uTmA!r78FZ >{ZH]*2w9N丶MI(QlLĄxy  Ν;;f,oҗ"/F :zi,N]<^fY7Z#rbFX世p9{ތ`gZ >q!P[{:e.r?0]ݺu~-;@kצ3Fo>4eWzW2Ͳnb7axjP>խ[WÇQÆ ֭[Ǜ#FP&MQFb]i"}1ի'1d;LP,N:4z(ZjQ۶min#G#PӦMѣmdni9~pM\xxe]3)}>D&Eq"7Sq(9CS7R -Y^xJR͙=BBΉ&N9}t?;LSNx^9ͩZ$q!BΟy^5s!!gU:{$xkIIq?ڵӻ/u,v \Kx&OlV$?0@_׸S?WI瞣&͛)ه9m<ڳg><C~݇} rEz;RwjFVK46:บ(c(M\Qo&3Y61Qc Jv˚`hrU\V*,GhKh״ӋNN/c)t晣|3&rMPV0G74(JQFCzEh:{f}nxm!f9ܛoN#FȐp7N6mLUB6'#UԲprnh1hB.F?%r[h=ȿd_H^*{JLzG H84%&B=7~ ͆#.wcq\'!w|@j͹z_RCgn9zG!_PcmWs]cM!Gp;ښIȁv<ώ=r[sS[ 姙QS-{ϕKӛo]4zԦ:Iϧz$P(>/<[WʠmqصcxۉXߕ#?N~?ٿ_x6!1fdAp=qm @ @ !BzrՂ8y.< r*C<vIQ[9rn9u&׭ %ʆkvH|ẄU%P|fLq`[JUc!|^9eR﨑+W? QS-Wdc'lYTջuܳ,f~:G{ݼ'XHBZn$-Mκe(i1ĕU7IZA)pr㥇;'[6m~gx+W2$8!&s+'9׋@HN͛2!wz¾żk#r?{ 9f8#!w􌋐rK ڨ!7ka&H]-[fΑ#>h\fք rU$HC.kzK!w23KWkrr Ɇr7#CŪBB.E!v\nnߴ rr˗H]pA͛' 6LF)߿P{A Ov߷ɓ'u:V'!sɪ}钹!U:;;eĉ /HffvWOxrPk̐ЏxM}=*'" u/^4_jA0!7g?~ttt jrZrRrO=E>@q瞓;wF >\Mfeuށ"5gΜ)<߀ܷ+[ [&zZ{WW̝;W~kli!@Oȝ?.eo^׼:dm6)..6\5xH54"?>{O&M$yM}KQQ =LV soz}Ð5w &Ⱦ}  9!kuvvKټ.ˏin>kS^^nS{5hn;{^#GmcE~SA_ՐkJsǢ?F4cNJy2tPY$XJ{=_O2E&L/9;Q[#泑u䥗^\4Ͻ#{{d#kdrk!֑Ywk; `n3[k (vr\{[\*9g/l.dC^{MnboC+KbѣG^;Y;Ni:RIDATx|Mg_5ZޱWkբ(Z^ZZZn5޶F+ "DH 1H[bju9^n|s9g7ct͞=v{~~~Nt$ݻcz7 ӝ;i,۱cH@',,6y\ǁ>ׯ'yDﯿL&z>{P4h@%JJ,I5k֤/>\¶ow[J*Qjhʔ8M~+HT Pe~קeYfQpp0qm&zl}p$%$$͛モ'J[a]6Y(&&jԨAzxO^۷o<Q ze^m=7i볰/4zhӧ-_FvG,K/QyE XǸ>vGw(Hp,mXvz-4iA>9QF?ȐO)2{n߹sg G󳸍iCQ|&M[n2}M?-ױcG-ٳgэe;\{[7ٻ PH#YJ-sNUƧam[0^_o߾L_rCUg7_e˖IZ-|`{_ p$bfjTmck͓޽{޽{i߾tA- :t蠔jr_`w4ѻHwnҠJ_Z;"EUT0ndl)>Kؚ<ٜٳelٲTh„.R|5lP۴m67%^Bp4,L3a,D̟i5>Kؚ.{xކy؝m@A[7oLD @&===T,Wӊ֯[C K^*:C/]+/*% tA:rp9sJ8˜>)aNN3'S̉'58# 8D1*aC)At(Zep^!z?G2Q~~oK8~L]r)Y zv{wkItT-B􉞷bD'['%(A豌<|D@=у J/z>D(zw܆AуAуAу@ zȲwR$ݢmw[N5 PV /@A3dխ?O;UTI~iӯ&IxN:=E֭vw[>DW4*Q,X:thOREK|r"<+TKiǂ֧Oo*^}j۶ D_>TP!z5ء)RrAe˖ٳf8U\4h@wnr t+FnްDpѻ~=.K>8}C+QuI=ъhK&KgP&z,q^|WR@j曊ĵD1[ڰ>6m Doƴҋv,,k(zBBS&['їJP|yZI7_-h`sXj-l!/U~'ˌ/n-呉=B=ztržL"帩'\rQpZMXEcMkQ#/EPEԪE@e&wD9.]M<9nPXu}蔢JYa4UZ==y,SްaCi׮"6Ǎ" ӎE/N5۾lg K%<ͽzu0%zq?]"oƢ߹DYJ͝jْ%Jkwy%AԳgz״M7R޽Msg"zz2شI-7ޠ͡pS"z,qZ'm ZG{vImbŊZw[ڵkeKigDͩf͚H&ZeKy-4p@W ~RLtQz-Z42!fѼyR߾}ܨe%;錡Wؖ<>D'LU'=;\Lu bQ7/>aSEŪO^"TBRI={jM޾rJԢ-߯垾:uTd&z $%[M4v:;uY-RùMkcR?W_؞EFg.qqب#%1ݺuY=yо"h+5Rvm3>3lfsY撰%K[o5JΖ'U-[¢vIXuGF~>}<~'R 3gNǥ{u 1Ax@CuX@ k!z=@ z=@ zO._M"4efh8|ZvJ['OٻUPyT }[[Rz?2ި[?E|ժפjGO^xׇLaR2e兦؎8/2\DI*V8uыbն?}>s)Vt|t ?pg"Eiv9ݗ7f2oYǥQ&?>M'N}'LѮ})eqplwCzlU{9)ڨckl=Nb(GΜr=}/YTFѻ{6D/]]^-bŊt|DovJ8Dg.ߠp~:]OkskX,XJ6lU}9[z"Rzk׺n|ss  z,'zSezRe;jԨT̉?8y3n_"zʴ1GCzwt&|29y.Q$-# Ro)a0}03NRc~?^[|%m46SΜi*O\M"eFH;uIwѵo<-/Hi&:D=$e]qz*\ahfϑ4̅Y;n컩|Sa^KX:ܿ ^{ʵN:N=ϩ˷e z%z?N!{̹sR5+z<r O{a\rӗ|Tqqi<}P9ua-/Sټo=%_?Cŋ||׬}̅Y;n컩|ZchskX,\JZ >J7\fv;z&xD/ˈބ_~e]v&{=t-ޒ RG[8nѓqmyfF*UyRwR~8SgcE㌘4aM *z̑:d)w`*S*<Cc/kˣNR~2.Rezu~67† tŗT](IQ/w"EJ&.n/RѢŨp"ԱK7:y,*@ccJ+q4pXwˋXjxseI,􊞩}#zz%C,[{-rڼB SS\֮k׺9|=B-MY:'_^FaTv-^2e_>w,UwTճ<ßK3gOŝ"/[QiҲ- D@2m ݔ&N'mId[{o$\ɋ7e zޭ[7*z2 fT|1+UU+DuM՛}^X߿(Q ,HڷSDj&y8@=NITjyܱ]kըQΟL~>:gf=ܺun\Fׯ% 7o@Dǃ%2xuqqվ>"zIgReVLfvy} uIz򪢷#l+}*R0*Tڶ@JXcFn]dɒ"<s z7sf%4{4p5,Cy zZnW.[  :D (ϰ8cػnݼ@ zi=0DWqIK)r28V}q]-zAxxqJ26גw^;dn[.PADzAΈ0믿kהgr}=D`BoTsd\=DvL^fp]DWv@ z@ zg$z?9>}Z A65N:E*Txږ4_F˗./z!"_= s:2돧zDO<2cݾ},/z(כbA z ?_ QSLLS*yJӧӴidك,%z~+(W>gw`>/Yo҄WP:z:ypHO~sW_ADm\>...U82=b˺^z4|]q>OT7o-2dZ[q!z ˈ^p6c2qiyGE"wTjUy"{`dArh\,թS'Écc?;g%xѢ`>"Sƨgmy]zU׺ضm*Tܹ+}^)ܸqC[@sK.+_zPEԲիWSJD挗q/uqM߿ˠg(&+[loճ􈞞c,%&zΖ$zO>4tP˷!Z_s4-,)z\^&=ujР6ať.\X?wV<Ǔ?~6mӛ/N9sq]UikY*!n7g*ɓ/yz3$dZR"}7b-[6EzDKKJ%J~_xⱱZsjJ_~/_^U|/W?sTz5ڲ9TyҚ!CEJz1KGdziS*Pl;pg"۪q[zD/o޼4h \\/mݺ5պvkСC2ϝ+}5jE)W-_ܮZnEy-D/-scÆ (t&fO$IMqD={{^'M(qm9sMcȑth>B`G <[N=Uѻw.TpYʌ96).>?L˂UfM Pݺu鮒S37i6}S6Wsu-ZDK6PEϑi\Yv D/ H"O.R/Un7p ކ#E/-yUm\\DJT Kޭ펊0.u˳}6;vT5a6b.?w^"zPuˢNcE`pev|LRǝŅbccM焷zM{mty Ku•{矷=PEʽe C@=C2n-Vb]b V_(KK^ ei=ǥk{ ETpȳ}6$~ٻwn&l9ֶsIQɒ%uVRDo?;ٳ;U8w`6f<.aG6! Ǔ6|7n*gkUL-+ѣGS-0^XK6nAV=~PC2KgR1udOT7,#*j_0?%ej׮f&qGZj6K-bG.c Kx:{fpm==l4u|jj_-mc)/yZα1ߔɿJ.^8LDo"=f {p777i~FGyÌ.=vỳNj;ȉUK[(rl*~Ssu*zUgD@ zbxn>/~ܹ}K[Md KT싕>K۹q|bn_Ɲ Ws+C!ϛ"Nnp#˗. ~ٚWcҥ ժY6%qҹ/q-mӳƼ{Tf Z/Tٱ&zΫ}X:綞cㅯ7.7wt?lEdѻ-f̨Q#嚘7oQґǺ3fÆɫܰPp`M4IwcXLBbE=9 GVѳϦq[-n=SC 3kgWkۘˋsn9ViѢ_wܛgժgE,[p+Cf4iySדP%'xKs*ϳ=OT*C?Z7f؟L~qt*z։UN0ip;s(ﯳуhǥk,? &;'OK|;31󮊞}Tkyږ4x]rO (z>~ L&z+-ׯ937ߦ;k׮txSɷ*zLwBD΢Gъ<%K^:HcqޖM2xhF=9.L2y-YQEϑi@ z[.mUEϸv}ZY<+ѻ$Øә7g&Dd bg-zGϨtiջU3OKU|(w*6xM/o>Z&{Woז .LŊvQDp'D`wnݼ!y\g+!t&$@[ z=@DL&zJ;D=D=D=D A)E/4$X @&mcӉfFs_QoܨBonM7TF}r~ݨhw8Ɲ>; +|;}OXwj; Q; ŝVv; N#&w #'y(ѿzИQ᧩4vSyA&Il;! OM s;/ӒmDFߦD?DϰO=G_-E{"w=|L?>0~OPnݿk ybwS{w0cQ/u ੊C( DD Ruу 3^)`Wfiw ?sRѫZ*?IEŊ"pѳ"z;uJ~ꔢ?~Sn@+zzA(zyvӦT@ާ3OXׇz,/Z(KݽsR5)wK/ѴS[EJkȖnmŊR+W.=Sr$2KSpA2_oL bʔ)CZy~@)DjԨ.:g}gteYΒY溺t_`..gRϞ=t-]DJ,I֭[sСCh4fh3nt= g*z$w;t̫ӇȒPT;'aV~}ʞ=;=sd:\ǥi.^E^~em'oգ9r2s rÆ ]vJ"nr za۷EE0.^8/\rED;t9[C)b 2˛7/2WײLq]IRFv?.ÍgF͛D!o<#<Ν;+ŋkq[D@s]n] =g.zi=di^lKQCw?P᠏?q#z*C%%%JXV;cܾyLU۽(C@ocQ/Tf$z_`Tem6u(88Hwۿoh7uڴa=BͥK7AF!z_OC zhу职ɚNnD<=|}O-˽K.Yu^{5ڳ{7;,)zK1p7ߤ 9%u/Ӌ/H:yp2 z-;Yf:ž_>޽{A=={4>uvBZ BlUPKr]0h\,թS'Êޭ7X;2 !!"W8ž_ޢ_Eɝ:ur2D/qxRb"UT&N;lٲѾ{.GzQDiG=/>w}v]8شlْ~g< =u4;0D/:g|VLqK)*\0uޝΟ;+xɟ?LO6UMŋ9s8}[Z껶T-ɓ' __E̐{U>V|y'rTK7d_߾TTI*Q%rג#lٲ)jZ>8aÆ~e霖)S/ԝc5eRo5[n<=x##vʋBOխiݴ)(P@8`@G~=<5ۺ;ZF9@2mݲY^zӰt%Dq?sXb)"Um;=;jH:v4N_esh=ݨ6?bp:s`1A[ n;Fs_QoܨBonM7TF}r~ݨhw8Ɲ>; +|;}OXwj; Q; ŝVv; N#&w #'y(ѿzИQ᧩4vSyA&IeP1.AU}Sʕڴ@6qѸԅE.:0Uo&:, ILj@ne( 楈:.f5{Q͚5DDpU%Z0'6cpM8j+kӲeKuaX1={<`.3ukKX͝Ks!UsFLB1\ ع3W!8N|7Ok^{zrEJ *ŧXb"aӰW.5kڤ߶[<0oy СCR4+ucކPƌ-"o0-g<[S-Dک^Z,u E/(pު% (z csguΊhs&¸$wq2}D83gH):v萢5+%Yu;{mU&=qթSGӢ_˗O83q>n ˡi\vM)n7ѻ~=iD FOi75nmFR iW?R$zUT>L6(в3p 92 ."sцZu%},e<60@ X-a,iDE"zvLD9Z_ma۶j۱a̜m .;IUo7=3s]FXܲe˖D/d}e961^Do豰.p,n7r%'-ǏqN$zO zfiǝ.nשcG[I;nױc^qc-*y#,򐒽q?(ݻ{g=%n8TѳƩSB Oےh%_X:)VH*V=y'=l۷oG V]?!TEO?{iMRı@3gN\2͞5#STfuM&#9dJS%Ow-Z(s>[nݹs']qQ3>󸇯: HT+UM>M&ӶDB5+zD\\\pez.8[M h4իWϟ{Ǎg3|Z\4o\`NSΝj֬I6mJ|Ȑ!Կ<8 Z[q&zAxDc|ExQ8\S#zuӂ}hСigK"y=w_rE捥UV믿 @iDgQ-=7o^4htP,/mݺ\6l0)Rmj%Unݢ%KI0ȹt|)C<>|Pt W^d(W-_ܩD;pur6mDee˖G[2=O=޿w]EEСC9mƸY|1U\O԰aCEٳgKڲ>IostТ5jІ $y:t5jԈ"##$Yw$=SP[~HZW{>fc矗m'u-Z$R'>UƵk=^j{A*`pe֋%RbŃR'$O'ߧ۷W¸a]%<@5 <>pbDpᅳ/nrߘcǎ>i_w}Ƶ}6-? rCp*U*̙3S?P|00@sPE7oi!A4[.T|ٳ;U8w`6f.z<?^SM<4c޼y6٠ubcة͏xq5?wTg/z~+(ߗV.[L+.vѢǝX"\j2ť)aILed4TnRkyږ4 7Tf=.b˪tО g.hy*zz֍9,ؚƵDLjbiXbRUټ96䗻wUzg U!U<~ D8Z*<q4Vu sr]KJF8Tst:tD^F@4sp:gLq;2E/Q8Tst:wnC2qb@&;{&D<ߪtDOMܑQ_ƀe<ѻ}&ܿ<.V1%Kp6Ξ><'Ot;JG@ZQߑÇ;Rb^V=krA,_Xz^?`+Ȥx/n N@{i;V,"z̭7(AK.z޺DoĈڇzM`.zn,+zZ8LN*6pHC9-˝]6mXO5kԀg6,lHֳU6=dKX>8J,A N;!EXn2eJS-(o޼TX1ϩo>T`A*\0M0^ܹ_ve^|:o'eI8"EP9\ٲ:{SU7ϙ=SDG=xbT@)lVMWxQzu)_|T\sΝ zwzDoР^ݺNm[BF.]4~6t̳d~C?<e3MҴ+]6Eoi㽒6J^8>6K%z}z:F+Q`կ_ڵk^ʕ%൴FYxDYKZ6O<AEFEThVF+"C7Jm-7i1Dq:=Ue 2;wnm[6Y3Hš蹸FMveW)6zU"w6=.[7Y3S5`ZטMJ^pPT 6mҘyAD/n,N#LvHX*z\:ErEG{wDMݻ"5amķ(i?1ے^]VX.%t-Y(͢7s4ڻ'J$F4?wE:TGfpSpt 1OrMLQ;wHX5{Gv[06nվ:g&zߍ<Jޏ?^xvFADq/Z)}Z z4JROK*zHo7vy,/"*X:wD%JDK߯#,U$-[XD/"|u֕J*a,*U͛iרQCʟ??̙*WD3OE-2=OWhA]OJ{wqYE()*D/4rV3r8_H7n ^ ˀ's۷oӒ%K޽{4i8|}G^DoBKiq1&,,L\ؿ/U'Y;b?/,hCӲΈקq\rI/̃ՙӸl_Gܫ֞-9D/Vݚ;wPFtҴ`z2N*T p%ur͜i.>pclc{ڳ z=~%b7d)suuy.댢-[6ڷwS2AlDEˋ|MpH]dduUNS"#vMʠ-hn\F_|.\w\gM9^M"۶ʷwGE=o{G#ם޵Dn*[l=0ߟ*U$8VZBBk˹sӗ_~A˗*#x,ۗJ*)c<[.ʫ9Nsذq)k0?%ح[7m{5/*=U^lq4ڱo>={G~ygmm=G]~kiXz bW~}iעE X"={6E)=E$2jH:v4FH窒 Pxvߦ^>ҝqZG5kK`ܹoh/=CDqGhmg->ޖ_dUJm9۠A ݴNHHѣ;5kL?͛7O!Sj%e)C|EkՒ|:-2gN6NKӾK1=l_uy;b\O}8S[鰈D/ǏSsܹT7ou^TԮTf=CƵnJzp~TU[Y{3aۓ?7j1O HɿF//+.2K(x=Dq>Kpӧ|nXSJ/x?2ax)<˗O{0,cg*>.cΏҲzG^x/דgN-z~+(ߗV.[L+.viބ_~e]v&{=t-/w.ʕ+qR]k/WR7[v>yGp\zVĎp]'xzŰDg."_9hM?*X*\[KM7aXzT|'RR|iw~{ly;bW[0~A@ӊ^p6cxM!tIII)Pp\ٚqۓB I[8~sʴSDƌ7udy]nϢڴԩ#cX_-uƳgϒ6?n׶-WDְZz]tq"y6zⳖ_,m Em _\mj!n@zjl0x_n'6iD/ngǥy#^ {vmi4U8c\*ɲJCK~}ŧg"zzw[G<[xϛbkiXz߿ˠ~8SgcE㌘4aM *z,PBܫ&hq~Hr5 YJ[UV2eH 7gAKØ;s~Y.T\9z h"OMX><\JJsSUWΝlٲ|\T|yp_$ӛ/".UVx-zuR|/;wIEe"O,S:c 1իW֭[7[o5!cы!ó`פqc:e&z۶l:ښ=fZxmH]tASEO^TJpS]O 3+z<ݻGF)rځʗ/ӝ֮~B {𠁴>h-EJ=d8p9r"OTղy;t0Zm"*ZVu6ix=(o޼RjLZmf˖M$.gΜRWg TN]Bbc}ZTe3=.5l׮UpJ[kU޸?Iu熐fXi*z͕?ѣFJ5wL nUxXnJ=iƢ}khr̊^)dmҤ1y/D/O1h,w?*D7DB<.\"u^K=U+){"v9U=59͊c7_S\9 )z,pےUFGc6z.Jm^vGCig.i9_K&+뮢Ɉ٢wIɓ'm\/ No!?_#[dR@`= )yѺ G;AN~qg,/F%z|.;~?|⪢wL;rTVUM}.7k 53k+iw*suӧMu']SUJ~رZ]V۰'MwSo)n샸z* {C>>KL~Hn+b70`o1x۷LhҢr]J*n1Qc%&ȷRӭ|W0M5-S,\0_W]zAcofdAIоҨaCI^6k/={=[{NKe=Maw;xd B(z|׭;5ݺڻnmlmM9xܞݻqo7j$]|lyٲj0f BrT+x膜=xBrsX:uƍK&MHH6oSioڸW_5j|`" ,?d៩v뮋aÆJՔ,xϘi<(!C$,4DN?&;oym]^{ٻVϨJ|_gsz{ݴw[7w2.?2!=Dok@ͬM~W bh5b }5(hjҚg.aaiND4 @_&DoME` [(x ʡx3=Jw] ϯDZc|x?4:a^rvymgZ;^n)YKt_gszsغw2f[E/D׺~g4ǂՃ͘D /j 3֥GL#QW.xxڮM.];պCجgNK=dɒҢEs}ʈeҳw܃΋K\U{ #'D`B(z,>qx8=tg͜ DL6&GX/Ҳ܈Y: 63ހ؎7dT׼a:"E 5~m M·G*otU嵕kу`t9gKŊ=gszi^9{L6Ue=?;ZQAD}eB ӷ+޻j ̱C֯[k>81G!7A_%tTǴh&FӇIBdw4!!ccN!h^d~k2} kVՍDRsabLiNpn7=P? }ƎcWD^YS,Y.NU C[V֭%@qeB>  ]g^zUzE}pΜ>R'Ma39=jiA8|!.&z7+蹧DA*Za -4[Bb`Y7F:#}m<0 MVi7}by4ă|wNo^dxb v ;wRk` 9hBt 6h`,& 6'"Jl:@4YCM<7jJ嵗k^ý0ct5pH10$mر^9}p^-}7ֽrvq-!.(za!!Ya)%v==^A{L$?۷p3$YL6[-˗,eLG4LEEAA6j^'ĽAWBMzF/O$BDϙ@DG_)=B!DWdmMJW7!B&zp႔/_^ώ#),]HmZF%'pؾMTA#}.\X{9MاcR\Yɕ+Pi-P7eT{4MHvmir`\!أ{7)^X(z@DZ$zʞ;eߞE{!˖.Qʹ6s]dY~AE{ /Ȣwv@I7r֭,;ߚ5k Ruk׮-O=AybDORJɓeҤI#v#/DG)Q2=ț Zk$[lNkDH˛7,_clݸ~ۈޜ3,ވ#^KgyFS߽{*THݻ'!!!nĸ8oŷ u3Cԩ#3g4h-_YU_}ٓ!=k͵6:M6[ѳ5JzDof_.#izgyߞ]n)zf͔::uJ!***_]r-+VH~ҩS'ݻo܆W_M&1L,ЄʼΝ;#;_|2j(ʪzT&bbbB%4ѳmڵRB<6cF[ƭE+#z~ZgL(C-Ts5R_NFl27% ˊs8S\ݺu:ԩSUֳg>V͛7qAx{QlށjJ=ЮRhQ%{o7_!rdfAj֭ϗ>H8  ?Stȑp֪U xٴiqٳKjd߾}&7k|'%%KTxׯ_*zkwQSti)RtEϤbŊ*q۷e*^@iժn_aÆ>y5m՛sРAiA([,]4M"ojµVf/-ZAy"D/3͟3g:Y'z~vJe>K=s')Q)\Xj֬Vr wҰso^p`7o<<ӧIF ǝ!KSddD><)O9?,,Tmxש>rj-=4zٳ[5#ۺ.hgmӵ<(zNʹ-?W ҷDϞ=O?M6kj\I5ʗ/AN8q\=-Y }m;&:D;:9ix5}l"Yhm 8|8>#SlOLLzD bf-GO[ں.hgi9_R'؆}㦳n6Ą'R h{v&dq!ߺ-Z0OD֭2eH޽QF8c?ˈX|џ#G3 elGȑ>h괶#-KA3->;8{eflGDK3/| =ܰa:6EF!ʆL>`P}!]D6taB೽H6<"z[|7$/9fIs)+VaCS>wSEl,:"*諷wT00t=qmY6(1B/},׮][iܸ4i"]v5nTSZ*{'jRT$-Ygf7lX/ϟ(eh׮ԨQ]չq^|籗N"4;&MK5eɒ%V0|˯z:UBq4ѳ=$:73asPM3)zluwBnݺzTTGWdb@跅0Pˆ,cѤΝ;~{%q{Lێ &Vё}lR XbR9mG7ktz1 AS{e@Sk=@ T <Mx!ױ9ѵk0̷+ګw!&oYBq4ѳٳgiYz59c.S(zUY`GܹlS&"Ŵ+zB<Mf9=^*C*,]\ڴy_[?{/BI/縖@ѣO-YA{"s賸x")\L8qh4hK}ڷoFB<My uQR|`% a` C'*gBk3ᴦm|QO%&Bq9<Ӧd腇v^!!gO)蹙%]#B13I5+uelI8_gB!8M}TMC=A!$ɌNh]Pz>匡C!&i5FMwAs#ѻy㆜ygIj4'@2_2B\/~'rJxhI/;szG$!!q!.^BhR@yg͘NzI͚5e%r h ?[xsf)a>#ȟ_Q!Bѳ)z ׭[WR*W$͚XDөM}Y5zHōޟIܹA=B!P 4!B(z=B!=%1!bҮm[)_j.RԮ][&i7 +W%7];^j3ҴiSy<B!/z[|7$/BtdϞ]v@0tժU̺Y/jʒB J };b(zBEϣEo 8cnLXb|D !E/ESJx7o.[/t׮]T4 QB IoɮÆ Ui/RJ,)={-=H"} =Dl@g)U*'[SZUUY3gsfBGn##"TDN:J-[l? AܬY! }{YJ*BCԺ_zɸyta#ͭ'zZ[je\7{,N! _5wk"K!t(~B!%nQ(zBD[GEG!=DѣB!GѣB!GѣB!G#BQ!)1F))E!B[zEqc;GC f.zk+M4Nm&ߦ2dv~ Q>|/ !BKAr!ӦJ l _nу߷5ݿwOݼyS-Z$)))2v(֬^ee]B(zY%zhw&ҢETtbɝ;6D:kW^닗޽[虿 +r9XQ2>c+W^|Eygeil^&WkBY*z~.,Q:u(n>z?H-"ʕgE/O'pcҮRX1·C}}7n0ަ:MVX&ש#=/^LڵkvMD֭[oJҥe֬Yr]9yo;E#QWʀ|$߸q%Uʗ//5|c,晢G!n,zII*zag͚9CuEsf3dӆ{ꘈ%z6tm=ТߺԫWW57߬dRUTQ>Oo جx~?H%z_}M>]-#7ܰsCo41[lra/xB(zA{+[Rj ɟ?DZu|цimhf͞=lܰtqG BmoD]c@|||7ސ(%uAAA*׾}{%v_f^޼yWϞRB%+W-An԰UJ>Kwf}T!۱cGýv9yބT]WzuСq}.ʚیݺuŋAPHsUjϒ4f~<΁ms|4i[Gio{r-1A7?J3ʬK5`mDo3L=mܪK7I?TbѨaY`ۊ_W6m*׿˩|zEϜ)S~Io>r]*Ud^ZU:dȉdmǎ#gNRMz4)"rg.uۍI.,o^ ~BhtK蹀aڵ_xA+T ?|!-[4W}{A6>z ,Z0OTv,?WO9vT\F}70MҳG)Yy-00Cj1hK^lGOz W&|=uX5J5+$-3geRvmci=Ggbo|6OEB{̢g!ѣ{7c_^ޟfBCJx+VTڷo'G0b솦8$2[o) W+V ݚnGI {[8WL3inr2Et^B|\UF7ѓ^bBN?OkE35Av|HDbx̙ ݒi=29O=Ͼ{(z_|x)oT7zD*`}gP, NQBg{>賥g6 ! !uk--zܹ ;㺗jTӧ۬CeըZfO} !z跆t~M\ѯ06&Z Wz̼L.v)WX!GhA ?f=BƏ)~t =1RfUȪ+HJlC:@^+һwo)Sb FtW10aJbl!\͛7O9R^| Fb0J>˗Og:8Ƒ:3/SznJT6hB3ozq蹟襤N<>xBW=D p{)))2v֬^d]B(z==Dݽ{W=SixWñ࣪!'y7/;B(z=M?ȣG>@۱]._h$:*\vHq]Օ}CCJZ2=z5=Gjy'EOP]HpþzDTD ט)!G{"DoN_f^޼yWϞRBɝ;T\Y+6 W)W/My䑯'E_O&}|+\tQ^l5 ҷo)WJez`[\l]J*)%JnݺJLtTg^k,I4fzi+ou^8z=2R.p-1A=!B(z-E/)1Ab&6&J_B!G\\ n~ː_!dFy!(BE!JKIIFPKf*e]BEgKw]]w3L6Ux )ZɓGjT.}|< >*O=cb`^!:J/-!G<9y4 yW{ ٵ79u }BCJZt1u|bȹɇhd4$DkN#P(z+z?0T!7ܰ=+\lٲet:WfFHֿ\gNscBEx )z#zjݼOnLNgzV؆fޯ꧚|o}w濾tI%&X̋ݺuŋ3<#*TիV6o޼ҫgOFܹrŸwU*UkоҨaC)P:^t׉2Ąx۷+WN۲e 7ltM5|Hcǎre]y2Vϧ+Kg[˃&z(GjU`ҴiTZGJ!=Ɫutz`VƎ#gNRoky'G^{M =K˖-{vS'\ɓ[] GE!P4 ]*UdɬYl TQ =!C$,4DN?&;o]'ʄmVuU8.2յׯԫWWޥvFj=y2Vd} Y˃&zXBڷoBExi@NUzMqZx.2x,DZF9GE^+":bKϠ}-[6|)XlYڵ {eU'eJLHٳKXXA5!8 2z$]k#Gٰ~'4"{ubL1Qia.Z\^]ٳ{5.]>NƂ$!>N>,[lRٻg>uR< *r֭+UL^^F_3Dd r־}{㱐CHXh8~LvlfSq^ӤI=kl5Ȫ&Bѣ蹘7_m7$o޼AH@T !k"D"u]MH@B${f?=yIOӭ- SlYڵ.G虧[M>c ?.6bzkdU}BQ2(z<%zþPҥ> `v jX D.<<̪-_Lj׮Ν3gNucUO^􊞵[3DN,٣jnѢ=мѣFIy]oB!=e˦ r33EoȟԈZ=]G}+Y€4v)sV!m{#G\rɬ3%>.VE4bo./bML#[oI TO?N4p܄TZͯD<-[hQO5wFet^[ +BEc ؼ`Mvan۷m 7-5~d5WA׽޻j??_8_6U WpAy嗥 *$3A2~joIf͚IԠDL%^^̹rJؘh%/ίX5Y{7Sw8al Pr=cb@5ѳ@?@J*icK:kM!GˀmݠN{3Ǝ!njM@sW ܺU-G]"{2eʨ(Q*UuVatOh܎͛oEݻKi//c> 2`vuشh//˧:?DXb/T+V·HT@^YjYrIK0'[u^[ BERFGuiξ o!և5 B{bEEddŋV^B!=EhP7׀BEG$0wK5k y !P(zBQ(zB!B(zG!EB!G#BQ!BѣQ!B#=B!PEB!=!BEG!BѣB!GѣB!G(zB!B(z=B!EB!G#BEG#BEP!B#Nʕ+SO=%~O[gl,/@!P(zn+zٲevIygHUVZ=B!GA ( M4I[(zBEћ0~w jmjyҤvnCΞN:Jٲe%W\RtiMTYz֛J-*o7jd ?)=w^^s)<~,!صkiDıPBR[koAڍ6TR.]`^^psfK%O< /Ȥd!CUTQ|㺼DZ={v+5s|0%Ce˖chi_H|\J^9rȷȟRJJ%vG"z  2$gΜ*7ǀ2eHտXճڮ'/(,Θ>]%Ǐ٫3B!G2Mwܲe րb a _دn sOKӜ=*֭Z͞5K[`~n!s/<'ℨݏ?"eyUbfRkͽ͵4ӼtD!B#.zh%=QcF66jWFMsQD[1ʗ/os]֭j݇| "#T{aS A"+_~ٸܡ- :#B(z$EOϨWeW/gm!J^YӸ]1;fC7oT~n43dj>ܹs4;t`lB5_ҨXL9R#'/ZYj׮6__-/YظOzu:;#Ŋs!q $-4Bb2Q E4},YR={u"[؎X0M<:Di`kƍ==y B=ORF %}U\fǎ:RgBEhBQ!B(z=B!P(z=B!PEB!=B#BEP!BѣsS%J\lD_}b8o BEGK^B|.N,Tbc3ܣGtq}Y$""\!&=!.Oll>$Çu&kV.!G#ĽA44FGEyA mzADs"uBEGۋDG{_i{ d!EBѣBsuC8rTXQk =|yBl=!/zþMݿÇpSOl=.6G9&G#=D *z޽CI"Eԏqr /^'6&GQ蹃9?M6ٳg^[gS!=!=w))M1] Q!=1@Ҳe 9V7Ϫ >cZNs7?3xE/!!AN*u///9E:z裏d.%zwɏO#P(zvl˗.JDxYJ*U$Z7ahYUʗ/ѱ|*=gFYʛ3$6M#z .vɆ ǥB 2g9wx{{K2e.#zݓ?]7q=BEg]|}7s=7^Ȗ-=rIRF[!zj*\ :ڟ5k߾3&պaÆI֭]H￧&.GQlÆdɒIפO/ Rj:;+o>R\9ɟ?j:^nؼyJ=UT%wRreߢ,IӴy&pn|4i[{y ڷW5l'zZZz˘2ت_4`@uilM+F٥j*c"]4kM0?]ٲe%222`)].!z}+gNB(z5"r\[F i,|WٽK=nHtظ֭+UaX9{Fztﮚ3#zVZU:dȉR緕VF"z߯'5kP2aTyyU3OIΝT}PD/66V7[nQ.0/?,Y0W70{EBѣ |1"w3 A$ SxKP4i;֒SͰ==yCk.J2z~[i[7%_|xkytk~GӭXNK+8D>(zE/,]#yǂ!p2hڼ}s)oLcDOOΞ9-={P-Z4WQVZ-cF7|z%â8j T1Dےh!Gѳ"}+>O21Jm>z$6{:"zŚQ3ͣEf\$:oM|,H-z#G'ӑwEћ0fâݻO?j݈#K..3#m}E#P(zEZbԨ^] h\{)60WHݺ~Zf͚IՔ0 ;֞]|I-c`^I*THfz{^&N/[T63TO,<}JKoS{2ڡ1cֿ>zDr DرciP12pM0ٳU4.$z$P:)룯^S&S!=h*[e4[/UT֭ZG0D߰EJNM30F/Ұ6 ^:j޼qR+4McT骕+֣y緗2 _|. "ɅտQDoӦMJ̙>}z ۶m&LnӦ>|إ&Lw)!.V6S 22kQW z|B(z|!FRn?TА|7%>6F=pFg?˅sj3^)zE4Lk~~e:y#Ebl  TQSehnB(z=BԠw臇ɓjgJ`@Kͷa0EBѣ^wkwoD(z$z7s G#P(zx'HZGB}G#XEurY7W/__&B(z=B<@beiwG~ oz9q,X//7BEG{t-Q+?A"Ôx]OJɹp#!r挑3NʩXVs|"ESL/  zhdiSd銹eт KdiA7!Do=!Ͻ{wÇךLDEB!=EB!=B#BEP!Bѣ$BEGȓM5^\lzR8%P(zx%d7^0ޢsê^(zE'))Q?W ' w*q %2"B#""o P(z?x-"yyn!qZ/x ܚ[BEGgP6:*#Ei "|xB(z=B b=V4ܽ{xYGQ蹺!JT9rD*V5߆DM?!=!nC5t(>|H .,O=˦bc(zEK/x={*:$EQ?7ԿXzmؘh!G#ػwT4mTfϞe\Xzm9>.V̟M#P(zaUa<^f};ϦOLL(zE࣪F7ސѣFY_OOg$_/~:hxDv*/T\Y:t !!!idѣˋ/(}޽ۥD0^)zE/\tQdXN%߸*sH9АRVTR~=F􂃃eΜ9ri9q|J0A;~TPAw92eȁ\Fݻ'n(zE϶PuQx=:ˣe&z{Ң1Qgn zU׾}{3fL &[v!ѻ+8!G!ӧMuZ/h^i԰(P,%eQvCʗ//xĄx۷+WN/-[Pe6oRΞ=TZEvlf]w1=FݥT*nݺQV%4/YʢwyJxxSt-222M$t8W=L>xz3S!=mmv%"V 2DBCcL=wCKLn "£#TgNΝ;jǢ_zuyۍh-Ց `6lZO2|O;wn%zݩSGiܸ\|IѤIտLٺ RQ/OPwUZU._l\֛ ݭ[(S,Ga4!Gѳ-z[]C$k.J,5.?O%PhF.,,TWIl7$o޼JW rUxqi;GGDO93W2^%| FC$0#MD/))I٣h=)Mx+8D>(zEϮZׯΞ9-={%KJUTz&/?g܈~̙Snߺ\A̛(5H#zdL[gk 4cFZ=#nMa~:41]A~O-IA/=BEgw0Fڡ9~}:a8ɕ+DG]5H#MZ$* eQJSO:pڎ(kFE^!xZF駟6/v4 =zM3ʮ!KII1޽O1b*1Rnߖk^b C!GK3 oazysd2D."P3fHzh&׶WTIz쩦Q5@?KMǦ>zDΝ;r ~={V zpMB Ǡ =UfϞyuD/5iM1]}L2GQROHQi//iPKO 5I'ƹ0 Unq."*w =IeEzyBYzlXzB!G!B(zB!G!B-z$!6Vcc$ʵxtoo'%Iĥ9x6V"t:'aC=f%ɉctB$E,\ GIb|,\7~{YYSא8*cJk ^潡gWt^Rbyf_ɣGN߿/#erILbfo/::R$ޛ%b,~ #T#.'d\bp.d%gsz2‡!.ͺ^uXϩ+2u.9qC;²q-1QV-[*/^Cbfo/:}_2@tBL!f 1]| _|Bt{淗uuuk17e/z>$ӡB#z uo/:TXg=^ЙSd9>!DY˺κ eD{TwK#d7Duu7xFyv={pkcH0^ET!Z8 HN`J.G wh1Հ1$px]hoPEzwٍwY;;3k'<3|쿁 {A ){^hw8={`jÇzAZ9+u/effҫW$ՉA A/0FE(r4h@:mXAlAO MOO~qF}=\Z~6oLǏ͛Sǎi„ tuUk۠U^uu5mذH͚5>}IӹdbjϧΝ;K+{o@U9xRXz AO]r%M:O޽S׃{Қرcit1ͥ<j$97Zs0z*K7n 6hƌԷo_j.ozF؟|ިLUzzyk[wϞ=E֭ݹsA/n:(p޽;; M2,Y!;w}zYzaaa¤+|޼y"i׶-[ŋڵӋ/3C"$=9ڵk4qD1b Zl{xMO^i&3ggƊ^EW.{M.h"ڵ+5i҄ @/^tjՊ.]*m_Iqㆣ$,qOk?{lq z#GRdd۶WR6mDs zBCCES*7x z^zHЫUhɤhiӦт j=ywWVVRFF3? X޻pBGc/qGoz^ӋVY-l6;mՃ^ 6 bz}˝={RRR- mB4h r͛4iݼyZSF*_Q% nZhb]jكիƪ= zU$3)_TZZҹ}sԥKuٗмwRmشDH zryoyڷo/<=X@_RۙӧSTT.**h4rhՖmʼ{{[풓RÆ ըQ#[@}o=H%]wuqf0.y;u$5nܘΜ9vh69_/_T =m9m]Xx^^nVa3C!zrzo܉n=~'73'=Q<e ^UKk!`P2'OرcC}`U;׹SӦM-ԹLO#$$vEGUe[ͷmJ-[nVRw P!(9a1Kfo~uKOu7L*+oU\ zrz/i^zZ*lт z׾Muԉ2ЈҥUW.׬YMC Z7chyIOWmy4ӝH%`XmAOoLs:획kj/Ę,U\gKն9x޴},=z4%&^Ѕ|K"zu9DϵIN2VȾ]LDD"=W[Z"z.JKk:t(:xk΋/\NS޽8jz\Zsx1B5:u^B&ˉB5W;:׺<̙3飏QT'?5R AJhQFȐkWS O w՜Y~#t簭60[h=:@NX4J/#7of3! ޾vbtZroc1):*vzrxodd7dڵ4ct}S;/fRSR~y ,LuSkւ5w|vĉtiym۶O=zp:׺<7c︇mF*u͠Du9^J<̷YKHE-9וј1ch_mRc&~u񺲎;+--U6NvqG !UoU仪{o}sjWnf~`04 wYe!&A )zM_}1&*>95Fkz1ߓlf~7!HrK )5EgУ{=:ed [ꜚv?d zFc7N6Mj'b@ZS{=/I#` OuNm๢?dߧ<Ѣ}*ƍȽP͚5wߥKYm۶M|Td$=T:Lz.tڵ+?vT֯_G;uիSƍin[PjԨAգ!C<4cKVy޹sh_ 0OCtqjذ! 4bbbhԤIJLL4Ïby7n\ \'Y uyy̙3e~Ȑ!aN8!Ǜ믿N1<|pI'>Y&zHxcywh…OmڴG%i"C2wT>9:݆(*o׮ 0@ܹ#?kzt};Aj4K{GDx芙|yzoEI*UO>e˖ije|}}EtSannCyugOq%󏪅ۿp֯_/Mj= DeDW J9mye:vسC['_^_rLW3ہqshoh<Baw4uM[@_*XHv 3w9Ҭ?:Ҝi·?;w8|iGZRGq#r'Z‰t V9ъNRaկNމщ:9'Z։+8;5/7g s1gLNEtEGiYEjy?x)zE e'ד'$ɟ O?d8Ǐ (GxPg||'+>7gϜ"oMtOZ}J˃/eJ"xO+yRZTN_ɚ&uhƕ㏇#a >A ܧ *ƃdzp?}?95{)$Ғy][F V|>uvl 6.z6h+VDNG=(*zzG_=?>Cr?E+wr/EӑKN~&y}?mρ34f'u`oLr}}ޥ;7bl0Ex|1{|&:3xxE^'n=ڇ/'ѳ^r~UZ7iKY 9+\~Xy/@?oʡ#ܜ?P7m-yGZK\"zՊ@9/OYO/]s;x\="v$n7ݼq `N8F!D/# Ƣo!)_=X ^v?܇n\ r0_D>nK1Iظ{ܕ>t9s=^FwF 7uNꈍKJ-zi*_{`:=wE\x{SǎTɒTX1jذ!M8ΞѢ{Vܶ3mv< \^kTzASN^Rb"?*WLKkWjWhTV-*Tխ[n $4nXm{&z,'LeR52d/_/e{gM6%ٱ`ѻ~ݸ}_D?.^N[MeʔU5h|Ln$r f|_A.r01gNf Y*z+V;vX$z,amڴp:zuؑKEnBOÇQ:u4ћ0aI=jаyxPͻZ4]~4XJTf-r஭أnjW7[O=Ӝ[ryHb|'=u?o܌=sGƏKݼ+2j?Ё}F*xCMΜ:knr[d1+[Μ>mRn'ܒS'OaJdcFcKqUtu/ze׉z# uoZ|p%0ccժh9tE-WSօGhS_#xΧGifW /+V;ohjڬ9p"z)yf-qߕ\ާ#?ȭ~L9,>)[y QDҬ'D zDW^TD 3gEGGŋK Zpp0vHݻ+79#r6)z;vlu8r7eTWT)ZrsQW'WoSTHnFgZ-/4"Ee#2Ӽr_^9-D,/^Myާu~Q~޸G?rfXCpy[qh@t&MK/l N5M[_ *Z Ç)\^}Uos9u*,YzHnx[uO__*[DWWtj֬IkDŽ%Q#Oz>t=Zz5lْJ*ǃ&f̠;wnkwu=z4UVM$Abѻv5>l~UY)ѻLO4IF)S JU*WD7]>Ϫޅ[ҧbt\;|k\d`7M,Nb,Ϗ;|RyYZ7ծ"5ucRD )b]xuyu1Ӯ!%(6hy{fMz MёZ &ej,_/CuM[;Khz8vD[~!ycQQuiӃ(ߟ;m9ꓞcϱ#[~DWe8pыWQ6l,RsSWvER+"cђ;m4˩DJ/^MާKϸ8Zb*MY {+,N<^F]^e"G;oKUC(o޼"9_St#z<ޛ=}l mR&Drml\~E[BQpJ{)u t.]MU8F\FD~nǏD'c'͘N֮>rΝ-}6Y8}v2hksSܹ5jԐiGVi"]rQys礪~چD%m'#R\?jݺ ^^իӇIF>C %z[ z9IrR$yl̅tZBBD/,2^~޽@Ne!<<^;fڵkӲ%< M=Kt@TbE*XծU?1>Ҹ,PQX15۷Oݪ\ڦGy >T׮q5jȾWREq,96;|6A~Mn7Մ\<4842z758 r0ǸD z9O ѳwR"zJ}EN_PDZBBD/,2"zΝZf?z`O\G zh w^+d*y 9#!z`57nD/Eyuo}_"T1of+'_7ˎ3p*A \8s9|`DE/ z(zS[7ubOݛ)E҆LuIwm?*כۆu6s9| "z;Oz- ˆnM*{.H~/ȹuk=&`GA6D{Q9ɞz}aO}&S_~Sé4@v= Ҟ>R4ݞϰ! CiL{>Ӂ>ʁF~@rQ qvsh\0[4ρPM@8З 3:E4GFa4'GG`#-\H~XH?.sI]d-UǛXD+xj{' DN҇n4[D\D2^fcXr8="S ˗.)\*W5tU%U|(e1\勿 煋 *h|]Xg瞥2RRIx toDkCh8/R襰qZ897gZi={Y/FE#<߇Οɘq!>e/>O>Ξ9Eĉ z=X@;g@oے~sB܇A`w/)DDDуgy{eZ];^99SZ5hѢԩc z/J"қoeWjU6tދPM*˓'V)z3#zwR+R}@Q:,XjժE\EVX.^4|0P,YzQDj&y ÆRRbDJ,!eSyz >{Q2eW^תUKkǑ?*U*z;YccAGT|9*Qu} ݽ)z Y*z^Բe BEoԯo_Q lfEkݼYvQeuy"۵st7sgP…EX"_WSٲeR^P_[Ct;e@)7o޼"M,s\WEv+g.ʔ.Do/jժQkE~7oN ԧk֭+UUV z~^]8jiD/"<,MJFDo"ho4jD%K|[E^6e{U z5 hwq` KE@49/jH*z{dgsы,3c@[S׮]i֭ fҥK.A6MRũTRԶ;ʹکkLl .}4<更~:|YA++V,>s,yG.]7 J[y T`89Ko'#4kV:R>-bn?a몕ӝ/[D/e߿ *}(W}9m]7iS ;HO1iZfL.Dž¨d3Ç Mgq_ž66Rwn4o.zF}*s+WL=E< !*W$PNmzw-z/oF▤}ܨ't'u)SZGncSŊEA̝;wznϝ=KΝK-Z-\#\Lf{!۶i˵oNyŔɓۋKZڵi_y 3T]8Q{IAC"rMV|al _y0.D/gfOуV"46~xT ѵ,X,t<^r*DXy`F[[[yxQEVZOD/bLqуAk=;D@ zG ` A`(уD/)pS'A z"ts%_/ye  zx%74"+=7t~2Dk=@r%{,mr=|D/?o1 |5c4u3nVp4~l;Bv_D^R"D n^RRiӆTBWGѼ95WF ׯ;B_OM>Ps@ z9Zfϲmձb_z,TK ԧC,>iXm:9!ss"Eh uRppnBD/{EŮe˖/K.TfMtR(_VԩS'\_:wL ]]7ОP:~L…f#zΝ+裁 K4u,-*#3X~]ϼqcEe)SnB^FE"f=E?5h@lˬ%܊Ѿh--:*J8lUX+lۖi3w\ SrLKEO7͒ca;接g̞Kcyz6w K/z^tXiOGɲDX"U5j+Dɟf͟7[FԪ=#q=!r4C7.,XVZ%(z(',KE|"NF_{+=s%DlX;Χci9Yu.t@,Ct~mPAR?/޽TBjO>ʖ\׷iRӹO7q*rLFٯ_?zC-ڜ)+UZ22ݻwz3x,+5mݲE9+WY*zKfEOmAׯ] $gX<͝OSP mT9􏑩jѻ{ ӊč9UR9Uӌ~J|r2{>T\9*[ ݋kǝ܇,71hm#l7v4WҢ(XeKEO0Nbz{LG^6?0d;d|n X|Ar Ӿ0W3J$ӧ,z1gN:yLd;E ܟObb"9;;Srr2-nn=Ow.K dym\\׭YDvG}\Bm۶ʕ+ShhEwy?pv]ȼ-fz:fEV3#z^}Cmo5&zIIIԦMR ^=zD̢'׋;N:IM6>fqyEEVssYK'C@fϲm|ѳcysqq~bcce{߿ ѻq :*UH*T!C+I˗SZ]˻G_NFժUmӧ;I6p-}:rd:.\XTlY*^O L92 h1WҥKdr?x[u+VL9ѣGK E G"Eh uRppP':oO%J}d:gC}}裁r}Xo:L5=^=-[J.]P͚5ҥK|Y!z,[:uREs4`-u ǎ.\H9ciذЩ'ǨP;zC11gd>>.-Jw#O/\N?&MsŜڇDƏG[ݲLhРMZ֏?,Ç̙v2̙-wq7no:ud~򹴛1Μ>EGC,><ɑnޠQE|-7w+kuYG H]~{[7o^EGEIGb\+PMZ͓믿N J22*z!3xDXLIQ3e.{̳h;."YiDJDɓ'd|rћ9}JDBۄƑ6NSo]]Yf4<[*z˖-o%ݻw%ҐY33gNi6TIZN7w\z?O8NÇ +wm2,z45k*ߒxE##/z͖eH\unFEoҍt|:,XVZ%z1'b>W,{N^SD*\n4ϦA-:UEEY:y^Vh}/]b7ȧ|saF ArK%tTs/)Il͋*+}tw}f})'׏hԈKko^zMKA;_vUdӹR[[lsjyTRjJu6]J=eYˊ~|8¶r ^'ZkDٵq4qM]&ː_U}DWƎp\Z`Y,zͦʕ&;iقI&(2eH*+k7\rSj۵Koo/پCE UjX4y*^dIdx/۵kWv?ݨQ$S'=^e~B> 'Mx14|@NNA z@ =CMmZ ٶEU@=졈>޹ӊ(EAA*zCYt D/w%z4ݲ,Yѝ"#4tw-[Ы*D/%$>zWX B͚5%wK~zꩉ?џIY~-DGE;?cE +/gxet R<^ev׎ UEoۖ@׷+[:thO@𒉞g?M8i۶6iTa=@r(QVzjvL5"'G{ڹ}H?Uf|IkDΙ- D/'1uAh@yW*vZԥ5kN+yiْ_t ^D@6޽t^7݄rKOM z-zgى=x M0A"y˗/yQDlwq:zr {Ar@EX\\\ߦX_Nd)RF NjՒZ׭[!CSռ{*Z7l؀J,I]tI 3 h1VҥKr]2Z… СCdŋG [q&/24iAIв掏>{Cr\OF^\hС *ȹv56&e>MӾ;~ '^HpDzDŮe˖/f͚tҥTQ>KEOŋI?nXneQS꺁cGiY($ל*zX8,$lqԺu+ -yA>6Y5Nw߷7o.rcy7(d67*z掏>,v3fЙӧCc{d_MhK:uRΝ;ӀRp:q4"DbΜ"o7FtLdE?5h@l۳TEDS/,cMr(PBKD/&ޭA ӻGJ{׻w/^%h9Oӿ$5ٛ;y!=@SX(VL*W hg#l{ҥK+eEU|g"rڷDEK(Nڵk%= D$zw^"y!z=@ z=@ z=@ zNvA5jP͚5}-%[n/7zd٬&̋^WE/8EoyZjԺu+j޼95hP֮qr2,D.ݢ(˙ǯxcܛ-r]p.csy{ѩD z9Kp,T]vm[R;FdɒԩS'*U/_맜ë&L7_+|p᳋,Q"o42Q…_~J/u<ݵuF .i^'HfO;w˻n>P=U2$znAׯ%uk@{2ߟ^y~Ӧ)|>15k֤ݻQժUeӑ#-o%iӦNvl<$},|r9lPIc)\GTQ7'^uXgB}$ۜ=ٳܹԢE … QPPQ;y⸤qR3t`Lr$@ʵՙשW 1d{6x{Idh%T۩S6)I:Dτ蹹!z*==Dt:v`TU?-3M*U4./6e8XHm~ʕ^``D4iEizATP!Z} zD>|{iZ3&Gœ׊t%]}^}U)Ø0p+>UY<ʗYʌ}'f2ы4:*אq=]&[m[ G8mFEoFdڶ}}6|cuVE/0WYX۷kKksac2ILL$gggJNNͅ]N\DZy\.zޞY&z1gNIzxX=Mn{QMIW=E (@};GDMM `y6ei:c+WP۶mr Hޡe˖o-ˑOc/ġg̔s9*;V.更uHԎmvMEo?}Q"i 6Çi}xl#T"w^+lJbZ5sNiӚ/Nڵj/?#͞e'bT7a9˗/yQ5'z< :((RYc(EXùXe+n 4Ӣ"M"u߿D{=i Ļ2d0/_^$">ctz68Ж>9Ro'ܒ&`Bikk\? nE>q s-=in,#2u֥ -V|}9mUV-Pܸ~ QQp}v56Cu3$>t9G :pڷ7OFH#..AnܶKK8/٤I.曻L;o^G/u=z]V(HY-cB&L/ivv3WϞA9n@ z/صlRu҅j֬I.]JDb\A>0l;7n=atQ&.N{̏?ZnEa&ڱCٖz~7ΝǏQ5y<ׯ/֗7nHĩ'f^N-otB_T`AԩrM_:w\zf,JɑnޠQE t݌t):rb0jd(fn[接>Ʈ8/ m=rX$\w]s]=N?:H3g<̙-ߓmXD.X 7rW>nWchq~]7@ zE/[~ z!zQeAdkggߞ%rtqa:gq_/լyUVݼy2~:zEvxGs&0ȏ?$ ϧo%[HZ}fk&/"j5ng1Dp+K(IMzfIs$Gudiq4tHO6򲜦n/=uD8i d'OÆI*%2u, ayJ7|pyf9snh?[r}W8*Oe@r{mn= ]ϛ-#j˞nϸOؿOܬ^J!ި7g]P͸ȨK3 >pj3)7mvm s)|O.9_7Ӛ S7KDqdȒ뎠J>'gL&ecaɶ#z殏̜C>^3w͙%׷saj8;RnD/'=~6^{.>>>J%%Õ͉G+M`&IqD/ȹߜLF͖ՓOe%%Rd}xG5xƏP#zR~DжK]>pf8M1 176nܘ&N>fb~7|knyU4̶#z殏̞}x`_,{Gg3=Ke\U-EA^2 S_u6;siтygVXZ5j(x!7Ooڔ)G9@|TF7]y(AFUJ+a>|䲢")2;247Zn(kvRGXʕ+'"Z`i݌ }|s7J>m Α!9}x;,b˘VzDb(eעET噻L{zEϒ[\=Ep{D/9^Yg~ïKφVɲ[ۼ UT,^-t^HpD z=}H7>A=^D/)EBc"v=F$͵W%=~?s D/J^qZr]d=P nZ?71>|D@.iuA`х<уEI уˁy>~\|D/?o1 |5c*ӧO z.z|~X|}iws!zD/weKi_ޗB8ZgѣG=~Y_E͛7[lIYRW+V>}y+5~rz@4=܌ޞP^p*S4fVE"Y\E/dkgFx}_o޼91[n|\5mT^ɑ=BǏ%Md:+^F ?~r]wn+̅ӯS'@=ڵkѧ̒9;{"LQY"z,o{BwY͞egq$o%7mTjР"|7[C˵_@DzcA{eKޭ]V^"`;wl}QYt0cKEj*26t(UT*T@C VX-H"4bpU4rt088HQe~L#N  Sٲee9U^{5i~9m=ZeW,_n9z1Tr%YV~/I];eQQϾ`OW_\\˴.asD;&EeWϞ"zy}F~2*VHJ>{1EX&M@5-'jݺ&z|~TDqj߾[ ,H5k 5N豌}6S\R[._>TZ5*Xը^~D#Ca)_\TsuYG-7W_-Fʕ}z[]tQ\3ԩS'Yܹ3 0@2ƍ+rw :ugy2! ЉǤTwXD3dӑ#)2r/͙3[X$ -euЁ X5jHh}1T?DhKH7)z,kyb24cԧ#EGwnwiC*BƢ7\n,XkVnЪڱ]#t,z=mz=fZv mJASEoA"NʺAFE+7v'{i/^5M,ϵNEӦLN%z܄=O((7{e*zWc~߭xʛ7/틎8i53$r\7ZWu+eCiꜨaQFŢ[V c‘/rNʐeD -gh=̙i[Ut ݽKf6D@=?/}Ι-͝[S*zVLcDGMI mVxXvlKؗ!,i,zwTnDNQ@vڒ.z͖|ʝ2yhr>1Bh>|FUʹk__2e+*rc5I&J.or @=~`gqԱcxw= :*W,a֭C]/ .GŪWᑹ|C__ZFu hW"؍h-U(_(bo6[haѮZBnF!9z . _ %|o ζ)uq(P >G&zF]Y%zv3S!z=-zmf׹FGGm[L0ڰˮ}-kٵeU: RA B'BH#$QZ =ԄFy?l&ɤL]}f&gNN3ON3;e=PBoaX9pޙic<̥OKM6\Yw6nqb8Bzm}u[z=BGz =B4[(Gzq1VI̮&=B4 󑐠y;C|QM=Pd-z=z#@C =x1BW;y$jk׭';v(j'|MzwOCB N$=@z =Bzj;Ukawy y$"<[ly|UB/",LCoP[6oE_o+%L09z+-|XiYS {キX8_|r uh7uz:}~ *zEwn"Io۰~m]jwBE[o?.]vOWh #B<ފmUz*wHZ+ǴmFr%]w)^&&+:y9nuZ?~5;Yn[;u@6شbmƍG~vá]7F%ְEVYӏ;I|1i54ڢW2:ntqhw^:}'$,d п·ޡ|6 /Jygd?kL|]a_||^ӦMe˖=bvvkpv;@c=դerR[2T44:C?^fEmm@9+zp]4444i"s w݆ϯw=7$ ỳ?iSʠ/0xR'Æ 5)j =u]wɛo!v]>I.ӧL6Mr͜/!B9%ʺJeBoaD*ln[rxͪ"nQ-j J^{<>>>Bnw6=CiiG֯_g K@} zzzrEeBOcMM2^^i۶7BYtvHiĕmU^8'xB[;~ z׮6?{VEBOl\z{>wtɯ˭JRbʇ: rO(eԷBi>ي3}T8kgKSk塇wx"sfd„_+z-rzF~ w:z;˔ɓ͵Ǣv@# h~fU} =gYECoYz_Op4u&wy\tEr-7ӭ{@իeyN Ǐ j.C%+3Qڪ?Z\ tZ>Hi?U*Am7s4sK.X5[|a"u)loK%Gz\6ל \yyVz`,{ 8+uHHfVcn!۷Dvj- '=ԇ8(ȸ1}^;tJ]g;z-y۷ˬӭ.I3g_:}:9l$y e"L|z.֥߈Hkdef'9KOKCs05K9p@֯[##;ɟK].Tݒ+)91A nN ~k ;BCݓf^_Q7`0qq6}/!evĖdW  @? 'sT@+ϓI\믗.LңǧDRz1^zz QGʮR/z4Ā%cIO :B{`!G2zHڴk%ڴ(>F;|do?3GUާvG}TN"+AvlfhK{jy꜖؛-QΫ7rB`4ĭVzBV{BBFl.RЛ5}:yҜQZː=d] gϔ;}~gw;.۟z 1}Ind'ɉĭNrj:%:Bzznӡ[X};z^+fWmDD*?~o9&p `ҴiS袋y{ev_uUNK?֘*-tz;~`T{$;+ԯǗ6ͣm~l.ӟ(+/+fɯޞd mgIO,Iۿ=HRddžInrw_{䦌z_Z֭u![-qqliJ =OYW}K/o]Fa}/95g^D. RsaF2oB˛VyϞ%iF_"m۶-*e{Y[thץ*|̀?/˻^|l,k|Ѩyo3-3zI\/㭘;c7FZNGBvczn3׽m7{ ^<*?gIQӦNЋ 1WYXκոsu(<Yݖ1p*kVUBk׬6q[j9۵k_ovz 1_}[DF'9DŽN_=s;v;r䰹\Im۽!]Vm^N;++^bBJ[e%dAy!n6eSuM5?5D n8Ź-zNos(J>yw4q{8zׄhTkD$ʱI7ۚGr-z7z?|\^il>Zz Vײus9z$Z}[ty7|عiԇ-zEwݮqyѬn{АغAStkMK.ӦY4s_EB52~:C崙?H}|yno{ `0H}Ql~_#/Oj)';V[qrzG9G/ =6ׯgGֳwbר =G-{uPnFwyGn* =f̕W^ioْEr뭷?\~&\>UڿޚƵ\##ew׭NUob;}[aruʅ^hk8a| 7|\bEOB6ltM7>fǤL5[85%=C~istCs<ߒŋ5Jlg)E6DF#<"}._޼ۛGGB.G14(I/[6#)LF?"KVsr&$ ӥޗAB쾵)zw:YjDF,ugڥƚ5Ks|rz}#s0}hHXT~)ii-t$?YXгݾhamL}ַy߲y9СvJwQzǎ?o5` H&MF+_xy ?q}|mP-zzuI[n)7MKo[h{regjp 7<=B _޼ۛGGB.uK14N`EMy٪WICҶSN,{6n0%RQ^^WtM^eAiJˏA6lA"7WJ|7=3x1V-oO׿KɖS&ݲM\&aVmIiLh-[خ[[vF[cЊ3ma_f7B 3]iTg腇-[ݏolڟ`4qd#{6ي%yC3IIm'k̸%7elKƞHX,_$a^i,`wlfY7D߼@˼`aO7&{}iS&Yy4[SSECO4gez}o]}Յ<#lMyhxHcV]oBO8B%Kez"Y^_= FM&sUҺ4?Lsdg6c[nŜp=ȫR+SrWw7Gniau,B`0Cee4G2<,T<=Di착&֟-=z QWٳge`^zFKO;hfT/U: Ns(c =B>S&իXs3 #!>NƏ-i>iN` =a2\ZFjV\WjC 㨇$77L)) ^Jיv'.7=4j^°R# +Z&|?N*K7#ƎNƍAeN'S'Ol0$]g=su> V;膯c͟ ^0#`_ Q^躲-y6yy-*Jf͘.1ѦtK_C,:&L qqXKv?ۺydfzpl\z==ݕ)XߢY3t7K#s7%CO;#vwz\yݒV"=T)zhlQ/B ,bI̮&=^я@;F/?\j.ϥg>T#!Awxz^f,u#!gF!/3ni!۷D.? *z!Afn٢y%rsaӺ~dMu3bmɋ޾\God9sӯw)usnٴɜB =@ɒkWˈHkdef'9KOKCs05K9p@֯[cmg2/PuKF^M_991Abzc:,ԿN6n-% +nӧw(nuWjMl+);+KZ}u#И7f0 c#==D\y۴dgK\k~n= =B %`0 CuFcAXtޯym#@1 F zzzIz[(1X*~/! ]1zbl2xHw09-;=BC=Y3 o#nTV}Qu^U;}sX+"JHx4:]k*h+B^__[mO} >HF-9992bĈ:B_rrr-U^uM9s|3]- _fh*Kƒy3~%Gu^Y6BeiJZiQ&}>v` y~z3J.""djB+z # =g?c-$YvrwmU,YK{rwwJ^=Ã5:9l;~}STyyyUf餦ʿ*ϟ3ίη#*_ѐ[š#Zٻ Y1 JeCoirI;ZZː=d] g]cs>iտӐ ebvW +zp֬&J [mqu"Tͣ=l޴la3a.۟ _N^s֨]W[,2%I⺍''2KV :Q BNGnYtcszpBOw}X͝%^zǮ[GTM涔~x.2ݻ\rUW>NuQn&:Xaأǧ rJ۶mfefHϞ=̖D}?csZV:tz~~(=NKRꫯ7K ʝ?۸{dO]w%e^7o^lZ{bP+5+VTjt4kL>sx=O>rz(z>^r-붬*ٹsjJ?/xg4-y, %i}r`7gI0M.kܔqvCCz;#ݺ.d ?..-s>^>OT7iuq1 Co;F-n3e]*]>l^ n7o-Kn0iٰ~macB^hHz~>_jikiٲEu "#VlAݨQ͝u7vښؿoӦM!Tzo꧕^ڷnYt$'%-G /GBz?ˠA#۶n˗7zA׭d%ccN:ebc˖-Bjԩ&oBEEcIc8Zvڙ({nk1_*zɓ' ;qy;nZ>rh >]JJ g}ܷo>[%=={WmvtJVӂ .݄yZoٖ~777lS\Z2ʛҾ>;V<({) FCgOɾmHZSr&ROC-%q}d$bi; =cstmK 3g8?rr5bwЛ>m =Zwu׉Bo) X~qS9 q1&} YraR2/;W=S&& {i&t*KGp'c4iĄM@ .@6nPxFަ[Ɋ~^è֘ҠTUiӦm4o ]] K0CC-z?zc*-ve6/>>~XoӭL%?_h:t_#C$-r+z-Os = :4fwfWkbB\BO#L#=2 (5l'ch ϚU?6S-[0v{1zVZ=\u[K< 8W4?v0ZeBkiS{LyѲdbs)=qW26 1P^޽9̶P%݁}~igʦYvRhv::兞m~y3ϥ=ζYOd8r䈉̟mBBBL@i_]<;\+z cߜb;^hh#qoS9D^j#O9d?'gzIº;]j}9hnt [ߙҫw[s|>xzNUJd k}f]Xfxx/a6ɭZOnoEC/ 0 +_}I z_c֮Ye1zN1zz^o5&~`Lbq&WÆc7_ӨBOcڙ3R3~۵kWsܑ.+=Ow枾qTO(+o>r嗛/zBDEBOOP{ o+o^z%?Qxm/'her ^慴S3׵fiڄFEBoc:sB{ K-eӆbu׆^YwhjB߬2ZF׭ˡ[䢾:w1'S$ٳV,IHj;_sd=/)c%]*4lƏFe POcA[f 5 Y&Z͔ 1u ֿssO2}3x z΄u˱Boem<d+W[r, bxHcV]oBO8B%Kez"Yszp~腇 =BzY }W B#*?4ڷoo`0j~۫2k^M}y窤u7%h~fɮ-z BB`0meetХPАfZ:͒6uDBG1 FE^r`^zF+;&t:-fPz}Y3LWf0 GB|;ڼai>iA2rPⲽKCC 㨇\3zJu殝;ɟ =mo0uG#}{'|?N*K7#ƎNƍAeN'S'Ol0$]g=su> V;ɩ5)ƚ?9^ν`pBC}.FzΣʲɶ(5cDG&-m6 ugw'')!.Ncc~kug[7ot޲E&=B(/7^OOwqsJ?ַ(cL=ͮ|H`1SSmC/>.<8fv@c׵mcSV>G薼 г^xH/wTBTǻUU) =B~^~JM](YK=|#􄩃EOCוt$[=q˳[gm7\D"ʢ%߰%!?M)tz@1 FqaqTb}ۈKdJĸ=&ۊcwꔜ={}u>2qs{7eЗ]UOYvi抷;G#  *_=*K{I⼎V = ?_|W٧"ckQ2{q6JVNZ&O..2iz^;s<"`t^Dmtu pՓc0j)ZHATޗ%=f&J=޳m #iӮjӢL}𑽥΄WXarٷwOSTl.yD__X]ᩡ7rB`4ĭVzBV{BBFl.RЛ5}:yҜQZː=d] gϔ;}~gw;޽{_/W]uU4?4mT."e^@@k4{dge9%o+Kl#rs&MH?4y饗ʽ+-mcsȟGY|Ybz{Y3Ʒ%%=$mOlFl"I&%~52n}=|hBcw[օle~Χ+5`e)O+oݨQ uvzOc 0KM4gϒ̌tٴq/mV)4>eҥ}V3?~ܳgw1vJ{)sY5e}em9b;]65>hT<ٷIyJ_ ə~rhtٿe$V̝z#u#wq1~ =G޶Л=sGUbǭ=ҦML#ő݋liǕfiXf#ʄޡ|eO+o/=5r;u;붼y  #oS$g;"gcǎ9zGb9ڶ{Cv.][ٝvVVFB>B]G8AWt}}|77m[K{2->>R[" +o~ 7zׄhTkD$ʱI7ۚGr-z7z?|\^il>Zz Vײus9z$&[ JOO~|·۝v[=xɋ/ 7|߷nxjeo7mK.DO&is*zzpڼ֮ #]^x,+:}cuޘQz ь]OL5ߑr"c'ws4orxۺmLpZ|Qzza={/6m} *_^uo3ޒob_O'L5[J ==Lc'""׿_rC}LM1'<#ҧO6ujc =.p:tEH馛L1zzau^i[no9:zG14(I/[6#)LF?"KVsr&$ ӥޗAB쾵)zw:YjDF,ugڥƚ5Ks|V *]0y-ruי ňnӸ*: =U} p3RuzríRf2h9^+mE؋/Xs>YݻbWπ_ZW:\gz 17Xw$EbFU#˞ML~ihuzunճY,H6mZiQ6?Ȇ?HP &s'^s^qVY<ƊE ^)w)92}dBЫj:y֭5Wulڟ`4qd#{6ي%yC3IIm'k̸%7elKƞHX,_$a^i,`wlfY7D߼@˼`aO7&{}iS&YᶯGz#R2ˎX3F9N>VmE&ԉ#-Z$\F .eeeɲyxI,Z/BK"_#|GHX\+Jh,#wm+֭.zٳʆ^7G5MzbB|9Nπ7nl=WB`0*4$ GBoymcm-:+cǺHP ϒ fKHzJXcns$0pL?)3IH>sv =BPOwL϶^_c0 FѿorCgM}y窤u7%h~ffz *f*^ULKYNHz =8{ ס˶BOwsiUi4>r?#C/-UfL$kWb`08?v/^z`VVC͊KJm8~P^^梞̐ԔG/G];wɓ?zL$ cGX+hh+B;\/]"ߌJ;;7:aL<Гty̙r+;K5)ƚ?9^`2GҿJuueY[l d[T̚1]b{6XY_ʔ'1;v?ۺydfzpl\z==ݕ)XߢY3t7K#s{7 !=PQz];;=f=B#Gz=T*zkp(z (~ @z#=@=@@z#=@=@@z#=@=@@z#=@=@@z#=@=@@z#=@=@@z#=@2=zjGzzhv0#Bi) =B4D#=@=@@z#=@=@@z#=@=P'B`B=P#@=9Jy{~NzGB @B =BGB @B =BGB @B =BGB @B =BGB @B =BGB @B =B޲ bX^C|"Bz QѸ#Gz =Bz Bz=B#GzÇ $` WC/+3XP!y*~ޞ^]! ز\>:uPɡ|T5/)!V- j%'K<b/Mj֙RSˁ{P؋r۷[$'5{w[NF# V$%I2ERb$Ś؝Pl7.WBZa!fӫ~#92PHǴlҼo u,x>}n o߾)դIܹyW_-|=zV6gN'T(]lcs-I?CeID뭷̮ʾFIJ_N(=#2yd-YDJ}%COîm۶&j !S«7?V#W?}<3as?رc?zn>?tDGGc&PWCϙN:T;MG/.]e]vަk=sYgff=##ƍ.ecki޽lm{ ?W_~iYj ʼFd9sW\arssr)zzLmVlzY˱ZCȑta\8޷}68Kg͚Յ͗Mݶ~:Ku!mֲ$T4˕kƬuz~j 7+zz饗dʔ={v߬Z[:cY===ϱڵ\/~uXpt*Yz:urw_ffY.w'ަHo /P .)+7zCsLK{҅mrK+u_Y*yXĄxmJuCϙ^_vס[z+fK~G>[ȆHsPf>ul9u2buoj"s(g9,~{bճgir7u=d.]@_VI&Mr%ˊLEDӿ_bu%_cW_}U|Y$IZȚXօWpF^{KʔG}Tyak]ػgwǗ\宱]_:rrekhuΤ 3jf;t98K/VNPm9N^-6 >7tg]*7;KMd%"sƺwI֍E $/.V6nd>}j}eB^M}d^@y>*sf,q-֕|ӏ65Jt{[H۵m[5T5&uЫ^{J~u.?"{v'ؒ\e?./O5אcaD/@]mW>T7kM9/` ^A_oVv׽ u69meVYzzD=F7YgficmX6׹ڔ1^%#UN z S'M$T,jy[z2ոy6` ކ:W[ֶKBU5/˶~rsQz*z{eYܲ.z,5z~u^٬#TL0NO\-m]櫃92q!R u/˺fuNNDŧKتXEJw?fe3&HN '˰iv 0s^Q?!99z %eۓlq[ѳdxPc[c^u,kaW9LO(p6};]˯ȫp =z @C 7IҐbz+IENDB`geany-1.23.1+dfsg/doc/images/pref_dialog_edit_display.png0000644000175000017500000013425012146146075023610 0ustar hyperairhyperairPNG  IHDRzaֻTsBIT|dtEXtSoftwaregnome-screenshot>:IDATxXׇ{&DMDcI[IbL {"**t 6{`5Ĝouo՝{gܹ3rC3g6;^ϥ;wP||<^x^xᕾ^p;ɻ>={?HG=yݻKΝ;EH韐q=z97oL `=hÇ{ ( 4bŊ ŋիA(d}KPURf̘vhcz$D=777Zt)uU/}&/h!ϛ7̙35ޣGA}xǯ'XYgϴhʐ!Ch0o|_Ҿ{ƍ~HFc0Iه>׏9ut(ZZ4oN>c5JMiFjT\9W6oMxw)ڼy39RL"c}͚5iÆ GjժQ=ĉ4`Uݽ{Wy~DFUV5M qt,l'NѣGr^hj->|X3>W022R8r3\G)_fDzgԩSe0?5jD&&KߺyVZ%]j} D7ו*^'s!ݜ/^G3MRxby߳gOڻw/۷̖go(jrhw#.ݽo 3/_-Ņ>sJ*I*6I݇2ق}2evZ4y$cARÆ %ϛѶmۤ[ D/z UM/cutxO`!b&__wQǏ-p:\'=`=hw-`E@]nߺ D@D@D@ zD罞֬\ .+(w:qrcr_GǎkW/S̵+M%r"]Qt.\oL Z4ܞ khDep[s i-жB,z3ݤ !z@2k 'Km~eO/?Wob=vNA[m^6"@<{!x%Z{v@o'mk5  #zWhR<^3'Y,z<3/Eo5jԐGs*W_~vHӢ;˺mdm~?Od.\NS!@a 9s"w+S׮]m]KB G"#h 0`={nҔ%=Ҵݼ"jS?OdL_4/~}КիhKpЩ#+&z,qu&7׵M W$;Mx)P9fZ q,,k!z 2с* i~@O<=2 OW._V7/Ҿ{I2׫W߻'߿/+')x)Q>1oд=2e˖|4c˕/B͕3'yoRDiఌ .HASn{PLD+"?uCXp*T(zo0ucVY;uDE!ۉa55pal۰~R#ضjt߇Q??| Oujצ]RMR<5ňɪ=4QR7t>XM:%AR\zlʹfE=D? FnDowNb_Ic۶%DoYTz5ʟ/"zxDC==4e{6#j֬"e4Ǐ16}DӞy~m˟'WiY}f ٶ-}=$<5TGzޣ r0*A -^6h`pݻvQfi%KY˕+Ӈ ,HyQ~)w 5kVX1Gu/}s87`Ҭ)bR;*|ܱݤqپd S_gaHK )bwțm|s{|*':ɅՕO76)پiϷq,iAPʕLtsNJ=0jmD WZ5=ږN8.m۪ztqqt`>[S֭[|.Ow_k),t'9rF)$ޑ}̵ں_|9/3XciD !z,q[Ey?A~'|t~];*_6F՗-իVҮ2g1_hAիW''G{E"D.YdRVts_J>ޞSD/{;X5A>_N^QړW1͓Lx%pW˖'4u9g2o<|N-r9*7oY[FK+ur9h@*UdֽLT3@9ۥe)Rנǝ-Q89:؛\TJ*E-ȝ;sD)n[vLC'kC丹>WjmR3"z<0HTd  !({lYճ'8~x=^_]Bׇ JòܲeKZp?{Lh~114gZ܀ӦPڵ ?2x|abիg/J*WX"vQw/VQכ'xJ[4hP+7I5g{6Ci>nݶ3OSF ˴u`f]YRaiy>Iڶ5z-9_ѶI^A"W͝C76ѣGIŋolD+iN0pDOꈌ9:kVP#ɓEOX @=qӯ.%7];5>OԼ%_|k|I>9O]_O?Һp$#5,p]cmt롿rryK2,MgRρn̙3S^Im[u]&0]/RT2KcX |KWjmRsYV$A^ OGf͜ar{woE;$mΎhϏ-[Bq1Rnwnߤ… ӱcGG=Rh$h mdtGjԨ.TuS=Cu.A)R0}y3Zj~)#z8ᦶ`\kϤݴ ̢ti ra^i[,Z0hzǟN۾5`%+56)y <xx"ё*VH-7ǫ讧n7sL ڴ=JK/'I|g_=2~Ӷ.]D[K_|nh:duЁJ(!]Ǝ۴@=?ܸTuM<` s5=4/erqĂ[.뙪5RƑ(2_֭7'>.*Ò*X{&7G|ݨ%JN$+T(/Q=CeΗ~:~_D|Mmk5=k*z y`&\RJR&^~H=u˖-ExUV%wuZ)]FAnmmmD [n-4l0^>}zK=x6%0gX۷oѲ=R[6o L/1 z z/* X~0N`K&Z8a Oh/e yyYD8ߧ:u1x+6G06<3 q%$2׭7_>b&6o|C활s_׭ Pǔc.,WrږK?e v94W/Cu0uiSEx; SGp=t7wRmrM] zۿ?E˼}󦌱az[q+nm5K\ļ:y$1<3(ΓOsZ~Bt'tAf-e Is^Hʕ1mj%D4+z~*-2F&znwɓ %zk\ zY 襆zD* #h uzE;} @Ǐ+=-b{s^r@i/ZzF=鸭d ҴCU=i*g)"x mk-d4c zan|D^emk5dD 7`Ҩ蹺8ӃT=@ xpxsR=.ѣT=+2^o̧X'NK㢇3X:8ЖtݮA=}JI=-D(z݅AуAуAу@ zY"z^-zm߶孉=UPrM?oDm^YF^ҥO^7b"zB;~DoKplR)S&ހ[Xyѻsv^\{nT){TBZFDo񢅲.DN;B}bŊQ)"G9rP>`D'e,Ѷ6"zO w}ʖ)C D#={HJ>oTdEǏݩh"/_>)dҧݼ?];k.T|yO?6xMԨaر&zͨJF8;QDoY"~E8YXX kV8;-3dG]vYI<=^Ԯ]&z+WN$mˬ3捸Dr>כ(\mݬu(ݫD3gN<}{aR*\P" y֐v݆؞9sfE[9E+gϝM |ױCо=}ެH+5jPΡn޼yv==q) JJrDo"h5Wix{XYަFEO7ĉGIҳyy5;}&zG^GьMưTXeF=DTS{oX }Qֆ43Ð1%fFԭ[W*[DK*E>*^լIV4)zt3f49/K> wQΝ,N\o27?E,^L6FI[wnK'pQ]r|`+=~X"sK,ID"%KT"jeEL2ED![ͷPBEڶVw,z<1kTxq~sӜ1ަD/m^pP³{R DKǓ5[6C @ zͧ~*B\J 66m}e!RQ zU`/у1׮ǑX.&YZ| Do[0ŝ S;S?쩣BßE{6Ҟ+eO=m쩗Bo[{3ڞv8@u 9@Ah:* @+ @NvShTGU=͑Lw3id7ˑ&(5ۑ&q S:y4]a|Gf)YDs9ѼN4_a'Zԉ+,YDK^IɉV,wNJeZrINѕt]kŸhMܰ#z[6څiB?sa?ϞѳDHOL<~xeYz˖^D zvhkbe=[{nHGOtxE?~E{!w?z(vB 8n׭#DDt,p^<^q FE۸9G m :i3y1z:K^<ٔ蝽|S;2Hy_ 6!%2tNS=&5qL-RSѳۤDr 1 7= |4}q-?o?w%;"e:)]J>RԸ3@ z%zZ$z|nuޙK7bmoBho?Z[RSK+5Ο){-ѳP\˕+uهʕ+Oٳg +נQ\P>?]KPC}nΜ9!TPaʓ7-qX!ue*W7ӀjԸ ͛Oc>l(MD[L5wLߥ[*\5ljlc &ݢ-[ѐ0)F*3g>B^~ K4`P9F,)9M򍵗>L:ĹQ˵eR;}؋+NEvgnCתkA҄wN.yEN nhӗBDQ{R %/d~ʔ)8,Ǖoܹ;p,z 'p٨qSԥ{n"t^ec|P"#i׾h<}7J:/ȑOmҬ9͜1RǕqR }Vd9>RNFgϧkQ5fԙ]x UV<h}4)Z Ӕ.P{駙ksSu0_Gԭ/=x:tB~NGO |tCתk?S=DOG<ׯX^*ߌ)&#Pȝ7[ -[N+UsWnFQç3V M^/]e]]{_kڬM1W:F{h1Y>^g|b,.}0Tnty3͕exS|C觙jssu٫Yܽ+y'HGWմM[C%ԅuI6AL^7,@ޏc\RUrڵk=^'*2RU޾ĒQÍ?՛F=˓g̡j5j/[C#lOsu~a t-Z+r-w{۱D,=&c_괒>6/PP;r6KGxLPi:8v7u)Q>˚5r㕼QGմcgHG %9ۘ3"pXBW\\Lcb,{wK4;~թS;݈SK&O/3j-y3tSZ{\yIW$Kwswuz՗-[6:xl5*XĹKp$gYHGN][Un"AEcT9Wݓ+=~+7`e~i2Ӧ]{XjD_~ 󢰽r7ex-hrS?եWa5yEΚ/揜e };*ש{xoj !3iln=W_ߴ3o6M֣DWн4fDJ˟M@kJo1`_|IV*GDcg]|-?tJhܴ9Хdcתk?S=@ڐiFܾEFe&]n=D8BاOo*Q+VzE׮\DpJ yZnSn-Mc 4}D yc7[N`iȣggdTC s7O_eo˒eh6wU ;Nbt-9&qZyh{Xk5x  uEe빷:FoVm Y?_cEwF-7K/E/Z]hL2cGXqRS}Jn!t\$ {<%ԪovZ~zXѻ}떈wZ4ÐݺySfu ۷nhw`~M)yCZ_Hk|duהTbt[~z2y3nXvkS]uݞ:yBY֒+zǎ74ѻ0sQ^E/Zӗ⬎ јq;{u{6ڬiSʗ/S~R=WgA|"0!MZs:CԽ{7VNn]yp^hѢ&rgϜ9},ʕB I*CUT=~?d`GUTIgັrDR 6l@;BK͚[Zܚ5i:}P(g3~6^ +լQ`TwrEu۔ǎRTD$H.GB zFa?}Y#r J2eJxߍ8퉈#%#=jpY~4nXmڸQ:uHvv-ݺ8f˖MP7#O< Ac8Ƒ8KʷuX,=K\tlܹ8-mGcmZlYٳ3#z}x׭%ʈ/uHѮ=+ˌZK^ ݤQ+H GtQ>K,Ze\uʟ?l.\z\NM7x")AaẄaPJb$Y2̾{({toyDOwaRDywiyw2+z)Ѧy Kb=@@xSJ}߻'W6W6mG89Kci<~]"cX^x ??chaRD|Yx)Sϒ_ m:stG.1><4_]r/zDԟ:gK:yM2|ևūzj2Ίg{rۺu&B?3,rEYۄƌ-;uEE y*S&MTɒ6ܝٿ*]L@I ڶMPlVeg+Lx> m6L~R/WnD보],_7Ѧ-[ ȾxƶS5>[pk|]a"ah A^CEpܹs$D5DO}ۄcN8!cy6=Dc|}}$ݵ<. +=/w׷"zըaCࠍ^Ds"J{ ,Z,zNSD)^zAuBKݹs;M%],h|/~Xm6;l&znT^] -^ zxwf\t"EO^TNmrs]KԠ~}jw.!z轭1z,raEI\),txUJ,)eR|<ߚ%vۖ`AFԩc*R05k֔VX@=/!z~>qӂ66j-]; z%˗/MD1z_hAիW''G{ں9|7?UlmFҊN"aFZѻyB^4uуh%Ǐ[$zwܦ Sp2ӹF4x ?w tA1WI$_*ҪݿD=+MMK2 Hjբŋm[)`pt)F{-Z=-;zj׮/iG%Qxk=+cm-=) R@DZ_DISEB%תU+{w!̙3SժUh`mkWO2iXbuW\ӧIn.]h|mDН?ۛعznw .Yp׮]kv}7kT&6?qwx޽yRF\O*Piy2d07|-DDԣǏ"Jeʔ&LH$ q:C"*ժU֭+5o\ -ZD"0Oe޾\r '܍ W*U +K3q~ 6!e d|[:~(EEH$\r'GC{O?TL_f5B#1̡A|JtnZG=^=g5ʕ+PXX(eʔ)~7$j'"Bˏ48Qٳg)'Ӹqc%JiFIԱ#ٍ7ut{sDxJ\Dx<Ñ>cٲeg"zy\>G72./^/.6Vc'$ zt zϞ=HFnpTֆJ*eTtӎ9,u"YP8MNm5iI4t诲]Txq3&z'5kN:_{1LNXAE&O/3j-y3t KĉEe=~%KǙϟ_ujlJh;5id}}rEO7GՒv\+|_|ɠl&]۷wt<Α߷NX|Aҿ7)xO:ܿwOlNڴVX[R1DԮSv!=݆q4f(-5e٢ 'UxL!/_zEJm~슟DXȼ<ӥ+#fAUE,nܭo <ǢǓan#~WTz5)cTyLNX8~]PD/^8=N@ӧL@?"x,w[g81,,bEI݆e ߭3Z$Gk KO1ÆFsҥKk(xJ%o<٣]۶FײeK*Pt,_6VxmTy<'R%Kj7xGYyڕ:bp]Cޞv3Y)zFx !9z \>@o[ EESoM={Wgz =&zCD@YDV(z~-]у ޹3'-=@ zHw餉?{ DDDуgy D?Ϣ RD,? 'z7b_' s˿{mcIcqT\*G8~D5sE6#~7?)כ?Kٮ-A"do6OW||ތݹs;͈XΝhѢTpaSGڻ'\}NJZѢEߡC{ˤ蹯szRMuuE[k9r䠰Н͕+ۗ*T T\[7oHWtɒ%Dlv\F\,1ʔ) uݚ+?Æ&u-K6kִ)˗O_?|a@zS)z^iFX2eʔ(GY`acD ",lzo08m-[63#z/]=~`1k„DR >Mݻwjժjt֕7o\-Zh"wiʚ5+>uRyrQB\\VQ*UdPrD2X"ܕÆ (dlm?oLX[X}X9GVj֨AAAt0*RYw{ޏ ?v"$pMN1zmV uh^׭eޮНk{mG/&NxٌI+;Jdoq".{#vÄ 3+W g݈ GKGԨٳɓiܸ۴quؑ'{2~nx GXxl3`yŽ)7?W#c&c*#s疺;eRϞ=DE 4!z,WqN"E$"${!zYS-Zd (@K/ք()cڵW"v!/&שS'ڍ=ocx=7uʔD3gL.p#r۝_DK!z_|7?uf7Ζ&1u>e"=իɸ41]n֙ qEYJx@46ỵ1cFKJk lӺudw}ߟJ.-]<]۶&'Z]"ݩ< ۵i&Tdd~ 8u&oٲ0 к@=SBҷǿ1x1siYv|-ѳ6sȳуA@:QO8!(y&=Dc|}}$ݵ<?~D@= I@?Di]X,z"_=Ҧ;w*ywQrwGE z=-S.YẆ=i*gZr9H! zx)7t"+=Wgz w1>zD5Tq/ϓ=+=>W~>^d3wSs|k=@ҹa{ {ݽ{VXA4uD=+={]t7nL%KD۴`|_>.\rI5WIg_ՋwޡiKrGƗ@ z躽lTݻG5RJҥK4n,&4h ժU/ZD۷mQsgӌTޝ۷DDg]7~ÇСC%pBYH9+X Og-w!:|>N z,z,o...ze0uYN}Y"zZZ?wQSɜ93UZl։vM%JbŊQ^=k͘>M[&K.k#G ݙ\rQ}B RNʕ)00@˿utE,YBĶk׮u|h+T}}ٲeo{Oc4`7w/Rd\WGժUS˖-E+՝ڇU͛7m٬iS)_?|D^DŮ^z2.|t…DQ>KDԣǏ"4eʔ&LH$p:CԽ{7unݺR͕ТE M8J5kV:},ʕB I,*U5C nPJ*i<ưa#dlyfr̦"3'z~y`?m+˿3޽K[^Dy퍸X9,֝:e뱣Gt>?66tQk$Q+W L2%%u7&zTxq/R袧uMn"o6%XM8^fԪ/vM~Xy̗%Ǣ.݈ϒ%\{ w]Ɵv<>OԤqc1ۛ,p=DLǹr7=2n;ZRwsU82$g.×)Xݹs;D%QŨ@ԡtP)tRe˖;wn*R 4z%7{P>u$MrA$yy{ȗ)w}ʖ)C ћ=s+豜;-ZD`[5s]Bu~*ѥJ;u&E~"KT{DMo+YSƟQ@Zx&4I=k׮M~~%۷wyyO豠d ]Sn#$6o7-4 uzzS:KnCwlu߈YBmQL͡B jǏN?uYg~?`ŢbqCctElE6=q޼eW}zo0*zAJꬊt 6mҘ;ڧ=DH1;q18uE}t>tP=UEW9K&W=7U"vihn2ۈ(*?21_Rү]Z$jKpp^lћ;{.z׷6F'NLTNqY)h+z;_tΚ9w5omt mO^iy1Ido12jWhDKxϢrrJ-z*%J/Q7U  լYS="?/U ~ءL"PEܷOoGXxqZYD/t6ڥL`QPV,z~=k=>W~>^d3wS,z"_-z|~X>yB^wޥ+VP||.\rI5WIg_Xs` Ǐ/YHẆ=i*gZr9H!R֘ݻw5jDJKǏiXL9h@U-^oJfȢw-d =Duk+bD7tP-\P9gkN ,H:ⓑE3=xѳcysqq˗/ԅI$s"vkժtѽwJ̙j*esN̵ԧwo*Q8+Vz\K%oiRW2y]tіy|\9(,t-[z#FЀDRy"ER֬YB qС6y5(z۶nrQDx,ߺyCK,!ڵ`L>fMR|d۟3*o;`ذߤҐʕ+e9\2KҲqG!zV$z,vՓqy-[Ӆ E,˗.R?ML2ׄ DFNg;|(wFժU֭+5o\ -ZD"%OeޞEPBmi..J*ʅ}רhΜ1"ѣmeݻwx;3fjڹ#Eaʙ3|T:e#ގ"8{""<ذau>oLKw[CercG)*@"1NcYHoc ,rwaJ*K z=~WjU鲵}eܞ%r7D}ŋ_h8>T,=t znk]=+ˌZŲ׮];3qIݏe豨qG7dɢu)rce;vrzwjҸq&}{Pi%2-J4wӪ1"fəuRו˗R,zg߿H-?Up=y9k[y cnUBqS^yڽcRw(ٌ}Td!"KxyX,z'8]6JesY1w5O~t wRxrS= zуA ԙ8[hcVXW&cx'w[gFƑ*"EP S_`QmwkicƌqQg辮5γKy)OJX'X1rܭ[tiFڵmkVxL([l2KYMS;`./[.D z&z_1x1si]vtΜ:iԭJ@;Ee믾[:z\#뉊_^|CBŒ7qx_Sl->T]BZP<}A''][o_> )z qZXo(USR>{;\K,I ק תE#C%U֥=WMn6T\Y:wo z{0(z,k521Qѻ!/O:zRXN?,X*p*;r$GXC0&'G:w-!6nX\vuXWxxh>/~MSizػL%z=j$=vr=;۸a*_Y8-q,oN5Y-ۂy9}J^U]uv!yDJy[,y,p%J m[MjJSnosu1mq٤NݲiG {R[IؽèqsfKs豸{J׬% 1'wQaǢwߞϝɒ%X#zEcDYh;uH;@DoNDbr}4;腅^ym*s*.\69=[,v܎۲-z,kV=UCOI?Qɒ%$m @=O>Xzާ|BoْmuӧN~I-7ϩzjRNSv+%E[6+ugݥ^78wWʒ1{hjRGoODoϓh:KC ? @=09<,z-t+GІBjՒְM4?=n,pOOzz:9;;is!z@A=/=HJ{=ۯFΞ>)+|ŋP h)yZ8ZM;vcL;dWt81?JZp38y\~;f~('()Ąx3yfI~=3k5lH3M˩[}w]Сծ]ɓ'ǜ1~mZz5=r._(pL<׃QV IU^l%E/r^wm^-V!bC-?~DVZ%97G91.q68OA֘"zn}΍mA+z,o...j H^~DTSDO>TMO{a:޹M%ѰCfyȐs(F,6$^ہHһ/$^VM9bzW=;vԡu}grn3~8I=42/+[~ 5ɭ&M>tާ'kc"Znٽh"]kMs)5%Y0`r7{Dcck۶֭tm()EGu֥}ၫ/3pҥ<%tڕ%J:{ iFS3Oty:tO=]vK7"µ`|z岤?sEY8YZ]w/p| O~]E K4uV lvkkMsiܸԾ};:~,afA G%{͚53^g`qZr~ml្bŊљӧN:%8ZK8tCzhA" IIސ&NVT:y[ sD򒕴7q~ rf4j+gKr@r}c8rH,D ޳gϴdzAfNlDKWJt\?Gixf*L:@d~sdDžWhaTF I7SE'+ќ XxVWWjݺ/UR#z֫)zY;7{D/ -7ҢVaٳΖn}w֌ı@qF3b`U0#"戎v8o`zusgMS/:33G`x/ݳ$q:w#ǭKE@+lӜrR * m|D/w=-S(Z3p]\٘} Wg57O<\mי▩\)m㖤\N:,[ܒjժ"7z#H{7 s@pYZ 9G*O7H`޽q _o?=ծUKw+z\R x9*dgc5TYݦѣG68۴iS٣n^VD}Dߐp:x~~]Z^ꧮqD nb&z\.zC†rC=zуA wiPƭ^-[D/G!z=OOq5#S=+Ç zs"2у ޭH3E\AE/f8DDDD=;YT>ӲeR֭à#zޞ zVJ: x{Q.]n:   a2UR-D-D=kfRx铁Ku"u &zw.ziiw*z8*=HygrtnySTRjQ$vR0f [^G>^ݺu j㰡CZZ /{ɢJܙS{:u(_AǏt>\l4- ^f!ߛzF)բ7t`ziy數S&C31F26R+)z,ocRU=vRѢE=8Uvm<2e-.ԭ]=ؽ*g{>oOp#X=$ǏBP@Eo|-zܸ"+DzVxqZ^^}%tI-sDӻUREd<' z-zå]͚5e٢ǭn@^UTZl D mV*Y$D&z̘N ׷=z',rN")P ~Zh!UPfLj5S #zOY}Jɋ/^:a.U$5jԐfΘ&@^=m!zy]=@ z= z= xA z(-˛פIy[G^ԉ*UD+W޽z)[2m,o#=ze˖o(kO"Iʄc!6uG!zT8#$kQƍC˸|S=wai-M=C?.{衞gsrܨwu9:Ǒ;wowN'44uG}$¶oz)/D/ˢZi4"4 Qq/2թ]۬im;;;Lo2s6iHs͚5oLʥxm_jTlJ(!re4e!zr9u ǢuX\8ߣn+%oeٲD9f5h,<|ϲ@˜8 {} EQRbQM=䨮ouLw\=." -zܸ@sŋtnΎ:u(7odXa+^yOJmҥKSѢEzSƶ͍FT Y֬^MK/qZLFr?9 ϗ}6e!zr]8ۢO?T-J,\gƦ4| .U}5SE_rD9;nWjUZliD7!bǰ9EݥKE?~}Aa")ܪуs%o߾"zуgS5,Є-r.2Ϣo;v׮];=j]zEoώm/1~=oOwٞ%D׳wB]G=  QwR"sBXAѳin9$S=KKcuéFTW蛯 Ԣ}}7rUTI^Jςwj׮M]vPUR4?JǾ*V֙ӛխKJ j믨rJ~W~ =_Z/]L\]CfQ @=N˖)cCJɻ'INS|knUJ۞: )ӶOSyUnwmuJ?~:,)z^ z=ؽwB sD=F%hD%ǩDvjѢ9UPA/{v[KQ$w2m߿ Wniuѻ|M?vDoc=w1{I~G Y2ޞ]KCӧd_L zٯS˖-uf:/R1WDo&'K#i^iάǿ \ӧNt}ZB!z;w)x(@)z\nȐTV-iФqcOrE;ÆPٲen^_SԢGQҥSJ8ZM;v?vI+og{_cce]׮sޖz+r7uO޽K:tjɓ'ǜ1*IT~jX zDâ7"v>K$oժU#ys"z֐$t*7oD@kR$%B 豼{G111"uׯc +S >6l(&M>tNWVJ(!ps=nܼy3IwM"Lc֚ұmdEM2E:L7CZ֗\YWpDŮm۶R/W_۷okEL.ך>v;N:7n꺅+/ؔsN%zS '˨!7n,oߎ;*>ܙ z:K 쏇^DT׬Y3IΘ1z{^:z$2 RZ/+aҧޑÇ$v'UH%O/ܢ#<,HA ={LKDoNf=wӇhтtPE WPDo^8ի̚As3`\Z4a0ِ8q*_:B)z~>"_-z{!=ut14\@@А`(e;uDOs Do6Wr߽nv"MB@}KϺyR6'z>D&zb|!DD|uAPEmD(zDD=v)DPTrуу@ޞ,*zΧ%JPR2^>k.Y}ޞTH z!z,R/٭\%z,l*T˳,z,p'!z*MO[Qs;bc)9)I;B/zkWZe&*]DydݺI<ߗyA9@>EE/5="z\2_%zkV=t!㏲LXH tNgj߾sڋL*z7o4D_c҇f\$FR7it!9<W,_B?\sRN+/STRoӁ-n.~bc ٣mrmй3rdS18ZX1r߻[u߳SƱ"zjբ)_SD}+R8|;EbC"Wy1͜9Zl)0\'v'U~x>DGџAk H=@.Veʈ 2B*k7[ʃ@o; ,`*cq}$z>^ԻW/Iv99nשۼ-/p3V݊)BbO? sFw|>{fn߂ A"z{vZE"u6_GիW#-DdɒxI%z,aEՎ%̱];􊞪1)e)p7ctmܰ^)Ȱ :DCroR"Si̘SS0`] \”p4pq„ Jx>}*>b2F N 6 M4!}&%cW v7z(yx\jդ&>nnZcH]>?3u4P<;r5hЀN:%y'H9iV]P?u^86t(լYCy.6h)Tn]q}_{V*)zbYsfgݥ^`q}:z|qv@CiS͞ܨO (pr=XptE5k׮A0sܸ3ԦM ռƍr>~lΝiРOg Nj,z*-z/ ذ_*Ѹqcޒn\{:?|?~\$JڵkҍpPpYX9}Z=%or.^Pr^0>]r_S8puE" _7Y~,͛7#oo/(8eԆ ›1^ѣ$WbE͵ըQ,;s4HGժU_>tIq*AڵEYT~TByިQCZ,裏n GQٲe%a/_ʤݑ?\U Gd }q7"T,z[{;[zEEO$.n,ukʱk婼at$|)O$br]iJ7* \N8NV4BǑTSEO3R-@^wD[rē?y\hhvCS]ݳ[᪾ouu֭[?h Du=Zҳ,Mi׌6l8gE~?:x @ zV=Pp$~q]#䈒J8Rp/(+!?[TҜ^Ő(Xq$f]RGϝ=#ݮ8K_rR-ux8Yi\٪Ǹ/NJsDo=.^:O<ߏ?y -z %7R%NQz뭷h„UNV$ Q&~Xû WRCK$r"UpqǤYLٿN'U+D);dfΜfkǮyҕǫf|NԹBZe "G*YVaa"vkVVG}wM=Ir1^#Zu9̍U._|\O:i/@ zS]E3UT$ 3Jp4c)K{ĉ@c< =^M%-\AAvDPDЈ^i…=Ph^ 0˖-E z!zwޛ-[Ji=Pk5k*7=U@(Ԣ+,=2APD/4$XfvY@=y玲u#=Dуˑ.zzquQ"\:))A}uA$/)1N eiq͒EMfE촞Ο;#!Dу+4w|&&$"))[$%&Rb'!>@Gqf?DFF; Gz@ zJ$/i|TLXhܾ/\DX+ؘ >=76S,у+ׯ>XB?O<9. zD@QgϞiqYjԨ<#z,zADo)Hc(]FS5gΜJ*Q"E/ל@ zڢw+&L 3zpi\x_UB=DӱO<uFk:3ǫ'&ēƵ=D z}ˠǏ Sk9^H zD RS_6mPҥnP۶mˤ>sVܹCjew*/GQƍUV4uTw׻ΏM%))ALѤIrܸ._HW._"e>W-.X23o<̟T;w.=zĉȑ#a=T>}*׷$&&@=Lgj֬R$zq13c[5k֌|}} 9Oa'}IH z=3S6޵<ܥðCfTzu2d0xǩիG_|9-[V9u%m\JZjz2eЈéaÆZ裏Ͼ\ME޸a!tRO<}U/`=Tcdg* ~Dу'-۷" 7pҥtڕ-%хA4s >4gl:U;F.UNiF%9–zw>iiiknݚa=Vf&t9 z=E/6&Z<) *V9}Z=S2qdG2j(~y Ej֐͟?>SѼuQv膑 >[>oqALjժBth%+p=]k~7E+z}^:t@ SE{L%>ȆE߆6ћ4Rדfƍ1 z숞VD@ѻ#򖙨[:3Dу>y\JKZs z='?^j{doߢKA=vOEw7Sx>69o #s }o"\|ɪ襦P Uv=^Us%|:+oGz@ z]BKiq aV,VZUkqi#mݲoBJ|у+27S'p z=@ z=D۹@A=;DAZZ*$K+\r>Qެq z=`5&u3\jrrqvKuA"yW.] k( z֒dg2fDwϞWz@ zp#y,y]n(1!#Jq <$+S)zq1Ѹ=q)H R7- @ zo 'Dу+HJ/>;4n7ƀ z=`eKV^*?xss|J[=~9K!zDXWd4{kw3"Ld$)1[D AÕwnJW\_B7^A=a߹ChZ rE^Qk#捈Chu l=B˗=Ν\DX;ݲIh\gدZ)1KlXkON)7y^cǶmU..6!ք;hGTA E ɻ߷DD z z=D=D=D@=@ z= z= z zA zTH"ԦMi<ܤILJLĄx z^lڴTZ~{s|/_3wOOWlYہ4|04ko"F<3$z ĉdf M6MDzc5oތ+F&'{{嗙~Zm\}ճ?q{v2y?\]2K*;;nbڝTK/)S5k򪺋 7jժ"-DOtKݚ"z޽bթSG$j 6ݶoq{2y?ڶmKŋ۷"_7۳G2qI@D/!>llJkF׃5ʠ YZ8ZAv)SFDJbU51EX>I;C|G|\{Mޏ_~jժsNz\Ҕ} zG]/fKRZ9]TQB>4{|7&ݴpJ85hr͟7Ovշ^2hѢkd)μ]6?>=`Q:j7"%SEIh2}v2%O>԰:Fr?D~4t"XWA3W_#hUЄ"r 9zQcj\0ch 7PիiE4nXGڪU&)%択c":,Sܚ3xnPP֭bł.^K.ZbcI\l?%JHz#gZr ]vo:_匏F+2=&:J7utnk>=W/>=у=D/?s# уу z z=%zDD&%$P\t EߊQKIIr z ^jn݈}bbmTa%}h徥=(|*-[46;oț7(##CMNht3<>xPh/;(1!7SoC q62&-]8>D>G˗Ǐ{y>蜼L+BO9egcce׮ꝇ[VZ+lHH oBs2 WE[r gSY=fkN|B TVM9bzڐ!ZjTD nnZ4oLݺuӊԔd3GNJhu[==YDSLuj!z*R.TiW6D"VcQ1}:\ӡ~i[1rMi)+q4O%h,z3(zƍcGeڇ;ӠAQOg ^_q*\Δԭ-={,ˢw`~\իG3~r,}9|H"\P襧ݡ2eʈnQCU%KX"u %+mxq=<@O<βԱ:zvÇ 5jgu'?__ԺukjQuލp̂r]+LW.\kvwU݊5{c$JnEE TR"rΞa{{ǎ=ŋK=<;lERq&/3䕶K$j)ZUw)!s҂KO.pt_Fd[!!׳Bu<,Yʐdoc"g虳?W li3 uFzPrd^D*C/&*J;|W*nRI^sW_ĄxI ֛oJ&CK2Ν}./$2jhFfxxZǬftK_:1e>~zܘqriK/D{[\'O070ws:)ycekQ吕Fg>^<=7^pg+mHԎSyi:<ޏǏ%Lz},u{vH wҩcG[ ݫ{8VX׬yA.ToBSdORJVR3E 骃#|,F\~)h\i>f\,^ɓ&,z 7(oq9\t[q]7C%X׬^-8)e뼰tg.Gsϛ:^A ?&]eu:ٯZA'EL<?aڵjQtgȕؽ{w!qkRse~;V*ĭ5#=NrQ4lڴ)CNcJ)E>&W˳T4-E+W,LM=>~{YjM#-Du2?֭o]t۾2u^X3M /@ zVS,{OϤnxuLyFNriҀi8("䫐^~c&gz뭷PYvDPу|A$\o…(  ש5*wwdݺI<D>G˗Ǐ{&;0)BӦN9: A"!=<$jg3ecǎ|@:~=ѳq;݊iTnވ5vzPZ5Tzu:rD聜=n]ˍ.>ӧOeϟ]'{2?ѣE ˨xE ߿{bB<.]Z}ȐTZ5*Q5lؐv3_}KQV *17=PDP1O_&hٲ2|QR!! [Dx|z25hЀ*WLiwmⲙ6mNn!K4u)- ,ñ1wڕ:8ph2 A?@@='PֵnlٳgיH+ݾ)i:u];n? Ο7fM|q}z9sf.o?#[),e˖8^^=Q=@@dB Oc8;'ɓ׹eWfkT7҇;p 4~8riVWWjݺ5UTI:9a^f +4|0Q}Yw D,hLTwU݊5ֽJ_5ZΝ=C666RNSΝnHSp7nLvN;jTR`o/襦$K8Uj¾2\7ף z@toΐW.hU&u"y=4܊W)K"za׭e!ہ>mzܛ-[RhUq\K1yҤKo5kHK`%I:%p",)=9 4~LP4t_NmtMDdɒԬYSr۾7=ww)Y='gҍ 7:y #[wi\ z\ȦM[o,@ zyMenhBDWуA=@D=Dуу zr{w)>.EOf~'ci3D//^HUJV$tDK@~.GCwӀI"Ѽs/D/ލPڳc;*e/>.Z~ $6&"A$&07)FDyO5(܈pD `"C(<804.D/feo^*lL;BȞh.7Pp߽=Bȁ} ,}Ӹ\=k[P@5GҸ\&<,Zll-[)—½Ӹa"{=]l߂mafHcbB*Pp=zpB5 zD@D@@vDD1+z u :z z-zIIOqL)Y`6ܽe3eBaԵx:~x:}-Bh1S$$AىV._ `ՊɑΞ&Eb<\7()k<~;ҸEL\G:&=D/EDh=Eϟ?L$##n҆tIR$%0 9wEY\YRRR~]M!(k] r }KJp"#Q ",vlw(<F7(+SbCeˡQrQ:};ea#Y 7-t;&bޛs^uΕ51̲AlR-s9D'YH8)ɴEyC `ޛ3^uΕ57(f(HśZ^oE? +{u(+kMCe^^iR<&9sEY\YM^eDoͪRw ޛs9ћbNPyOed__[7o={EY\YDi3Y6`[ Kf=D/{Q9W= Iu}c'z# {/:gR,-zr(R,1?DD/'AAAr_sDZec;w.mۖJ.M+WvѡCrdTћ#WE/PƍTRT^=3f %$$ 2qYiUҲe z{xT*ZՉg4Kom@f^{'NH]t ҳgrW*kwy^{5rqq0 {pn>R,&'Oq?|ڴiC͛7'GL 4Ӝ_%z B~OnrKs@ TڵktԨQN8ѳg̘!Bq޽<,*7|Y&EEEi uؑFWXy>}} =c&L 7)4HLкʔ)C#F+T@C f:,ѳϏڷo/Ǐy7M|/5k[k7obn{Uu%/// >WN%JFz/LFHÇY 9đ(.=zH8Ȝ(^[oEV9T\9̢b7`cj/ˊޣGsD yROӧe|׮]iСObwҕ+W=@^=k{ ~D)5Ŝ*8N9::Y ηsN:s挤tgΜ)e xy97oJI&eסC:~8j\V9)z>A*[iR.>q:uhq-*zߓpa=zbb_]tQ}twEժUZj~}N#sYL~_Cw[7|V.9mqn2_h)cCޱ9m\儲&\Sg/ʋʝW0YUqp7Nmi3L*RZ0cv1'&@Bl3d7{s a7߳}oHc[nQז~P{X_޶A(zFz/jkmIX6rwS8TJ'{1o޽q|{Һrssiy)r={ ע z&k˯ymVK4Ck&A4􌮻8wx\—cL7-߬9bLǑWV zojH_<%/tP_|K%xWi)HvM ʬv1r~jiB zxo`qA\,._YGW\V֧b̙'h߾7D{ҚCaA5:52跻w{" }j]r׼,wYY8&%8ZjZoLD0SQaЃcvI07;dZ^НömW_ߠWg| 9r)ZS*]^SBR9v,aqΞ\tŬD$jmn}|(bAmjjL|USCG*tSy1t8^>lPYi5kmߢ}auϞ=X~X"''g%=~s(<{H?yr H3̨./QUgie͚WT|@3Wޛ9 .ӡC&+ Ed #<nAg^r[@@E[澙r,ǖ{o69+Qu? xir>=1Rh9vӍj෢ҏܤ |u^nOIJk^zӭ_zkm䟟E(kBkseF'40=R|ǚmE^_no[RJ{Tw NhE z$ǮX4?߁rp)/5{9Zs8(c oײ~BvzzA ==?=dY,͵_IENDB`geany-1.23.1+dfsg/doc/images/pref_dialog_keys.png0000644000175000017500000013226612146146075022116 0ustar hyperairhyperairPNG  IHDRzaֻTsBIT|dtEXtSoftwaregnome-screenshot>HIDATxxE+ŭ"EZZxšX8xwR -;w`w]=r{9?~B!sbҤ iFw0 `0W""6 ɻ{#y!!BIFOsLh&{6mRB"BIiL0B!$s'cB!9DB!$z=BWʕ+'o"{RX1ֵ\x7Z5kJߖѣG !)&cM DEɌ3e˖sΝݧ}quĉ%44T?.'˚BEÇr]BWtC\rE}Sߦ>ݻKtTԭ[W/5k֔۶*V7GGCM-\Y}1vڲo5o޼RZ5ɗ7,YR;JoR%_|RHi׮- BH`=X=m!'=zT֬Y#W %JҥK%$$D'E6mHLL|7RT)}z;2xE@/](e=7пadsvLXnW:\…%&vR8p@o8$zw*HB_Av>#1b'|bz +ԴH%C[lQ,3sŋ.:̿WQsJE7oK׸qcS&M7x|BݾuSۄ M_MTɓjAAAJlWa}sÆ ߗ.]{T k2o<w 5[B ?A!񉹘ٚo.U7cZ>}T73gd޽O[L2iӦ۶m+۶m۷ݻ5SBCCdϞݪUBHckWȝ۷!$^)WMjժJ *Z0Qzqu?C&OΝ;.UJ 8Jk.R|y5j*~z-טDKr[@! ao>1wxXB9ZuXGLy@ǏW`Lw߿cX#B!InݼA!B<!B !BA#BB!!BB!!BB!!BEB!x>(!AKdYB!$ o,^*Gc=H^B9tp\pN.]ԯ_O#7D١};y^3^F$sLK/IܹeIZ6m 4ihW$)Q!$ѻ~jC*@֬^5k$zuA>O֮^%5k*5$LҲh$>P&~'+ʪa&?v,O.S!(zYʛof=ǎj^r!ҥիˮ;Լo{Vi=+"|I %OZ qW_{{͔Ŋ.\XƎ-wn2o۶.]ZҧOĺbŏdue͞ݻԲgʻ%Js$jVZJmJ뢁!  Aze DVre:e:|5r;UbtUuVұC}LaDKo|gW; /H^=ոh-hz>\r_}Kd+?'7}k׬Vߟ?w5CMJDɡ|%ch9h-pwj(:a֡] iҕ1vʕ*{ɚի.)liJo4vШ9fB!=H\ڟb}#CehEۨa՝ѫU(Q\~7W"6qtxW.Ŋ_/M"W)1}Cћ7w=,(@!}zU^Ry -: ,0}z|n:*Wx/|?2b]8t+\iyC>=sZ^~ewV\iҸ;zDӈj];]~f&vEmѻ~tZ/@=m&BKxb{ҽ[W%lAڵm#9rPB 'j-ёҺU+" , 5j|PnU%7iX`f3םRc*W^ <c;WX}l$ -~xGii2V,<ѹsg%7ѣFieʔQ*U>W  ~3L A}ԫo̗/>\W|}b|aZC6밗m&BK0O .G>3 Vٳ>-iM  C߁PB <'t1|҅!x"O=*S_)vEl|u7lm+>ѷ< Q!BѣQ!LnPܱ]_<2YH/G!ɻ~rY'ܧ%3{й: 'O='1qY%}K"E^u$|b_b&NJqMEG(zq,z=wi1^<i>}V)NȔ),_OiQ]n\sxS-[i|4C5Or 4P5lh1[TF B7o!ڵՎsvztMͫn(Ϙe&/(P@-2-&MԱ*U*y뭷$,l /;-k׬6-|`{Reowu_VlټiZ.z2dEߑ3J5,Z0wGed︼vOrmQ6·ȈM*'N,1GYmoEctGi>[z,cǸ 0@>ŴVZW_~~>c[-#gyWYvXSV-U"wn߲g2|Ŷ\/cSwZ?Q(z/܎0?US|9AMZiEZ#t˙sAN.ի3L~jմZh!ʕիViQvepٷw:/)*rDQP!ף!CZn'. _zZ6zHpeߘ/ j-r_uC ׼yslQθ`-uX⻃T۲{NهF[[yw::nҴ}FoFs˜O/W$mڴa[z[c[RFh?lz3*H{k1r>~-j"j}GsXa[FXc~Pa.@pqׄG'`_}5wbx%r$LÝ=|r'DFF 뱕?Gim">w >W[cZ`M2])#}+*a-y䑶mۨ+НQΎ[wEYGl\̇{޼Rpaumqg?ok\:DϝSs Z&MT-hM;w g˸SfĶܩ/ݭݩDZ֯M4cUuk6'V?GiY4WP^=lPDˡizڹCL."L2*j=FGo܁ۚξΝ; tFҲ_mjdRFz ##vAg.uV- F;ǭq>#6ZᆱWS嗟:b?X+ed/_|Og`;04#WΜn_+-NYrstv~Xы.%J3˕+thNm=yW._1l8v ^d~Me ۱}30W_ӧ]sgzl2y饗di`};5. NHZ-Å8ﮖ^#͈M]H>N>4r:=d3rfm/һqϮ2rWgv݊8]Voe)3kb[n֗cS?y]J-W X>a{;ޡȁKl9[`BƍՠY4ӛ5mXMc.}>8`+\Bpt'HbE I0f')G`msg|,p׎b 0wuC{M~EݵgtajlL *_::ƌ))^-* 7*층^#<^p^]lOF{i>h !=};쌖:Ol'mG}*9^A~GUǠh]i\Zfؔ+elnW[Zp˛W/\0_޴Si>D/رzO5j@&b%v{5%z3fPi`M[,^$S&OB!gD;Hɑ#,_Do׎aO*TPjժa\^>Q6i2EoS:i]ɜ9z~OUDfl\=YċWF#BH=mcl!B(z(za!BMB՛)z=B!x-RoQ!BѣQ!h,_ds\,=^aÏGx?|/z^05MGnJ]b1g%K5߼[Xe˖~;mIT,2dPS'CoZV0o蕴 /mՆg\9sJN/ۮ][ɖ- Eyxwtt 0,li>Σ޽{<ǝm+{1~/Q]{eoo:tth^|3z8sȾ7[QYk38+CGy=j|w[ha:~{箑s~U^7dݻwy׭[GCFKwc'sȇggq}ԙ+ˮ_V'[6ovkRĶN:,TE/yN*tS^|ImݪƦ7?bpٿoЧckܱ1c|uWGyB.`a|Fp͜9Z%ߖwn\sȹaU^U\9u?vBJ=6XB`/㲠y6gʹN7,ںeK+uNl!z1J*%3?!qǎ[mUoTw78!Fwĸҿ'Oi۶ XInjVZ2nXa䧟~T|+WPӚ5m*;wxZ,{!pGb bB(lٝ=W}Wؔe3Guw KP.>+Rвi11V\8A>1>c~ԩ܌sW̧ɟ-fͪM^?_ʔ)>cU~NP;{&NVe;gL/q)zXwBwe}qWUwtqj$Og]Byٵs :T&LӥK޹ppT7d^c|^lѾaY[yιj7lΝUQ[ PoM-z֫óWq2h]3eYL+3>}H"v{9[m[ն̘>]uBV8^z%Y'dE_4n4::мMGe7gt܎}od=F<k gnj+y5'˜-,yz.,J+:]g;LJ9i;o?wmGf[ÐNĦ68>#uٹZ8+y3,ѕl>>)F͖Q.'K,)ztzWSz`u7$0`iѣTw*iSAӬRءΫ H˚ٻ[2}4 W&Oln0JEh)a| Mze.GU;։D>1_w4~/w` }qXu/{p5][8;f\R#.h8`i{\TN0]#礫LJOX|A͢Ƕ3݆giL0̗uGgUgWWLGohYs}/Ήm"D]>%Cɕ+*.t1yˠԯo8D̻DͳD5 '91h@P .bhEi_{EW0usayԥ7j)[qGW4*=`jY7"q0x Oa騬!X/Odϝҝzɗ|-3cr,ysiV9GO/;:wv <劁zw;#GTkyغrẃ\ Obl\J,8>#>k׮vӷ>-k^'~TpTĶQM-I:DEE eAHSpDz |ݮ9=C&LY?x"O{,EώAFOlҴW'%S(z 6FxcG/,AK =aK e/.1u.Ya]- L]q\z{J|Εyپmk>s]vlLHɲO^ e &zn6wEoOLSih[FjMd&RdȐA-ENN:ujٳdɒEg[}w^j밗O[4X}vjkݺ_M^YQ8*w{^b_vc(S=v$yYru 9ڏI["NJs 4P5lhw_o(V z] l\4%C.z1aޢ4IDoepٷwHRNeڴ\ʕ+ *`8jQ)soժTVMۇիW-ZX b-Twc 51|Jj*j[ }GBCCT-[EޯC }{`Fj 4p>tPviqstW>bp~t} Kձg.=jrN#ۋfȕ˗d֭ VluTnFl앻s/1/#9kIȺlc~tTO:=WW$wW{[ۇi(ߙ3fP(zqzEE ]ыܤ>hAD61z5]mÅ+Jn>VkW[l1߲y;K[DddlW."Fcy`T-창whYA+lds\wݚ"O<ҶmUƦ޾sMVhZ}&ԅ-6+7du9FϽ8I/)z2.D:ɝs޺>cY^mq`>ء:ԩC:&9'.Ƭ۷9<)/hhuY9-'֠2Ez6$zyrlMsWg>ջQ5r~饗di`@DZ/aؤkɓcѹ;%ٺbY=uEGGtlĶNrpe ZF1>R˂(U=^bưĸcQI|'RXQuǘ qۂ"p5m]HklzWS w,_5ŊɊ05Ud$FZ?՚1G+T%;mTժA֎[+1Brg J,)zuHrwv%jzI87.w㨞ĘH+b;+u瀫=]ӧM{f}ڤqcS߄~}JV2@uQ衙OJ ̙39s01C f},YrR. Bg͚UI3"[4kعsgZ~miPi>*2t B~JLb+d$F.JjM5Tn _A<8H,=!QQb7@mt, EG#Ą UKEܹs԰ EG#t#11j$7n,EHeȑ, EG7_W.kuQce2nHEXBI|Eoİ&w%r=5ψe&=?|L!$a'aۿgO܋^D{*/$o.z{yh0EZ?"!*"\uA,Qѻw< ׮^yF2cG  X⯉V Dh!M6SwBHB˂=ϋ$l+/Y^2ړDoUn)zEOBHB˂8=<9*B/Ud /znLRgԮ][ɖ-d̘AׯYF-^@>KN}g $z, BlLjzE<~'o+-t 1,EIbތS ^LҲh$>P7jhB IoVia߼'z:BItcYbgw ū^c5SU+GȨ$zc rFDoN:/\ ӦL̙3D/GJv>|pB,I\}Jf1>dJiA\ީSeȐAj}\+VL5$8h㧋ޠe,_%C~YRJ%۶D{A̸I#olX8bO*d! Lg5=SL|y+6A.q!zΜN׭k%jUT1InݪfvyW`R&ѫQ%/6L8nU+Ν;?TRɛ7O^֭?yt/_$;wlWchUC&LӤI#:v }[oIX8/BH¢ZjIq;44DlZ^xAymYfzca[frTaBHA={!T˫8__yNrVYe4 1=tY_Y/2s9zJ1A'dT1 ?bHvQBS_gY6Bnڴ;^yezlR؛?TY5m32$$?ts=/9s[~qV9XgwI0ѻ-R)z[>[W&OhY1GF;ktUPp<تP.w|/;o!=xzs^qTg9. mq&ziDOs#^ =ܱtkrQ4" k֬!:,Cw/*Y 4;5Ro9sXQjU5FWg !]שSGYxpaAꁊ_~nzQ嬞y۵S-˖I.],b/MBAѣŹLm͚5M׷z9!f5kVuݼgr%ݺIڴi%gΜ<4DYlѼzy}z42g !]]%Ux+^R%7az:Y=T i72ɓG֪Y8Gы7#=BEO;TBItcYb$+za!*zO!?,MaJ(z=BasɤJ(zGBItcYb#WgH[`f!EA!'ɶ7v&=XBEϡ--ߣ%C !$ٮ[dd&zZڄBI$tzd)z,zCWB!$Тh^2e0 4"!nO?b\ #ܧQ `ģUS\wnS(z `0(z=`0 E`0 EGѣ1 AѣQ(z `P^|+=]N'BQ `PJ i]KiÇPȑ7o?~\}6.1 AKguv*%duD/<<\ҤI㰥TΝ;͛&޽?3E`0d"znL2kѼd˖Mf"5k*۶n6vfڴlٲJm~&e(p|AYI.JizJ `Oͷ'zF卢`0 Fׯ&kܨTSy"+~$3^BIQByWSWP!MgY2LT͝Q]ds&oFno知L2RX1ѣܾ}`0(z)Y r/Xj]Rni4{iܨ=Og-uJ.o֬\Ұ 2Di¾g5[ Hql&K6_EWdaeY^|מgd32CxeIF6W!pU)~jr0] `yDoeX4kDO*el_|CѣG-yYK#THڵkdɒ D]V'у=-zaC^P|E¦^pRc@'DE{SisJ3ѻxAe tћ7[y*uXz~ 1zM76@:M kܸi^ !x _Q-{C~IRJ%۶DyUEG!OwnS(zqN9f͚r5vʁu: :uHTTXGѣ%Q+X5GH ƍɓ'--[>@n޼i7 $b-P(z=3:u˗OvI#$p1c4oabbb6-[Lڷo/[n>&=EZz)kזׯWʀTRRhQjɓnݺiWZU}G|%κ!'x3gΔ2e(ɋp(zô3gΨ KU׮rlٲҦMy뭷wߕ!CHU|}}Mw]J(!yrҥKMlkСJ'7˗/ĉUzڵm۶=իZ *ȪUxlP(z=g*CEiO $SLoҤttѣ}TObLRJ!qnҼޓF펵C7,cRfu¤I}AL"waÆ}-[ѣ`]tT'>Az[סCwP_yB̙cqC@,;t`!|HsJ8np˗/cW{9̘>-E %qӻ>Pٳyh0*e\@PP{jѢL>] a9rj[f_ ! U]u9S0bhg}&o)Zϟ?o*`;sc|D&_}˂*ڻgvRZ\iwb=뫁>lD9h|ʇ'L_eܑ!$aDWȡӳe?/^XjժZDgO ~1wOO6MJ.$߷>1LKvgu^IVbwݺ*z˂2=C+0wEm[;VNZEZ 6lȊDرcKBuNŧرCuΞ=[ubC.ZjfГq%K<$.E$iѻuf$/:Iog&M y֬\rJ5$mڴ5kVֵoN2f(2eÆD/uTfj^^F Bs$zX_̙套^A؄]8Gq^&mذAʕ+ِر,YQL#IZ_gW_J.A~jBY3aQݻWO,}#V({acTkZȲ n4_ϡM?V-CV,Z^ Q^mtR2o.>(+ 7^!MLVX2Y͟=ˇT0?Ѝ VX? r8>|jBHxH#D2?!xh FՈ&󱼭m1E#EݲiҤMvk{-Yd=vVfJukǓk׬2aX/4qC ۈwBCvBԩ䅯_F&M/3e2^oJCM z%TW,EoYޖ-vʵ%zg.zUrjMCmXƮM0Nkwp3f0;8h][o/Ϻ腆.akJeEB< J5XăD/pq^jzpcV.P]BE]k"+_ȶ-Q [yEoKtI=y]m/?!xx cY1zԪ)(!]IիdYnބqceJҊ}G:u`'~ӤNo՛7W&KC!梷iW1ds&?^jUU^3_LheTRITD8EB<;x%,Bѳ#z?h1ooUHjۢo7_wVnu򍒮*U*+ø|`у'<|p_h<|q)ɃO}Yr߽{wMi͹oI-S=QB /_>)[|ru F ǏK9L)RDׯ/7AsQ%QesJDDϼO=ǏފT=|s?O0qݿk&yO޽{wLӬEnEI@֭+ժUkʅ d˖-ҪU+)Wܸq5ᡁkݼyS]&m۪z{IJ`$ nDѣkL:UJ*%/_~nܸ׏5ayevҥ$M֭/R>̠Q(zzԬYSΝksަMpң`ҷo_)Vի?,eʔQѣܾ}4PBҿM?~TDGGa0HWw^w15Ν;_%Jz9JǎU݁H U},X`Jモ%KJŋOcoy>`@$=nЭ,{(\=[˘^bz oz]ϳ'z˗/W3g|ECI̙#<|i>ݽBEGHћ6m/_^uwVZj J{ݪ+Ǡ.} EHzojF-ZZ=^\iqQK@w0z1N:rJ'q!x=n˝;7[(z=*ڵk+[~jU6m*|3WAȠOԅCN:JH 9ҥ1I'Х:f56DoǎJ#F=~ h :.]1zC4Gѣy q7Jʛ7ϡQ{BΣYʸcc-z/]R)z{vRc#zX~׎K+dMѣ1  QF%z׮^UOH;NZ;3q"zoݐ3OQ(z 40LJH9Y2w!ٿoE]=0xw^ gc0~ƩAD/zT̙3[+ҤIc ћ3{TZ$z2dEJƌuY]iӦ/:uRiJ*z|0]vMUܹr:nӤI#:vH+,lQ>{ҶMJ*Ec0 DoIYÛuka G}$e}۵Sw1I:CEF$zXݶnPעE {СұCvu]w름qyh:x@- +z{nJ/ڷWiسg)Q^JcW;2h@9cvj`0'zK/gD-uiӦ͛ŋfAKJlL]Ӧ);}KF[c7l_~Yۀ;6ERwFGE?$[+[yԦ]x';ZZئL~ m6Ju`0 #ɉ^_0$zFwm,DԩS]袷`9rjNTӎ8=iÇ!;L"w 7'zS-ٳg:uj?`0$#z_аݻ+Ew'bv$,YQ;[Bu=y_۷n$z׮]U-r=͓g7T*ϝMp !4H֢ykРz7L-{ZJw xWϞҬiSy7ƍJ._(?Hd1zD|֬>,#zj@j!{Lj-=J[ 9x`L:UCz2EB%O Sz$Gv~O; Eo*-z+//oN>*TPk;15ALrJ3GDӥ7jy7m]j\;-.L[TBE-ы˟@\O^vܙ,6**RIlR{O*B!7|)]Tm\ބ ջ(zBIPX^ʕe1Fn\I<ɔ)7G!!zFϊ#.zgΜᆱJM.L=s*<_G!ߺMN]InyRB!=E0… , Byݥ%a.]$C rI|{+ǏO'tg׮d+VHŊ?\}OE/qSpaSDEEZ-uU}-PTZU N4hᲰ>yQ(zʕ+RV-@Z~5kHf>'NPrAUV7;.&ϟW]~G7n<#)8 4ҲeKu<޼yngRw8pYff߻wBIuYXwNuEѣ?cƌw}W9LU~}ٳ'E/Z.-gΜcǎdRIn%3fH>LI۴l2i߾lݺ2(Zl˶p5CDo`GыWW.ӧO9/,,Lu9@iѣѵӥKUa)(U_-O6/XM\B+7n,EQil eЍz܉c݂e-Z@A8~|y[n3=m4C]@~,Μ9Sʔ)?H@}L;siK)Sd2l0?e=z 1 Wy. s1}CNXC&i2RZ7#nƎktEnvq~=W ;oiӦr)ۼ%P@0i[ {{IoI/i;/hKZmxIہ^N /0K://~-]4-~CF_owC0o7[k #4Gȏ}'/c}dƯ|dx1|#4FO1}d)2aL+4&O3|e2W;1}W|||Wcv78g̝+4. TC =;wP۫↊~Ȭ*R-q@ް?Eo=hu9[wոC?|ngi\Lǥ) §u30' =qX/gܴY-A#}z`nBˡ8s)Aeq…v:,g/hDd.~t1&TtBrt.:sgrN)9S'S1Ip8v1& Ё}ܿ׌=@[5gۣSwٳKg; Z۶c;Hһ"(]@49*((AE" Rjz !)!=ϻ7Oi bfm1{ͽZ{p Hcc6*l۳ӐEOnu?UpVqi˞u Rn +JLj=jz}Mgd[2gukȬ=O7*Qz'^iקIFƟW-c~…k7Wǟ^s:E<*z|g.PDl gML7_~ٌqUii͡2h>yF$lǏ7nOcRKe]8,[Vz}L0x`3dC/܍Jӛ|1cDKԯ_ߌ%qnzQh"\#tn/EϾq*xZn+T-z"zc׮]E,P[liǫ[fJǫh5g#EZ4lT;v4꺴2fTEG+u}vX3@p-㌊^F M9%zz^w/_ܘe^=ch酞*xzS}dSoкIM@_ۙ^իWh^&  G9[0!zѻ`ueY~=Nѻt!z1=r蝌 C=D =P(@=D=D@=D@2KemڰNV?ӶRHa{XѢL#ycGJ=L0>M׭uRP!:Eϴ6.;OۧO4hy}MbXZ5#~\p<___QÇp3ŋ0M~gk׮AUT#Gʗ_~i]n޼yng=z#>K֭)S9~ϖ-[KK!z떿u ?bŊIZdĉidlʕӦ.^8-Xj_+RJ.`СCYfr!ЦM-BHFٳgK͚5UVo߾4ﺍ3Ԯ];5:ԩ.r(zG"##-?lc{;~L05˺ٶΝ;g>s%>-\իf;*={L!|חQF{!0-W-cULVX!͛77'Ol2sL^<5gΜ.Ν;޽{r ze3.F&E???%wWڅ]1]?"nk׮:'|eذaf蹫[vjtYiذlݺL`UkҤ^c c2C& 7LU ޸qLEWâެ#T{uJ۶mӬ[+۷>7nHMCHGTf*CSnq&zJz%UV5D4=-}7ov8޽{D}S$^ڕˍ|!z^fG+ 19*xzڵkm>|B 駟. xӦMRֻqHk_zL!$wzCNŕEʕ"En] z9*z!,'ǂC=Bς*Y[8o,f#}*@ƍ)=<`i}=BiٲL6 #z|gȕ+=DBuy52=ݱk׮"z!B=D#BHy3=DB!(z A=B!x]xcO!z!z!zDom';)?O)[Do=]ϒ =ߢv""J䐅%$A"N!z*p۷mF,ѳݴqu׈Y.zڲݮԓO?yfr`M>]yG4vJ)X4hP_c=&)i/kY#|]֭ZJB{Eϴ6k-yG䮻B8v 'zY.z=w5jYvԩ󜴲Ut>͖ulݼ&z+Wۼom#b"qXdkOם:vSeͪҲEs)RMƌ^K;zT2UoKLLSk&*TŋKzdT yi',wr*MӧN1-tvͪ]Vѳ9n;eEoY[;tue[ב(_g}&5ٺu>|I^v~Y.zOSEO ;SiV;)_<ö} _e"ʕ5kPiw!0E`3}NoN wmi+[j_.o]z$%%9| +V… Kڵeɒ%fa7L{Og^Ǜ.*Uի:u8ێci޼)SƬ>D/=c^iΙ=KvnjnY07u$HnvI!z?|/U(O_-jg5*ɶmȑ#2tP)V8qBCCbccdɒ X4Hx Ef[vtK/$ÇǏˡCdӦMTZGt,\N@ƇRƍ_ǩtIxsn'^={_|TLbZ;ɓ'CeL߿/zKrrɣDFt% \Hx?SfM#*zTV' -gժUM[p+UK:wuǎ7CBBlMmѣGo߾RR%i߾lذJ =DK/+V0ZAAA[wƌr9IHHH!`gΜ1VZݸ)Zn;VtguT\E/0_b=D/V8}ĊSLرc| R7kt 2$uM^xiٲeuk ݪUL ܲeL0A֭['Q0ڽCy_V, H^4e:zlݺux:}jժ)D/00Ho=>^_|Q:wvڴi#9SEocԅ ^m_O1F 3-E'DޕGyD|]V-[?nӢE3ٽsMDoifH-ˉO2*R^E%#缦} ڏF[[IIe =gіRP#^*z*z!ǃM'#zZ裏)RKem9r̈ >MɆuk[o6瞫ms:u32,YBS֬Zn>^F%MG[ÚUVkf늰}Ww}\jtQXqWAxTlZôkPęJzE2{kyɓ͐\~tV^݈~2pW::>Wǟ^s3gȀLwxΝe޽|=wݾfӦF̟'=wzmо=FT쬢vJ7ch77 XuLo==!=n'[l1b4:hѢg2KPCkv^v-չێB@RO#8O|| 6 PY=OyG]Z?={V6l([n5ӵ;XzUիW;g Շ)zzx]n컰IDN,~#w:u۴NxI?OJ*3rfGnjZ*z*`:mݚҲE [e4D/pzÄ^9j6n8S蕲Fǁh1bDʫwYQm۶MnYR§ƍ+WN,XbBGTf*CSwbW_I^jժfFfo. Շ!zl˗E']λw6.eXG 0KD/"h:m)OȜٳR w-ߏa !DHDO ;L٢diӖ9=hgCml۲ˤhEנA3&G+4abڵ).nP|駦[ڴi7x*W^=e⬋vtVl:u-h!Xo| swλ=hch3C4ڢu 'wŭn]"&nJʔ.-?7{[l09L{J)5yՌ۾mA5\AYVݷƲ>ӤS)DoOgTY"PK3Fpm!cAUAtB=;ћ.]::.gvyꩧ%z{v07d蝹? ݽ&zgsI%Pe*zש#?_DqRFtBH۸qc z 4DB--[iӦQC=B5jd<!^#z!zB6[,"yшG!DC!!z!!z^DODC^)zkW.7!zer|Xa#v^"zV X,sg0; Aր z z z8p@ (`tҤIٱcGQqx!zɓ'%""Bv)m۶ZjIrr2nرc+P".Ȏc@sq5N @'&M6md{]U,]T:w,{=@\U7N>m/^\>sPq\%o߾Rvm)ZԩSG֬YcRtr@&O,ժU3m۶L u͚5CRT)T :T  ʕ3M>ݶ>@*V( 6uǒ%KlmkFW7o.?uIݛu~]g޽M@=D/_t݆ʱUVgtqȑ# яόK>}瞣E /SLիKfdƍYRX_O0A<(|y߯_?ٽ{|B0&&vS!,VWg:~̙3gl7sLsΙu%:gϞ-Ѳo>iܸՋ!zf m{饗ߗ~UK` "zmA XV_522:f*:Oٶ֭[ԩSkRm9J9zpz3{!z^MMFD/|D POhק^eE]hpBsY%:ϙi+`ӦMcǦiӮ؉'JժU틶1'D+g#<<\,%Kۻdqg̘a[nDkWʕ+t1z:.PqѢEiMέ[}HLL!zw;gѫgϚ+i*AaÆoci&#YW6 ):k׮Rrei-_`ts1ct^Æ @=DѻMS Ӓµ4rJTƴNл_˗/onVODO[u.X\E=D?U#T+!z?vMr zy뭷3=@"y 40 D=@=DC=Ds%zgN!zТyR!{!z!!zG! zG!|(z=DB!(z "z!B=@!G!DC!DCYn޼)?RX1)_4mTva(P@"""%繕2eʘ:ѣ-G!z44iD^|EYd:uJN>-k׮5=B3gaKNN ;Jڵ寿r?,D=|wR~}ߜ~#{r 5k;.[ʹ\L6lݻKHHD>5jԐ7#ѻr|RjUR_.]d]>[eJjdyUzF{&Lb֧sӧO7|3Ŵ_~=\z ]q]M=D3wy[wMzEO>Ҷm[]v)*Mm%5j;wNN<)AAAyCf͚ɡCz۴i#1!Y={ԬYSZj%K۸8#JzN+ԩSЎ(}||$226Ƽ4h?~\&L`D{rJ#>ŋ}u-K3 .L!k˞={ڄOU(4^햮P~֬XBի粫 z'EϾDe駟Nqլu+~>nݒ%KeJ*`b3zoRR >G~.-^/RGl[˜9sk6m9ޅ;=k:t yƍ3|w6zm$ zU]*U27^GΞ=k]~6MNtUΜ9# 07;w{)QoZ7DC:Nh&iWVZyj ީS'2:vUUW]}*E1](:VGtpڥDɾطg詌 >t zvz"zzauyG*zq?eر!zBrXPUS?BD=B ƍSDB-zĴi(G!}v<D=B! zG! zB!B!CP;@=DC=DC=@=D=@D=D@=D@=D//#FƍKѢE\rҤIYz_@9p@wG 7狞7VJ.m;vx7AbbL:U^{5P/^\ի'4#""dРAŪU^RJ; C!66V^yS̞=[>,GNHɓ'ܹSڶm+jՒdHHH0cr}4jH|||d֭S"##=eebev1SfƾG|WK/ILLLd țɤIM6.[TtZhhh?KJΝeϞ=.XfM^,XPܮ# zZjlٲt˔^G*W,*U>@Μ9c]>͛72eH*U䣏>JU!:]+^zɩSn_]bE)\Ԯ][,Yd@&Olym۶iO6+?7ݚڵz9}]fMСzaС2`srӧOvÇ!G___Shď?hשS'ٻwo6]:dQ+[~\$oڴ)MYZĉ/J@@}?~Ns̰w]3_m5{OZli֡j*EţVǏC*CE3x Sz[h!k.e(VED1SLիKfdƍN%F낰0#zN+ոqy]DO_O0A<(|y߯_?ٽ{|FFҺD?cA7s£QҥM<)ZtkԨ!FJqj=>[޽M]HCZ jpMw,_|EKV,]"-!]+NODOjS_4kEWZijzs%L?*^լ'p_Vf =?U^OD\RK~."/#ҺuksÄVіC1pVt*a;7|Ӵ,Ο?ߩXF sƟټֿδ[L֭Dbr򟟟nUƋ^ppgSNѣGo߾}a3=$$$Mg_plD'|bZôS$#+zrմiSzر)zMZjU#JyO 5:\zEپA3|k=~m1m]NS_TaȐ!Zb:^Ŧn+TEN4c!W̺3L׆/9 Kɒ%ŗ1zY)z׎DOח+W-]zah"\#VXa٢grt3e˖5kk 37s[|=@H `h}VZi[g1+-*1zW+c?NHtyuYر9S§tvC W1@훣iT f;]cPvjnӡ ֮YmZ|GKnmISQ/m9,ѳvg6Ξ=k.|=wNӺ[&@se]d2J E+ n:]veuN+P+s|MH"¾{Xh7^ξ/0]:Xծ khMc9%zkW:_wt,-u1ZiW}~k*^:zKN#zx :{ @Emذ!e zކxأ,Dg a=@C=DC=DCCP!{!z!!zG! zG!DC!G!D=B! zG! zeg֯_/W^ ! zy lٲҥKK:"""|?mcRn])]w~>;ycL2ҴiS9zG!z^.Krrƚ^xAugDv2tPryAq?3鹓 ұcGs~_Nב| B ڶm+W`A #$/ƍ2k,yw\%&&i1116l ݻw + ڴiTR͛2dV/_^>Cpuhڧ~*UV5߿\t6_W\Y .,uԑu]~]F)jJѕHtLz̙uݺ;&BU|}}FF>Rʹ/%JZ*Vh_N_?ҵkW3B}=KsrpѣGK=R죿nZ~w2eY _hhhwN!z^MJJxٸq+}ݬY39t萩۴i#KӧmV[Vi׮)kV\i~dN>m~/nKV~}ٱc={VlU.ڵlOu;h!R8՜=ws^zt(FoND[KVH۳gyjGr@zkFe|;ud+*U2We nQBswvX2`SX!CN޽{K\\-QWj׮-E:uȚ5kuO+V… ,Y6oǎҼysӝG~~~i%6cbb>Zjcnq=.g̜'e;tPQF}w$zYYEO^eJ6mLk1?0D/YD=].˖-3R2h go!۶m3RТE yݮޓ-[ʯjhժmϞ=[e߾}ҸqmWWRB$vN9b$Xb6SY>|?~ܴPmڴ)ݭ]lذx9wejܕJ.zjS^+VP2U,Uz zn(U?Nbbi9vmQeG[t#O޽{m:YV4$$$x]w) pWnC?k֬iDI*#ݚxCBB<O>+/-"Euk_fmٲŴDCrV[j;*)E^蜡?XfԒ-{:-44ԣ^ޝ8 3uW5ӮaBm߾iKi9\%''{?}rW^ݮ9+3G!_^ׯ4jւd/k+hZ֩B 9mۺukSl7#~ 3fgi#Ǐ7nUKU|j<)3g䮼Tt۷oO2s$z*D/DOe^zW_٦uѴݸr?:ݺufƛYuY1vs1BӰaC+ݻ۵kך:ϕ9:FWef=ob!|!z9|׭v9ׯ7O>-|T^ȿҹsgw81j;D }[w[nzEOobP1j׮y]_|9˛9Vj[H2ݯz%K4gSD1l*:Z*T07[XrS'ejܕʚv:Yf)U~6m_DC!/U!zqR!z!z zDuA=N*\.zܺuKyܸ~]ore.ɥ_HIIv0n;<~kW]Ąxؘh9%ΞO!zEB!'D7!zG!xv8!zBw7r5-?_EE3}!zBH^ Dk.RJ9{挙&*VwڷO蝋:!zB)oSvvI/.o)VoN-!z!DodJ1zm۱cG;}f|^F!z!BrP~9B܌qE z^.zA=@D=@D#?$I ގ~/$'?W z$'%-L7fW31;sd^ݒw!6y0Շx+7oސ0߿wON.D=N K[TODE ?QE] zx%ʢ% 7o^+z:n~o$&$Ȃ% D= -zFΜ.D=^ћ8~,xMgxݼqCnݺoPћ7D=@ }g z׉D=@ =dСRV-{Gڵk%&&FG9!zDoڤ p˗zRti'NHXX,Yļ>vqUdD=@у?dРAR\9t!zV#z.)T:o=+ߌn۶]ʓO>)ߥD`Czaknذ6_?)X`X_vMkkr$>>;77}dD=@Eڵ;!..HUll[1bpԩ/_ ʞ={L.w8~GF"##[nRT)۲:RJe cǦ?Xyٽ{ٗ HΝs'zS=@у| z/_2i:k*&&g:h>c?m׮rw:ٳg烃{}p+aȭw"uŋ'IzD=zћ9}\j p?.~~ ?x`/W͛+իWGyyS/{ԯ9p:"4$Ew=9Br zDgE.ȕ˗ 2eH(2blZоr=I?K\lH63:ue[䮻%KΏ59U:8O zA(LUXQ/.?O([6dU?h-e짭_ֈfz~<}_^VykWyꩧdb9txuZ.f/ɉ 2=@$ɠ>5j) sω߂bfyiZ+=+Vo(PY_^VIHI3ػ5k)ٳ/7o,\0?ޏ>WL[L S3eb~D[π!z z z|!z?},[D/>./&d $&:JDr^VJȱ+/в\0W:yӜO,|ri ?q\V,[4a'BoZd/ӧ/gVu9}r!g(:)'#½gDDID@"a!Ǎ[ErX`X?=2L ~seɢO \H/]+ڕ!X¸k z^  zp;cf8[n@[ zբ'q}I\L$tCݛ}u/e=e('~]Ѳ0GewpXO1D/>&F3gȸ1 Lq̚#A{wK|l4?\1ԽWRS*'A!1lqg|8rFr[Ƹ=D/1>NɴI?Ɉ0?䯿qDʴ?];%>.0p uoսu_eER\BNFS.rYS~Z'NݾŜ3W8'( D͟#ΞG Bݛ}u/e}eXiRɣ22n&},EO޵Y=erd$?b{)+kcݏq2 h38DO)#1!AGGݛ=u/e}e7X38Ae]ޟ Dt=ȈQfmKYg_YۋeqEOEoƍ?%Np~#ѣ͞ξV?f eDoqf@uoe}IY>ѻyܺu 2sg@D7^:*zoܤn>kąe֌ zLeUyO;&׮]K;g՛槮H˖-Slc֬YU1ެ*B I``tU|I.%JۼңG3]}%iÆ *ڲ-QZM65]̎3Tre0ayW|H_jSk۶wO+z׮]s?^vm7h@:wKӴŋr3fBVʺK.=KuܑU<7=o_kW}'im㢗eg=66.\({1])."riZJ*e[Vԩ#[l"WAzL8dž*z:駟NQ9.zrTѻ|9 -M6ٳgҠ:h>W:۶m_x<)ei;w0'եKؒ,e@zE/$?iDCϜ9mZ,OWJÆ 姟&'OF{Κcxo]ppò۵ky睶fi֓(k]t%wa-GbMDFFئi]w%~~ rdSt>sEo)椽zry~N8msӴbia'B.X*S&#zee;wluh6Uow2gi~mvֽYUBb3͕ի#پm[=Iə,z3O*+d~Xǂb l{'eʔsQky=&Oٔ)3ukuv~#UL&]G z+V,wZf+WSe~=32$x쿕Ĥ,=^\d%/'xuZ.3o_6_$~812>\Yٽkٷo,?.%91AL@D/ ިgL3+[L6z|GuK_zNNֽYU**V42ߩ[6dU~Z#z˗߯_ߺԿ{ZY7nXʗ/'KKDx(k]-I*UHJLyhŋ/`.z22S~W_5S*9q 8qK3WLOD 3h>9}JzaG{=ʩB쳁fȫ6N+ܧ~bӳx/Q?beE;au=>L5jqnXٻgo67ެ,k- -S}vvy9[lO2w ֥:^Du읶kv ̎uDL9csvk]NFFl2WbcZjҰr_Pg/q?k߾9DnNZ w!כWUQwכ~rO*z/RfA\|B択>Q&˼ɑm'"z. uz3>fLTn{w.'UY#) 6.>sEo/瓓4Z!ݳ;G@SrCh˷~+^oI(E/4kCA Gݛu/e}emD6tы;aN1ӸK{wI:V>/[dŜsȑC!cg2SN={)+]ǢeMP(ev9|ܽX^B|ۻ[MY>,1+!Aut;R"%tp\j/pk8wF[vL1ǎI?Mě1uC|҉6gsgys=g\ ڽKN:x uoսuubbȲ-Mv?X3W~ qi@e: F\+c|ק Bc%)11sDϜq+zw=l{))kmcƘ Yng@kI^E zx?,lCbaMIENDB`geany-1.23.1+dfsg/doc/images/build_menu_commands_dialog.png0000644000175000017500000015033712146146075024132 0ustar hyperairhyperairPNG  IHDRJV7ysBIT|dtEXtSoftwaregnome-screenshot>qIDATx|Seq (K '‹WQ:A!C*eeB uWAi+ J3[(<6I&&w'9Ivx"hPDD8UTT `0Xs3@Ě"T^^NgϞӧ@5Й3g.KB$NѡCZĩ&xIfOaa5K 7Vty:yU(q} 4edz'S.]詧~5z4;`@qj׮sR~.ix^e1u4gltwНwIo&YU(9}*/8bÌ J񤆣u-Bܹs燇ӺuozH/:ۯ/͛G.\`!ǯk[yy e˂h…'FSNyw]* sX@p?~/,2B?<4KȂ@ScTUUEGm&\--VW)6mH{?Kzm[ż`Q7ɂ̙bΝ_G<طݻӨdݟ_|Qlo^{F|J=c{5]ʲza`ijl祗^mmޯ_?JINrz{}=PbTa7j ԩ}*--!&vJ|Q?gJKK)::Jux8ː mכ^{Mds*@o޲.͛PX6/ڎx.1; ^wtq6mx?na2k,ꫯ{9s&oߞx !*]]v3YLqv&M$c[XLRm믋uYi,ZXVWW[_~ߣGСE.eY;y$-Xum3^o~7,B! P*-)6R)4+'q^nb2B̎;D3m~~NںmL#<0ϗ"x/zb ҒY2{6,T[նu-R*ޣG}TdX@2eXw9:n.ܴih[K0Vw3<\7@pRϞ=EӸqoh)..N3fͥ2Ho߾b>w%ٳFCm[֭[Rą<.ŋ,S][n۷[8j*[Qc=5>=<4kLsTa<?4W͞=[󻨈́hٕ+Wk׮믭B>f>VGǽz*ڵk'%%%.Od P2|w7k׬W^yEd7ۉφ q{s y];w@B3$\wLm?xOkkxPᮣ}{bf.Nyz+🷮6{,>8t;5t3g\Å ݉Y|XVUn]g?ѲU#7|oTC`K<>!{]3|yaJdgXp`e8RLe-xlbjm[Y~u<_:k.uI:<[gq11X y>6^޶e]ھ?W./Kfv7wgZ7FP*).6@(8JE%%%%%%%%%%%%%%%@ 44rN_@BHl h_44nm$l ^Rb۟ii7P=誫֭[ӣ>J?S o8~ዦO4 ɮ1}׮t 7Ѡok')>ۗQ[zׯeA(%4h 4CѝwIWO![6J@ Q#E4^n]飾kRhjNNJ/ }{K;*t]tW^yQ>Pi As#kƶAx\l/q $1fWtR&YܭBuv X:C5.Eו֮]Sicfjk?H?]JK,(f//M7$Rٝ;w-5)v*.N}] w)uAt;tBDi|ʹmVA}Զm[9jz-K/?11' ?MkteYG\s54t135nx۷rKk |wkyH}dԔduK1-[gjno^pdERgȑh/ug׵ή|g#nqb(g^m ӫZyY¨]vž2ÆvEכ M7>IjqXg,'1 z˺.=xO:79zG3FTX0`[,Ӈy>;<;K'L?)""N"_]Y֑[;r)z>ŐoΊf"[zdeTh2@cObEOK1={,:v,At_"7OU\G͝Zȿj5_ا̌bXN;$'sVz˗5YכB%oX(r[Im7^Ə'hڻgu,0i?K%jĹd4;*vK'+e[d{|v饗Zw<}ֲM/O{`#_:H\r>+" ]o_gnF ۶M g Yb ?HȬ3%smglwolܵ^+RKJsvMA>~ξIi-YX:38;ܼG Ie8}!\i&J˂!ݦNڦzkJy; lu=Hn5}}ö/ߪg}@u-k[vۼ_BqL wnb?`e~K1gB飏>])Ċ|^kRKPrvM+1+ӎ㏋3gΨj6 %vcVw"EFNM&PEWOCѵj[51ӧOW|̙Pֻ+T,WLq-k3"]|ttM| iGn7[]?,[[nUJ,q*_G8FJYvEכLELZ g/y9pB,O>(Tl_=r+kD"oժ(wҼ`/K< /o?r (JYc7;ξkN?܍Y#)~s=z|̙P,8ŁUp7g X,qxeXϋym͙ E@}ڑ..BpPFKn7k=:[vPP\9Oe]Y6Ecǎb.>!8}zwt(Vi:us:ء^||0/< wuY 4߱q0H,PBɑK ||;_98s`u\c;=xzY'uįӎu98*82|'GxyBɑIuή,tf=\mR^Rn;Zz-x>oWNp믻$?7uCؖ8[vm4_m:_ 4D mN[,Hl@#wހ‹j|=\Mlקp߂fO=͝3Ԅ&3Hu- ]TcIPe+#B)*WB^ PP:CuڕJj۶-ߟvډ-ZНwމ|Y(-] ;wL/<<=xOꪫ(l640=ԺukjӦ5R*^c顇뮻ZjEO=$}5٧Ozgı0/)Yex;k֬=PJJLЭ"^*"+ӥ6m &@})?/WgY|,]* ;gN b r>^K q㾦+d,ԩ ?:du,xZǎiOw߽H(q[\z4/hYP}3qh8(B驧xjK=teRu>gXdBD}5DO.]k^'=<7nA~߭[zc!c&$=YkvJ,x/Gp>Kg8O>ͥZСC󹻍4pwY]B_4Gu@Y)'l6;Kj& i|<۷wo? Zwޝ U(;"n"!n4mK.ZsM$*xlT믻_2HGCv(jvi^Ίi̙.>8(ni,f̘^:~m4{,Q3zhkݏe>]s/xFJ;w"qPW̙34.~/x26tƏpP?QCdyb|vl{ j׮x-113S?W_}5=p ڶn1ҕW޽]Jߜ%| B9nIN]^.  %~2RK,~K@/,0Nh#& Z-MA%QBERLDg%?Рɛh$~p:EϿ|dɦl5'?'t )/:%& ؿ Z6X2'NhiOTۍPTSg *}0^t\U0Rd!KǎG [GW"©ĩHe@v Rt9?jR)2iMFλwqF`~6Ѵ_vdA1mw9F#慹tlNh @iT(p٤hTU6_t"V*] ٣ʤ[ ?׻ט $P/S4vA(L̫s]#yedӪwg0K⮯$c2i͔ۖ>]B r9.B(q(_Sƚ|\`^e:.7̛ 5Hb M&ں;PRyP:}*GSOtX@:- -];&GJ.\hR8BiJB sΞü/Y(- X"/tB}BiȔd*9I;ę Bi҄q蚀P(%O줽:; &7/,E\ =OPVB P:[]Mϟii݈߿)aIZRȦ+tfTfxC M37o6B oK!)*/UҺ<ӦuJy~BI.f4ߵ7rۦ7_̅Py_zZ(EM"þbM7Q҄Ri# 4JW_}5nݚٓvרq41E|'y{:"+ҁ(00'NӧOטVoΌ gS(EDDԩSi|[x1mڴI|T*Zp!M26lbrY`R^T %Ŷ~E'ht`Ξ=KYm)X7ʈhM=h}s⳥nq폏W(}8m &н]#Xv'y9b}9Π̟?X0pֈ(Zh%%%Z(92HJ,X`9;~Ei0\HroBɠ"E2)B0)# KW(R_4|3zuS' qeu&<ԾCjۮ}0x(<2z4Eލ7HVZղ54h01뮧R;q$ E4ԡcGO}L?G xO;,jRh⤩ 8:}]uT`(6F_DGQGwbv[ߏy|>r=ētP>;HUGRRɡBmRXX-_\̯SNI'xI&kuDi֬Y^-66VZUc]h4***}Xċ'^4ն|1 JJ 5_ZҩS']Ig}IҦ=A犿 c\*]I Ѥ$]"gn>B)Ee^I2[BW2y:#]ztpu13Mcmo}YQ{yo#DPtѶ-05\C{tZ]6馶^J,F&OL6pe"S[yuuՖ g233K9uɓ'vY4G(ն3},w7gqJuJ0oKP(bI '+ I>TJKF T*3ʘǨB'yLyV(}>{ ( kƛhwuΏ;h9uZv^LOq B4y8%U(REySH[[$MJ7ҥȘًvmJڦB^xBi5vL:ťLE(*H/jyZxz{jٲ%jN>N 'wOSmG<^y_ZJ%RShYJmy"4aɏW :~H$'c˸)|B7?,g*++d߾F(_t-d $#Aߤ$(QJUt1o:8/%h*IJӯ4qsQ׮'b"ed7e3Ou Ϝ\Y?A;ƀOgQlgӆqcFΏO$;]8_^>xYɨqv JMN6 z- 4uJNNNQ*2)3=͆tJIL?_r46<Jѩ&.M$jMàţMͰidw4bNbr^HՂo ۅDRQs㻟gDzs^x/ܭ莽7|{ҨךJ4}a=-[X YX@+ʚ+(x*z;xKҫ-fBfkPneBJ:/jL [o@mIB=9<~ N,tTK9j+:8z+H djI-% :Hbc|},QĄxڼ!FJg-]LS|\HJ^S9ٔ@Bmy7_6uw5NȯFhxZrU :wx)TWWJ) bEzQ)˥ȈC7A$QPۙHb+qBBdV*(2)lh<#7 Wڂ*h<>)|6)1alC/|RN1^JPCN!mmfQp8 =`^ej2N¿arK9x)qBBA}(4husʘKt:-.]o7b8!{t܂%_1 mi09b8![ĿB6m$'pP(<ӺmiR îXP> )x'd2߼J0KOZ3- otU f/Beee-J!dF۸q.zohc`.L^&/=æiaHR 1(A % M0>k}4tV,V. lBEzꪫ{t!ƴ4 4)+e9ƷP```'NHO1]Vӷ~+۝pΦ5PS;\x1mڴI}6P*.\HSL 6@(`. %O7XBk?oKmI NJ E}g}X$;=CBIKkV3gD/c,d2т UVTUU%i}G0%Ox:QGȤ*X2f6dT/1?]Bi)ԣGҙf$83aÆш#KwI&m&[hBiꕒ)Y̞=[E -Y~u͓j+mܸѣeɲR0a@Z~3fς+==?#͚5fΜ)>۾kPqWwc>|Xt!Ԛ%޹s^MF[nSNy"/e?sMfM*I(7 ֔~YH{7%&u\)cI FPVd]8ѠB)(0:t@1Qn SN6 d gF)čҨQ~Mt+ٳB.dڈ PẔi+hb~EEE`hTuYqq}LBB6(QbcciժU5F"ڷo؎EXyZ(m۶֬Y#Yv/+| Pn|ϫWh?䐅ľ+E(7 ֔~n?SecO6 :W%](CPYJM&Et&?wYoƸ۟XQQ.җa(^cwJwمֺ ïyږ-//+#\_K%#'O?^dsѼjXq6Bd,Ff?לɓb,#jO/>ViflۙXq7؜9sDXq17?>&DRN|:_2ZPzJoQnU(j<'<.yzHi2̘0RY)U/ÂXSYߋlw]Z;ÆQzqڻgX(fxh˗io=pgnH~*|m MzyB~),8cY#s, ;vrbY eU.tpJ, h;\lns4U'x;매&m8ğw| ,XYiRE # K3hsbgu<^ 0WC.BG!`rJ_/D2*'?B[Iԗt:!r6HOو<ܞT]H؋*4Qfdx $NV(P\ΙdKJK(9)Ϗ` 7 B>1P>%eLgʊQ%Ƥ= qBBi I"$1tŁ޸ 8855U*qWT`Mr&o(F4lo393fwή ƌO:Ivp|tK)1^WW-"^qBvB1杏6eK>˂5$ش~H}65[ϳ5cc(7G-lѯ wk8co. _^tWHqtoB+NN(4 ߬*1xF;~$p/ƫd'd#LZk p N+һx!W>x~)/%NtC& f͔ۖ>p@> :z$#22iՊeNrRl!"؃Ph2-߉'*5W1ytZ \/0oK9x)qBB… )HJܿΩc ޹ÿarK9x)qBBP9 y_)KJ˃D%>hh4i8tM|V(arJ 㳓R0 P0і!e Z>: %XA(|L&#͛ :t,5Rzf@g K;_XP+J!`k|_0B }~6vN{ F"lY4Dyz,NxT(Wzok}Y ?PZ,B @(`J0JyoR6~ޖ~u!<'<*CfΤ ,DѠwQ(iiT}(JJ% NA P'Ϟ=KYm)X7ʈhM=h}s='-=8hтҎB(Y l1> Bɠ"E2)B0)# K_(hpd$KsωftG(PJV$*p0 HO$09e}bJf#eݔ4q I']/TA[)wGD=n⏺Qg#:u4PLOu}WP3UF>$iӞs_҅1th 室܄hRDg.kO_()2{wvvF\4$Pd%%ɓ'!`^R$CV%P ecTYxh%~ kWSyyq*p" ʩP?w& *IB _+MԇOɂ$_٤QTxF(uljJYbk>Y]J֘Ԭpq\(-3 B Pr%&DŽHʉBKF US- RG&? )YtAݻ7߿2c|%KJeTaVCqV/Pl@?$ %7Ln~)o挒hDB(|Ǝ :[w'd-LF*pJ0%7LBI.1YP2U;<;B u~)BI ;:Z M+RdD8p0 Z7a^rR,AW@BPJ12EjJ2m޸rCb$Y>n1 Ni|B7?,g*++d߾ӕ>F(_)KJ&U+(59|k`V} &/kV*W0_3tJIL%&ϡ]'O~Eʘ=o˚)ffO>393fwή ƌO:Ivp|tK)1^WsՒRY8!;ZGwӲEb}eAMbrUY@lZV>-QXhB1o|sWo 5ݱ7/x_:+$PƃX:7a['d'DCtToVj?f| N?рa@~UJ4|pqa~N6fA~N\fc0|՛i :t'n@(f% r)2m%uШpQ4QbB5~:twzg :<6s_s54tvW]uy睴Vp`0YӧJJgJg+I9wS^lR%2&tPjenE܅. W6}gϚEǎ%PrR ޽{JӇymն_-gW^YXxiR87wnҦ)!!ƎCW_}d8aw_W!~{ϰ|իHGQGBԷvJǏ$:wt}I?lGIBTu:BPLO< *E(:u%tHǞ$mtKP:ܕMLe-2iҺJ5Jӻڦx ^z)EN, Ŏ+كږ3 ";A߲!"#~dkV̗*%[3yMR~[~}Q!08{c~]lz-4pB w]l̝Сt%ԫ B o'O,*JIГ:'P~(/%Rf(crm2?M"zWg xm.f J)ɵf,AZm3'w6?,,gYF8o 6ax%v<5b!Svߋ/Lymw^X(͟;B <`OWIJkPY(UVV8D9I}H4,xJMEE7lR*/+M %Ef{Kfe]V]d/ 3(ED;J11QtՕWҲ W%׏}YQ]XڃEp)XzW#w^_`,% kLR)UT;%7?>&DRN|:_2ZPzJoQnU(j$mŸUļ^Ų-WW wZ_zvlIdLXȄmfEÜa5J\c6:]vZ@gs] wlFP>OfjQ$][> zyD;pfk(@pq;_%% P:u$2*sY?;ZGyFP޹Օfsm'XXs2~$kӦ(Dm*7JY{&qV[mouէ{/ltq;w. B N( 3ă=XrFnAʘ"bn%mR_}L[I+i{5m2 POxCB `|'GRzZp0 ֈB8c$"q(f}y=b&Uhޣɐ,(gIޞuP0<g |G(-]0 ky*,4 *&M1)+F!YzsLT,T[CBi"% ҄Ҧ ۫I)2R=ӏ"m\Wpߟ_. .GJJ&Q&`?J0 &7dB % k;<;ZPR)XjJz- X@]fӊ+ Ӳ23h<>Suנ+m!)%(nJx<@.,mq&x$H|ݐU:~Rx)sp$< _K9C?Rh\,]Ra]4yNAONQ*2)3=͆tJILr%&B _N6,/Rܿ.[&3ԃo'Mӧ6>3|f,]k)gZ@6eK:! +h岠Z ^J",tB1v9n@(f>#Ձo?hefAcǎSl3Hlϱpyk월m4־:֭[8fuyhh=b;7iCzȈ\>jٲ%u]`<*4kϳ>K?0]s5㏓߂O}iӦ5R*^c顇뮻ZjEO=$}oD0`z-bo^{U)N:ы/ CXXX  5Ѡ=z_NcǎӧQm۶:^ӟ~-! xZضm.mL,G}Tu8F}%Ҹq_ Ab2< ť^J#7'v @BK.)Ibڃuv<5o|YƁ-4jWg#G. E9Ă$'[-ާw:H OuVua1Xϰe9""­R(1Z8YN֭]{QWS995;h}s k:tP|_8eu}G}2Y#Δq?ŝ]Soղl{gn/jviGԺ 9~߯_??.ߛoWGC:loK(9)\Ģ3IJIW\q=*~uxQFz`;oKBB<͚9ŇW 3gi\^|2\xl@@ͣ?690hB/6k_}%#ϣGjmysn6=k-u?\tKO=xo[Bi_;ҌӅxqU(9kWCÆ5YƏBqbJ],|ۅI& @p gڵk'715>W6k_} ⏟ڛ ^?zKʾN%%NE/]J]Pj2+¶n:}#ҌiSwGHo1 A7/m3gsB[P@MGч#&%&PeeE/|RN1^JPCN!hm[6SD-%̛,##VXf3>y_)KJ܇`CD[|g>TusX+̫4;pBü/ .| E(q:a0o HK/tx/ eK gNJg0K9x)qBBiyPD -&M %7LB!b|v^ ԝ^AaP:[]Mϟ-ٴQPVB PdO;LF}H6cqB ,<ǦuJ04H~fC(/=*Kh2ЙNW=' |_~RFF9sWOǍ/ B(/=æiaHR 1(A 4ۓq£BWBI;v,]{o^\\L7t}J ,rŐJ0_ H 0XS %:QGȤ*X2f6dT/1?+_d'ҙf RSS?:RϞ=<{4l0j׮6u҅vQPΝ;SRRx)5j|ԦMDunJIBIRYOtnsƍiʔ)4sLڷo4m4>}:Yhƌ4qD?>*h޼yw8sN={֭[I HO$lkjO?[]Iaf:.1KT#(p+2.hP:u %6G‡R-[@/W(4i$lUUU l]﫯zJeӐ!C $6ↅ &/o߾t:B\4m(^sF_~G}$<^|ԖmLwu.{bmt}>Bb 0,ɓb&PJLL$??":>J8tL*e``>_Q[  aBT=4r3Xᅍ  J{a˦dCgQz ?/mPom֭PR*L(r6o>B 1x111췘aB%HNK&8 ͞1Y1^ jd/rCQ&IcC@l$4(ǁI \ mVɑ gQH2Y%NV(P'ABiUd,(771ڐ ҏ@*2{2u%NV(mK fGfWR ! FQw04~v(X|ĉb8!Jd6 ?/&bױOv J'ONeqKJ@+*bNroXRؾKfϜ.jp,?s% ApQ8ɴ-Χ*?{ZD+GV,_ zFP T72ī8!: :YuFbmހ5q~1y'6&g{}+$P * ç-XzG?/@.ج쉽7B#(5YIMUPbiԃV)F2p Q ha ćg1^.8!d6ӁA%0u,K7# q1ޛ8!7͛nv#:qQi#+_ç | C]U JAuU-^JM/;ƻ'D'#uE&r)\pIABhiiT: eg U)!#0DF37AQ4QەH"&b *S!R'$HڴYPlI(_:77C,y42Fž|':PԩS$,Q(շP*//sݓ7$/}RydND-:qgq§BIqR3  7x#&NU ҚXxUW7x uKKK}a0l0ҥ {18x` <#GPrbӦMDwO2Jdb;juɐiHw L82NT(I'7\<~~~7w}Mk> ]w̝;e p׳ul9JBwEcc# :^غu+TTTp"ݻwɓ'}U^W444XF=r/lO>feq.j _!DBɟMFPrrye(OiCʡ{ lB#$Nm=,K4uT馛@V[-_~e 3g8s|oO#PUU!I(c@P2**@ fi 4Ib|` s簧~O9BY?e> ÇesҤIЫW/m߿?|vRff&3g`ʔ)p뭷qƱovسg[6È#O|ܹ󊦯~]o߾iƲ;^{5ȖϚ5 >3v\(0ׯ_0qV(~ufMx_ՅaABI![.tGxx8lٲ̙ .ϛ7ϟyyy[D9c XlJ* .]2qhE_Yx1;1 H$YwIjidrUbPYv~ 9r3+J_R\l,2=JgΜv(2rssYPFa$n`^0o mKJJ,/'dp&LX)oҠAXӢB`322\ /ʀ0vVfA2NGPXXK,a}\e %Wu6A4x`HKKDVj}W/$$T(I 8(f3[|СC,s_'NFa? kOQHBۻw/^-u֭[| HB_:8l'@W8\.Շ08\ʣY ͒b%ﳁ!qOwy'd{Jlll`i "?fP^~excpc;ZŖcp㷷y&{ ߲22o]hl{8ul^1BE;><\sMyQ7|92tZ6"Y]խ:>^,?\_{RS7B7XgP4([>[ E/ ""HfϞDAQ)22!>CB,Yw&#( b4&ź)L(5i&,{45oShP빬 KR^:؜Nq EGjnfpcd:a޽&+lS!)wmԝNױ޿2OĚ+p_]άT-&6O_{-=mGhn[qm/..ҲNm4 Xl浦{ꪯk ;{YPo2Kg1M f*v U=4joX >xJ+h _g}R GI6*S Xx2qOAΝa-^=ն Ǝ?8?7 C+ Θ:5jsWCvV2`Y#"򣠰^(mX^{-qN`oh;mGRǶrۋwgwB^]{Rp-/YPfNl+((`)J?f6Imy"#Po221%G1ʒQ=>p.Q+dfPj׸ ~ƌydRi+aa_a S)Nkxac;:4fc0wljXXmMF޳vԨC={e   \`ߤؿo[flɟ* Nau|xn6ҥ3 p̓k#0QO<8ɖOOTN.G?FD\~cGJ`,ׯawaMx $v^=WGq?}}VR²} cR!P¯_Ϭ= k.f+аE[h 3=-𞔔DwZ2 WI(_:d"Hݗe%<fȻ n'L.W"vD>EtdCΝ}jN @@FpdA+ȿ(܉.y@ )z5$˟l_hѱ 1Z }϶g6 UPR\Dw8JdbJjC.J?Yv?Ʉb8!Z-i3뤌~as-ڲyk\fWR ! 5Yb|@ %U$AxUN/!#=pde8zʈr,RL1^HP2군3y;+.d-'۶l1p#iHx#ga3g@`Fn3uYw١`Q' bB(dH\KJ]ސ2`Ϸ)w㖔28VTĆFk%}ݗ̞9]X<,?K̃f%?qܓi[OgUlWS)sgW,FX. Z_odRWqBtB 1t\`SkkbkO$mLd&eVHMI=; 'U AO?[αv~^\Y{GoKg1>!.FP k8xݫ8!:*ҨS 9k? d L@C1Ab\qB4Bl4QNKnaXznFA⤽c7qBMoz=-m7yFt,⢣ iF(a]WO =*Q[Ƚ_ww7NN(G qM(Rp{ rub]gADRBFaKgn%諙i+DM/݉UB&OxB;6pgydb傁{1>`0t,÷W::MV H⢣N;ÿG/ 8ei1$ހcܾ 'ȇOA94RY@YyyMw9$7RL1^HP6D 7TͰcVF#_vuL`idddzbWE&o@K1x!qBBҥK D(a:- EGpNM&FS'D+pHJO.'@B #& $S'D+VŰK ҬQY %o21 %2a{=dB|K #Ax^I[ %fY %o21 %_Û`!p0rRI]}'H(A 呴i %4KP" 8uon@Yh9dƍ=,NPjC~G8uJ/ܹst$ ~y8 %K_9gރ`<08t NYP/={n }YHK;PZB骫޽{7x;+--YapwCΝ;O?z}jjjؾO-&M^zlS￷+233_~P\\̦Ϝ9SL[ozƍcQن qqqv߿?Z2DPӟ o^z%hUY 44eu*477Ν;vlW{ J NDNJd˖-0gXp!8p˼yX'//ϲ~ ,`eٲePVVfW(T*z/fݱc{GC,ϑ#Gk111rzn]vEر? -?WPo2Kob&I&,^P/EQeG #7Y§q/Bia| ߃>J+̙.P<2o(eOT*YfuQDXo/'' x'2\矇 &8,e|$> %&46ӠP3f],O<iiihZ(e %Abl6-޽{7kD2sLEÌ; *<(Vf$QD" m޽zj Yn aP@nٶD&w%k&#ko4Ɵk6Ae+}.~BMR,fI@_Y %iv} 0~3J " E({2\j[͛{N@qb^FF: k׷p$4kB~Ç1pձ*K w~NVݷ:iK%P~oyGis:O75X£Jɚ2\7))0tн{wK ?}>o*$W4Y8*!zUe?2N ٴNa*++D2qAX]:u9c}ֺ۫J:JMh(cccY3η^c+6Ywk3C!MN!Cûk}ƘP*=a/k/ rN!uIPZdBh4NAAkoG!c+l0>K_ֶ< 5"3H؇o 6y]HmF髯R%[&#Pr'+KF0& źPFu ,B^8SQ@&fly`ԨQ -$NC#8 ^8Zp~D@wljXXmMF gQz5wuoƃ>Cfopxz nv&u57'|~m,ؿiР] Ie(q[[&1QB_m֭P~`(XBǝ{B  foY;do1{oBg +V`|e]l8oɬT}H(_YF"7o296FBr$PًfOpIsNy޿"A47'[P:U_*pAr\X)Sk׮m1oz{ݻDZim]tco9+^e>{{Yz=28qgwʂ"G~K8N;>WX /1 !>+oB yX[6=lB (l0r!BgHJ[lv7xs]cX~LXFI$/ݍLɲgЬy3UU4/qB0\8b)M@TTm2^dJKGBLBɝ_k>ɑ gQH2Y%NV(P\fLe6 UPR\Dw8JdbJjC.J?Yv?Ʉb8!Z-i3TMPW[C?̾3J+)asDM&6S7rFUne([n8zC [MB,hmjdJdbℨD <%&* %o2 %xWqBBRs)$ȂpSCI(_-PK+XE' zYP++!!.2GP诌X --ȿ/ Q %^ ;ñBև <۶e3(cII;F GƎg58%`Fn3uY555ʿɧC&N/ Q %y96p/4*e?qKJ@+*bNroXRؾKfϜ.jp,?s% ApQ8ɴ-Χ*?{ZD+GV,_ zFP T72ī8!:2g!>:!zǵ;M fHژRM{v$CAN6( ~ηc`' b|B\jpKg&5eWqBtBzЪ9Ũ@&!4*>! 4 A$E'D#F#u:0FwfD!N;{'CضynD".: 6muk4oa*AY ѣbKɿ 1e{xw~$B. .7)B--- JXG,uD*%dȈpt&_>:jI߄R 1ޝ8!Pe*dR *$c;kw6GF!JkA^. Cǂ;|{#jAѴ)j d0-.:?;X|RL1^H逓ZL 8۠Jq|C#őڄxN/ %lC`OxC ;oeoT85lWǔ1FFH vU$kB & $S'D/.]DO Bcꘌ,Rt OdbK1x!qBB $Dp  $dp?o@K1x!qBBiu\ kO[(j5MP"&PG,)CV!η8'EPo摑P"&Pe/= 6|#G,u~J*H(%DP"##DB1^uPKOC@s,)_gɗq/Bi̙ #J:X&ZΝcj _ϡ@BBL|Bye(OiCʡ{ l߾>J(wJI(JJ6>` Hd* fYƩ`<i=X-?/^Tm6`ҥl[tPڰn Gpi7қ tI ˹TŋAwde/j`ViPXCti D%IY. JdbKOcfT>Bp> .Ԅ)Pi+}P:~5eɰV(566$O|YӧI(_zO7AQ0#0.MaBI3EdàQ83:e FӧBis:hh8UN#AxD}m wu)/@Bpvl DM&6t775xʞ1PW9la%@)τFT IrBiӆ\%s각 <=)J˗,@BBLBɝ,ØH*BסN/hOz_H„ҩzh'AxBm֭#Dii$/ݍҬ^P#{7Hc#A9LgBdmqͅ~K|%cIPc6AB|,T*HȂ2 `*47Y 1Z Yv_UR<;@W<"v&F%N&+Gɑ gQH2Y%NV(P 69ෟjjjlBШm>FQw0tSSSbK1x!qBBl2@~^$M%%Ů#F X*''b)w㖔28VTĆFk%}ݗ̞9]X<,?K̃f%?qܓi[OgUlWS)sgW,FX. ZXUodRWqBtB 1t\`SkkbkO$mLd&eVHMI=; 'U AO?[αv~^\Y{GoKg1>!.FP k8xݫ8!:*ҨS 9k? d L@$Ab\qB4B Hs UU_n6F#{M{`X3'qѡDV>JA;Ź&PtmuOM /5P"'fboj傁xMS0 DYEt*d`⢣N*h qM(Rp{[-iiiT:egf@J`| ͡Pȼ2Xt%3I - JP";`:q 22222LAHqײ$قcؾ'I(#:&####^(EGp12BrҥvAP"###k*P:IB  Y_M72226Jb>=!e3zJPP"gB ?CFFFFvB>Ieia!p0rRI]I( %2222ql foin@Yh9dƍ= mMu5$mHB H(pm+RydND-:qHo iӆJW]u 2b<ܜl%Nz"DFFFFBI(Z]2$~ҝc3H?NBnB} J-T9> aDJ CB Һ596'`PP6 -t;uu#HP} J6> %222J:X&+dTT43h6N9(O&*nJ7p|гGڵ*e;~<BBB`ܸPUp;5uA>}{[oIUѠ'Of˭m3c[믇~ArvYΑ ˇ_E?o곧u駟nݺu&Mrm:7x#L0]Ν=?8兒B.;Ңs s-MLYν*^ .}ُP#$Gnr[Bi5G)2rE-£PR\rѣL1b.g\Odžoeg1cޱ,GAO?AA~, Z(%m =ZSA.] sx\{W_3?e~֭[  2СC~>}+)\ؿoeu&L1QտrRi[BIRVFw82222% JgΜvK$k6Ae+}.~BMR,fI@_Y҆J}tZ˧}{q0N?q}!E0wW^K/Leu99JP"###=,H(mJ\ PjjjtIcG)8u~&MVB4 &O]m 'P`׶jT(6b?뮃oRSe,_zzSeʄΝ:A|\UJqW(*7/_g}&,g `} )Xmz]*9V(-_Y[ (ꡱ%ʒQ=>p.Q+dfP:UM7X~[_ohoc2;wZcàX>Jo:(c\ݻ^~7C\le/fBCCJBʍoaL5 ^}uO~:I ?Zt) a(ը.:s߻G SYVҬ^P#{7Hc#A9LgBdmZ6y0.*};s[8PBodٓ |S 31Jج{m2*wY?<#=?:q;`ohce~dz-:|G#2n]Q1Y%ln;M}<X \.:swP"###PA|}WB {DjA&d}YVI]ȳ]Hhֿۙ*)h{m6A'*&#-04SBpddddm(3KB1tsHoM3Шy$X,heo[]H(3H$G(`Mdddddm#m f&leG =PBL%%J:)=q6oTXNB)RJJdddd„RfU[[Ӯp!%2H܆jV|rI(P"####¦N$&*MLT$ % DFFF&6ddAP"###kx"L*H(ɥL,'cVP"G it####*$2b)sx5군3y+.d;+r%$p$#iHxP?59C0NMM Qf菱σ8^r qm/):6f5z4*KprKdR HJ(cEElTiT$&*bKchs=s:_ ϟ,-DGUAhv/!\~ʠJlݼ⣣X?!XgkmI)9P *q-X:'h;Y&oAVχ`!as 3I֟"DA%$  H(AAP"  DAABܹAIBtA!JOe~b)˱b2~O>lwC^/X2ܹs ? %$o>#W,ׯ[ۋO?i,ڗ3~{?Ol(XXY:#&'o~wH<11g03ww͛5׿ҍه>G狮J iӾ > F}Ų7xݭ;_k_O‚;#~5}≏qػDqM럄B/Ȃm[Yf$0{O{#/v =6rs2F \s L;~<[hY d٫~U hU9x?֛o­ 7po%K14EwF#h;ΎU= f=9~g,iUm6n&kؼ'ܛY-"HRHHkNBuja_~:44}Q(*,dlԂNmXh j{~-QF#Z-vYNx/|;g6#"1cށALt4.=q\P%mRXqUg؏gŠd~iкO8Rwd6/?`2|;e7矙[p! Tjw]Q 6uХKvzvysps;£&alqz/g߾X{ן⤜͛>}-ᣏ>oY1؂DŽO9YNX\ճkkwtsU:_S>~ 1*;fwmyA(Ni|US^T0ԹSVgi{x s"د/Q[`뜮RR߆Dˍ+/ 6gˋ {eU0s Uě#O3_gUaZfYq?Wξ\kc+?g}}s^`{}sOqt,ٕysyr/WBq.\GBwۖ?B^G9g3EiReخiWuqӶ֝1j2m;#`Ʋ[o_N3IxN0APU)mܞΙU8 Q0cbj޺_|z_m^]ٌb}>lsuٹ/s,|l{/wLnX\ճkkΓ{zr/n96\ٝ{OPͷ[c=zvhÎne:No({|jSع.auQ:ڮXnvFSш1\^خO'c3x`KOWcx'&gd-ĉ7l'I$M><.Lc'O͗ź ζoM ι3<|*ľXx<(s\q/W߾XGןe;1lٱgW5;g!8_+WF*>f2sovg]^BbBɶ4c0^b/4lSov0D!Gn6љf  0J+vRNwwfvgGuT6쥢mAh<~xԝ v]{/e°>A 𼘌glM+XF,mmwix8K?lBl̙ۆ99pW8ݗso_pu,e;1?ڎcRϛkwvsuŒoVG(P0Uݹ7{/$v Fwŧ@> tAB]}߿\/5G %NGUg `:L;R֯&_k J BF#'Z?qh `g;\/5G %  JAA$  H(AAt0q  " Px"AAD@BMoAAG  AA %  JAA$  H(AAP"  DAAB}twUW]uKTQ@Rx~S]A$ 7x|/'lJABIHBAAN(m߶-1bTMl^JJ27zh6 ? ٺy9yǡ[nгGxg #=aඞ׽{+,^̖ ٷ-ʂdz&a5 4n{`cC=7x#вܕP3{6 8/, }WeAQ|DG3K*_LAჂ {=~9!.6M:q"l2m//NO0 I8~ouq5>89c J %k͊uPpkpEaQc5jeqli~GoeR y2_Bm`& IUM`"{mUEaege!Cx :'bȱb6o_bcث[X'CzzLAABI`ߟBK:!1nF ;w[禛n>}gFPo[\P8Xl 6S6u f07;ذ6Q,Ĭ~3]XA %!B 0ܹ3k*>,|F*_v{ljꫡrMOrr:Y_M/v  bI`gi|ﻂq`ӊr2ի{:#/6r| pynN6KĄb୷bB:L1%tcʂ nK.:wB ABo=sn %,7f|b?${o{L8b %Q8av.,  %  JAA$2  H(AAP" d6ӁA%0u`6&)㽉J&͛ &* I6BA^ :U]U JAuU{)7!FlnP6$B. .?DKK ȥH\yY`2J !2"O BfA}]KDM/݉JFLLJYRwlZI;#,7{c2}`Xpu#jAѴ)j d0-.: MMmmbB(bZ2I7M&ع}T)N:5=Y YyyM瞌ϑ_) J؆Hjvl]r2֨t# (ÏzǮdMdbBҥK#IAPuLZ@ZɝL~)/$NV(Ǭ"D8)@BoK1x!qBBiu\ kO[(j5MP"&PG,)CV!ηŋ #HN"H(U*N,h7/c|M89da>$HڴYPlI(_:77C,y42Fž|'H(+=J& cڴiWߖ&2<Yc|V3A0 hT',NT(Yn rs=JkcZ( R`ܹsСCX(v`$DFB# %_xB.? α`|ٟ '_ ˖SO=֭R(`h9wu D9jjQɓ0tЀ[ J PBfq:oі.]8<<ܲaD%6JMFBye(OiCʡ{ l߾>J]!JWAii(ˆPUU%rߛ@rq&L $L˗/g(g̘'N(Y$_7QQ\0KS8L<+P:B)++ nF(..(o0sL:gΜ)S =zqƱBCCᮻnݺ vm-vyE? h(6[#H()ro )))O?YmΜ9,İul Ӿ{ŋüy`ǎ H$o22_71|K$@s/"(Ȳ@_#?ɑ\8!jtJ^ڲY(I<)~?REӢE {2P[RSSNK&8 J7?OqP9\ 5apJG@%}Jng;Pjll`:_.,p/oh8Ç~˚eex7tdd[~k׷–vJ+2}Q^^ ,;- C!D~I?dEp0VfDX7 &DeFhuLLnj H :]'-0[o֬WHf\^\T:uAо3..Ҳo+cW\ EEEL Ym{ g %o~noj0CU0=cr٤)P#}J(SZ MsX@ _xFA_҈A>}@,3 ǏNaˏ]~WCvVeˁN g RǞ\ KyHP aN"3HgϞeY%쇆Mv)d~J7?;1^Y2 LJ1TU.օ2jC_Ь`J  %\&20ؿը-넅} SLP"x*4jeyLL4j3[ShZF!P(`6/VX2J,ۖ-[XGo\3LF4GF&$ ͞1Y1^ jd/rCQ&IcC@l$4(ǁI \ mVf @hHO;Y@2b)#& (S'D)z-LNJ و 8-Ad| N Gdǧ4|LPt 6!h6_GLQSS;|?Z,>jDXRL1^HP2 kxI wBR,8I, r7nIY(cEElXiTN v]]QX}Ezd<\.jVr=}_vu?O ":??ww2qhԊK!1^8`x#JJɠ [7o(ֆ Z[7_+~"ic"K}7)۷BjJّ 9٠R7|9rwDΞ;/_: q1bm\A,śԔ^ %VF=h՜bTYa  H`& B|x墈Jf:tZp ^һt3"'㽉hzhlۼf7cI6BA^K5|0UTQWUB߄cqBtB ?RWTPk@!… ؛!K%`^vK: "Z2CdD_:s/AE_LOc]$oBl~)N22)~cdHݱ;##{ / Sh cґihJYG2uyK>v~)/$NtI-KQ&fmP8t@>| ͡`mB'ɿbBh!R'l۷7*cK## $u*5!_) J.]"'!B 1uLFh):j'wo21b8!ZDP"|r8@H87Y b8!Z:._R'-f}5&ȂV(Q(#WYC!+uvJ[ZG HN"H(7ȂU(Q(2Ɨ>#@:VO8ABZp,MH(&XYc|sS0ʒG 3n$|gqBYP" oRSp}w7֯IsXg/ZABis(P"&P>Ɵ?*2B@Y8ӻCeP8;(clHAφ`O,Wr^zQD+(- H ME)R B fI}G'd٩;yߓ-gNy=9g&Ӫwoe['"fj1('@.$7*yظt;|Y7uMɗ75/%ƌywnJ(Pa g%Np8b. {.a' 'r\YOQNjG:۲rR2ɝ8 ɟq"B)!>ZlI)6JBQJYp\@b#8fc#>ڷ\ODѯ%qt0&oDMYΞ(JǍ]DSSL+++!0CI pСCJ8b/CU^K7ϓtlJUOLNJOt['""|s k׎f|<̝MƩ%0KS(7a ;~.a74*M}MF%eB%U,?c)Dtly #B8aPӧ=#p@>.nx.t*3i%u6  K1ޱ mN T+wJ/FE"gqRqPzB"Z$#,/ %~%%Ӿ<' :a|+4G,_NVbV 9Sڐkǭt=j6&yt3J{`Qg_Mܙ6OT~#U>BYwPQ %~F//+~GP$ؑGJovJbf:YIiG ]G$NV(-^>*+-~3J&#%8vXQFjn0#~:{"Kx8akiOB  ]bVP9ǏWGPs~iB OU()aiF81udgɓMǎ)S'l)"ZvN>SڙA?Z@*phúœdhuO%%%u^B(,(|?,UUUʿOWUUD]N1^OP+PMh9x`'R6mSN9 ,VQ-lF5_[]q e<i^FZi_Xr_%6nXOݻw7C (>s뮥;3>K]۶/'IMDק%Ṳte>?1!ALgl7ylfP@˒uj<3%ŏ=;]Ta31+}ͨS՚Pzgx#Z~߭[7*}/'sQU,CiРAͩ)!+v+ ǗAhYѾVp $28}-&f-5jԈnۗ|^H"Y5ұ(3g6uUZ&c~-˙93.3qBlXC$οI&,mO:tjCԻwo77F^x:wN>dZf);eͤ{ڴiMgu+,8P][oY#_,T>ڞtgZl)̛#Y承Fjivm\'<تU+:sU@'~iuJaC.s ;&G:us9GLnٜZ\ .6lHwuMx]?KFjZ.eifTG.( Q7s5o\[iڙC\sb^|+a G}OR^yڕzܦtM73<-ҦoNF}ya]"0prד7Or^*4ZR;O6F|9LSO>I+/4쥗D'VȑqtUW+WB߬Z쑓e$Skq eu+jY.ri۪|cmς۫.>edWZUW#c_4xw(Yf|hcs%WjsmB?PbO1c*N5_02坖hfZ9 x憍$ӕW\ai{8e+Λ˖-.j+?$wV3vbqSg\gN {òyk9x#矯FhyJitmPuB6r+*]vv iPiִiuqr_ {#iR"YVPhRJup`Z4Y¶ӳV^v=jjg2:k]p|Hcs=7۬ %wyIuB}>c4t?yV?#wnr&5Ǵ-x܇s*vڨQb^f՗__<=u[]Fۋ.:Ot饗p<7S篔F^Jiƨ/ q*)ogSR3VYZ鵮QJu=8xBGZ U#͎GZu5:EohWfy-ۇ[F+Jm/KO?'sEwJ^yOf.^?R.]to[O:5I^):iתrX譻Ѽ1x];f[)mB)vJ>;o86)ӨΝ#9-)|iJod'1_͚5*5o`gf(M-6;e&寔F^Jiƨ/zE)SׇAy)BIϜ܎eIk3jh^:ZYm,%~4޾}{I˖Z{DrkS߫vV]}ZZޡ[F}6mj>2mT`P y*YڌQx 7Hi9@Jq`$+V]o4Ď*gr,'xSy:45+j}\> /MmJ sqtz3tQ8딅/=zА]t>VV(,yZOR /Pm /8VӲ/-Ci9!\o> ^zq=y`3|WಥF]RKu+JYsl nVxFxyJ^k,3jdfe=-}GCRmj>g ?1]Uy㩵Yi4<3+uV< fO1i)˱2o<`lm3[C(Mh4} Ӧ(mK*<.FP6>/ܙItЯJ;ɱcȢhK&yݰ l "1@0,Zl 65K}ٍ||bڟ [J,J8<~ZdQ x;akB B~&Y#B 6!X&OE*x65˄Ҍb pl  /ǎǁI8x'/HP#ok%J6B&Pd]d'[C(L(LH>r;zI 4Mu]G}]zў={jE(EzѣGS~ԦMzvmĶCwM<B _A(h$:vdlwN;vEQvv69ZjxmeYFyJ^:D=zΝ;Nyyy?P߾}m۶B,KBIz>|x^?=P`kk\QQQAB0alْk|?S޽iȐ!BE8pkJRBuִzj4O=hтN;4j߾=}gߝy4tP9/L_= 0Fw-ÇӰa .}? PpL]Bh- ]RBBB֮]Kg}MBѠAPuJ,J,y^`=j+W͛Œ믿N 6;|> !GbK.>wԫW/ZnB#FnRSSE[Dz%+mm:K$w%%%.&I( /!ReeVPXX }NAqݻ{~cGz))褓NK>+|<~O"OO>͛W Nz6dPya\ggl#lٲtꩧҊkfl 2`l8H*-fd޽5iDd&}65ï3~#};~Tyfg+)MpVP^Z޳4R$l.]дSB~bƩ`yHO88!mXVnJ,J?BxXȑqԩS'r>mq{IT 5ɯm=!_ߟ3#vf(Mp(B)qc]v6ڵ =5>ۜygŞ{3kFl Zt*+Z.W^I_|1%͘A[lHi_wV5kV 22.Z Ϥ/L>9*,8P݀ꫯիAoܸJJY+֋UDqq#݂|6:&3Jum Rb?S>%`B B+y %:ҶP`Pr:Exܔ8}.[GJ,.Kh!$-|gѳ5K+x6Ѣ(qCifb%h?gVH yBZ4Y?˒)-565ĒME?)~nX}l B f$iIENDB`geany-1.23.1+dfsg/doc/images/replace_dialog.png0000644000175000017500000005225512146146075021541 0ustar hyperairhyperairPNG  IHDR[;DsBIT|dtEXtSoftwaregnome-screenshot>T?IDATx| HQ RTx"Ut}tHS)EJH u7 !o6[f)w{w̔)c (cȖ/Μ9M999`0 3XG&UńVvv6P^^.f:*??h2-u*,({w 8}ihq{`=7PlFl=|ݽlFl=ۡ[ Q [$; ш|^lFl@%rs`C4b+=^ХKW Pi޼yacx(w#[El&>swޡMe?kF<@_lݽsndUHb?l( wCmu"b epP4b۔^֠-,ڵkXG(2e2k5oޜ>Crf?C5=$OO"[ұ&NH={{Zh!ٳEۻכ @?xGxhclEpdAFlegeX0bJJ^-[ ^g۶Ċ+޽Eo$ݛ +[Glcdɏԭ'E߄1QYfHaN 9[Y.mK=CZ|IJ'Ne#F }+"=rX,7no9~G,tR&'ӝ;w/Wݻu/!>X >Fle[(7X2777ѥW^bO?Vӗsji;5m41ϊwv]| :M4‰t9&ڵzѯB/BbF-_֯feJ/XlqV-eQQԪU+^81c轒&yyy"]{?=xY_u.N-P۶m?ݻwi͚5Bl>yU7l Xd1)22BV\4bVMkBli-ʢwL]{o+>pj4b+5E8.n΁r-ZɷrC`0 cغ{݉"' \ϴu䯸`0Gwܶ;*e2<~T-!\ElX4w`0 +yRIr%5`jQհaC* \1ވ-*(@ϖˈg - :r~2-Zw| 'Ά܄؂`0X3u9~]͸UlJN[[0 9˦K!hftν'?FVn=β;)J:vVZj ۯԩӫTV-\2mۆƏW""DF'L0k=^ETjUׯ `j;Ѿ)dRxT :r!M&7Ԯ];Z|9;z. !L2fmLӦB:U֠9!`0 V*,F&%:<~\/c&ֽiU:rKKQGlլYzqb*[,sax- =|}Rܥvz&ŜH>t=zX-=H즴TQk9"g=RջW/1lNjn2Y +6h@RTd&}ذTN*_<5k֌<ׯOuy6/b `0XZl)Ν4V2Rޤӵfrb&ֽw)+3 <ꀷ릫IBhq: GCo{IC|B+VƍR uҙB{b)} t]D3fLJ* $.K.ҕmxΝ;(,4DsLIlq>X`v֭[<}iРAoRdBУGEїӧ=!TIl؂`0kh=%ehA񗿧 )?!{)=r,4)X$1뵓._ KA,[-$]cpx-i4{,z,{FСfHO[5P ı-Stq98X,S&'x#|`0s(RWJ AT~T!n'3~a}#BaHk1'UvO.<1Z8tw8JMQ[B+j;R^Iq(5;ޚLÇNȔ!޻q `0 v/;@-SCѻxUoJɗ{=g}a WJlMY^؂`0KYA^݌_Jс/W hN)' N)勭L6{rbkOXP \*rZp=^b[Y7{s `0 +U({Ė+- `?UȽN> `[v>"$޴WAɷrCT( 􊭌 񤠽Q҉)??bqç/#z -: -tنG_0J"N! tvĖϹd'g:zghbKbߞ]۫zP:r8>G񣇊q(:Zd!Vyb|ֱ@*,,j߿O<z!`غ{݉!|<-LJy01!5 `0#b+//ܹmwTd:yZlClh"`0 Vb+E>GѳRbk- L\1ވ-*(@ϖˈ/gϤx$ :r~2-Zw| 'bP`0 V,Fs|]ExGW3.rb+' `liR ;sIQ{rNj9h{UL"T^G!7l&,x^q9Q  `0 ẉ}Sʑɤ^u(1C)[Gn\F[zPw)ub+5E%A`j߾قL[0 +pCTmubPRD[h.ė1b]4H*Y`l9륩uĖڽ|R'tJlƈCl`0Ս_P[.35)tG#Y[juAڿg7 }^1?OOWZFLǏ P͚5iI\2 >LUV\c1lPS/_5kF[4iI 4axjڴk/EŋQNYֶm&8X":yڰ~}!V֑(WjՊ:d؂`0XiR;Oit/eIk,L{wRVfAxo/MW)t4ݏZk=~È E8ۄўĿtL} ѽ{w2"Xf5%&ē߹ԱcG!M7Љ>tb͘1*UTΝ;DŔh*Ĝ4ҥLӦTVM1d(-[CZٚ?!x,.[nYgi<刭z0 dփ\R{p"CH#Sb˘+$GUԩᓖBUT31ýRx'+9)Q]zzrK^h%ᆪJv߿O,i޼+ÈNeZ4`0(6uJѕ oMө0}:eŭ~ #WzФb<2ƢjN|).]lȒ'$!q1$x|&E 0$]vՠ{FС +T zt*'/]F~]4qiW\JlY2͇؂`0ك9{+{Qt?c[GNt0[ڂo\Ű.b>3ڵk'Fi 'ucG<(θI;GՂj3=`>bc+E.zJkIÉm[_7(:[%?,؂`0K_E7Nʈ^x_Kl5/ŽX.!EZ܁#g;]{$bUi4/^k]b}{}p K/I45j +4N,xennnEѧwojӦsxܼTq̙_h be Ȉ7y^WZؓ#ق؂`0Y(Z'!b 7(##iw% BK[z=y/cRFDO(0`y_OxWg5kۧO|IC>bpjذ&<'\ڵjѠA4Êf73g4Ι# Dc=T'xBE%iD- )QzDou)'c!#՞7RúS~=|X Klq%7<{78z=Z%  \eT}o(zJM)rO/4",jY؂زJlbz2j& \ fR|A-Pd@sJ N9PouJ ',_lee&1bֲ_O`0 檖w7TSՂY-s/'Ps ق؂؂`0T٣[) `[T!:= x[[0 Al ~<ĖC/#3Q`0 3&22ēFJ'<-WDžϞ>%̾>j `&`GЌ0J"N! tvĖϕ˗ץ?Ҭn4m2`%o.U{Z(9XC8sNpqW {[N<1> O:ӣ[[[b b b @l@l@l-W[$M|l eJGa be(;ii&jk磰v 2b[Ȕ b XnnVL:_l9/4W*pC \ш-[& 2;:vH+V5kҫJ{PQg09mb bK>)*P(PaD[&&9)ڷoO=Y.ŋAe]ZjEI (gb|͖bԭ[7^:5hЀFUqb9w8"# r4iD]UVM~RTJ2yHI:swÆ :uPYfd> sG~oQ޽MD8Çq,Pn҈é~Tn]Q^1њ*UШ#E@-+ĖcOیc2nY/Kv}ܰ~}lQd3׺v-AѧcXt@l=bպuk5k&]r/Çi&N@]t>vݻw!C>1z.K.nqaB۶t @-ZlmڸNC3fLJ* Qg,ٳMB@X^~e1IbB<;+pPnq~7)2B!ѣ "y0aq\¬y 퓯7L ö[z[li/ղekW5ðO<;j9V&i!"h"Zm\y9(2▦94i"hp\1%Gliu8hvs<'HCV.0x;K˘όiR .W;I:^-dy?uR{9y[rVLt|a[-kei=1Wl1;w =GݒsTY3d-3g-e %9bիW+zxWum[PQ6[oH:t]u--K^6{,=\LjZR^|f,M̸ο4ˤ27zb˖] olcuؖq˚}YZO,[+wi޼->gJa|4㧃 +?~/Wҳ>XhqJ@4Savxz 2,Ϝ9mTli;'c;%ljs3Wl9nU׏Ob7V,x^D--/c>3VgK-L{c=VdMDNk-[&͍ZhQd6-5[R}qYqC.5ڬ9gJJ65YY%QKsxhɏ驧shqbڿuyҶq=^Ef]O0eqȂl<& s xy |+Vh"8zxvsŖ|kӀw]k׮A^ɓ&Y]^|f(M7pbΖ4sxCMX` /\wY{ו:l˸e;,'ICN-pY@n\oYr5'fƟ@%}bX@K-޻M4/_LL'aV*&sgϷXl(v>;5j$ZT-[\ej?ܛ~N 6 ^y"Af߾)cӦMSJ%ݷO͹Ӎ_Z5ŤU޷bXy+š,wo!I͉Pn5?9,t))A{1ZbֱI#\yk.b:l˸e;,'/_cԷ7Hyի̊@lrP/=#?OÝ;9.[OdAlEDO ln ݸ~MYᄥK@lbx%zx5R--@l@l@l---eerD&>6F| 'M[w939_^]&ˈ-nr#SC_;MٺՃPElqP h8 Tl[\jڴim&VZhf(scV)[e46[S'OPnݨzԠA=j&MLlj5k֤RTdcZرh„ԴiV׏RTJ6lPSh6k֌<L\E+"taz6<X}DrUVt!+Z~}1]7uY~1V^%꠾,^:uzȲm?÷GrԹטwͳyc1P ?7:cs#뀡<4|MPzQD uCLtfzo  e*=Ӵ)ժUṠj˖-)fss⮹y.afi9 @>7=^Ov؂z4bI4tQKKM5, [ܺw<9:VrRhQ]zdY~9t'|8q%5)>̙ژؒbz$-[dZeĽA}zߧyU%qל<[')FWPAV #rUPP +}9{{LL;_D#GzQ}E+s힗w<9:օH]޴:t u}u+ (׮}֔C-9y527bIWFmH7VoLqiOO`1ˤƉ^k}7tڥw ̘uYvI߼. ?9<䓚|* KݒkN-ɓԛy]R,~X8_<#?~/Wҳ>k;Pܵ-C']Y_X<[xbܞ5&|cܺ2)>A \zX@7VbֱI:0ꍩ / 9-sIߏ=X Ėn^xxm[ڽk:]SOt$ m[_]r],Hӎ[Ll%Ŋdg d,ASpkqn%?.9s4x Bw=^Ek+ij}c~OO1B<4<ͭVW>Ǘ^zI<$7OXS<ӹs~8_ځ>kN7SPZPzGl2usӽM㿹h䛽`ؒx4,sx]nXbEy^1ћlm󮸇h/4^|1jef OS̍H|B۷WUҷ:,a-Y{6и/З_~YE ?Q&yiÆ - >.OUoޒs<ʁBI)+8?' MT@7Tned2O6F| 'M[w939_^]&ˈ-nr#SC_f[zPB|beQ XnnB+u*ծU*WLm۶ǕH&N {(6ϋ#~OёJزulknݺzor)*jӦ]?nn,bx-ZPժU_~6\wK09mx@7Ԯ];Z|9;z. ) [80c_?8͚5X/L˗7+V\L۷[,biTX(冸[ 7_ϑO<٬XanlDl-[9,9/{ q2ֻW/1lNjn]GLÊ 4lI6l(թSG45kF[4i<,9iDUY@&MuRj*DrUVt!bzԺukzꩧgϷ(B?CЭ`Gx"1쪝.Á>*VHN 3Sƍ'wnĹoFJLl:67;҈5Yd+"MFomXHbx-cF^.h^>R{lLF4iҘ~m1 >3oe `̍QU0rMKbcZwĖE-:* D\|q͟M!pn.1qu]l#oڸNEZR" ҥYچܹݵK[ w',-#ޖPyj#GzQ}E زelҾYlԨQC cLE-Wc▾ǘ0 1J2urŌ91cʉO1~:q)cĄ"-]k:Xtwc20UIyܜElq`yD XC;J-"ikymVz׭*#܂Ss\\$Ėcίb` SLZ_ۖȬ-¿9niTl eh_zLs1'ZzLs.pa+Om4kKM?x7,{](svs6_nnn*) {rvxz(@`Co Irg(y/f-3,{0Ӟji}"۷W;b<:B{X8ժUN:Eƌy=cBKGn\F[zPwq)5ax֭5{J@lY. -Ck.z']FlP bP խ[9 @lY&ZOOWo2Ə'K͚5iIÇjժIdÆ :uPYfE z6m"Ú)*cnU{ܸرc!-BK{Qھ}9'LЬÿtL} ѽ{w2"Xf5%&ē߹ԱcG!M7Љ>tb͘1*UTΝ;DŔc!t񛷫.#X[Ė,tR UV%S5bT"D bx^J%<SjJh}:,\rtÁ ըQCgQ٨Q#!*!-BKWPlܰA ^8IgcIGC{xkW 7m:@iB z'ɋ.|N!-OnjvډQ‰{QX艒4~稢ZPtw8&"X^t*W(Ϣ}4Be'yحm64mfY}b9.Xܾ>֮]#Y__z饗hItc#CBly܊OԦMk1QlDG΋6FGEKkٲ%^` -Ėկe<~Á,V >=V,T wޕcf͚)z#!)'' kժI# jsx= +ʋ6˗-SٳfQ^= 2@l9`؂ @i))L$()-U?#TR ڼa=-gd/6.P*b Gfj ѺUPt ÇϧHE[]%?B2Ih#\NNDxynBI q?[8 7J*Ǐ ǎC ֹ{.M:UaÆ TMz`` уz)n2M7fddЧ~*s\GFM-kVYtͳ2֬Y#F* ;;[ ;=3"޾1|j7mڔӓO>)_ҤIqtڵ7ce}"vZ;R='Lmc1'G *ةS'1OW^BT#"#M ) 7|S=5[Yf+)y:|&m ԥKg:sL{4d'Œs.Ӯ; M7Љ>b(;1iDzm[:x^ŋAl9غ{#[778Mρ7}ZZ9R\|C\xq`L6^u z뭷6Rz[u;ogqviJLL4z#[{ٲeB7.]D?,z3U*I;R='Lmc'G DlI+˹se؊11G]T&SrY_Ͳ`˸׊nҤ1 <,Vc *ey7@>_yYBhٚjҤ RY>举~~z/Kf sv;R=mL]3hq-bŻr*k6d%^*Glq}ļ/+`!ԭu0+NP uaC)ŋ{br\M-.>P۶mh߾b}M[CQ'1܏ÇY|^►Uwwn6ҹL,֮23do߾">z%pVJWpfȍߓ'OK_Tƈ>7fT9m]3hq[$<,̟7a hɢ{,%]=kx]ڥK<ѝG  b6~{Ϟo+C<,7vXU--[/_v>IE[uwkժUZj ,=~x^+bodp _#A߼gϢmڈ^mZd~?RzR翭ݿ];o]=SRbbM. >9|_+Wj׮&:Mr9LkWAyyB;*999ԱcGjѢN o^Gឣjժŋ͛j*$7r esΝKmڴRlKزo!9"n[%'\',3gPӦMC)@lsoƍi߾}f_駟RÆ ~4zhM =z.~>sMݻwiԩb9Y6RSS:f`BbK֗~'>͛f =~&_=LbY|8@ 4]ߪTBcƌiիW#F_;zQgMtg!4u. >_%'&7Ėw8M%%%E\n]Ç^z}0{Cj۶mKͣh %___Mڴi__9rK|߆|ˮ]?^TT<<"sf;vL:tVI[Q*bN7uLn}}z7\cǎty1ox+Wܼy߯>}ZIu. >!'|RϯHO?wxb+''[TPG$11A\Jex˗5#5/e<~Ê˃[,g(!!^kN[ÖSڟr#ېoO<49lٲwvvUPA}5z8oWժUiƌt#?sF>C'suQvb9jݷ]'|hժM411"̙b$$9r2aqQܹԩS<=]/K5sEe74nea7Әѣc&cGPQ(Vr6ߦ| /wׁ߶ǖTJe|I.(5odȇ[zPǎ/S͚55u|Q뾭>4~8;Kݸ:tqbC'Nwx#[N&V]93E̘1ZlII bPoq|f~(C}!kon,]*VHI kW8th!ZB3[o/] қ9кi_B쳱ԡ}{G[N}S'AD}^JQ)EqDw} GIʤwyGgobŖBQl/"=St)Zb9>tHSF ƕU?cch Svh)tϽ|c߿X6c"۷/mۆv%&΋+}?r9X47bW^yES:7Ė-npud8̝3GTErykWܾ]ϙ3[,ׯf8'b~z4fhR&'i{)w_nՊm۪I?5jnUVZc|R鏕+(&:% @i 7QFQTݺuO?m͆'/>|HV}:ufB)]9M*^eOdjm?DGļ~'k뾭>9r䰘y ` Έ_8;KOJ[N&6o &q༤l37v~vv!Ql<\W,oہ !Pl+'O_o b+Et=F~0og7ĖHEyQro1 8!emBW/_/ o g,7 or"RUx!֭]BJuˈ?`-*e2%9B""IDATxxT?KC6 QPT@ *DUDPD`]f  ݥ@e,-e ;%i{[:~y<999I{FY cǎB!a„qFn޼)8pR[v鞐7nȃ;rmB!ݻwO_&Ǜ^xx<&!BHgbj>̼}!BIDGGǶ LB!I=z$nB!4I>VMBIR*W,/"R\9ҹD\8VZ)|(QBJ.-#G`:BcLw]fBHReԩҼys5ݱcG3}Qm%$$D;&cZBݾ}[bn $E= ޑH5gL}:?lXN>syW?[U7lۚ0gcyݺue]j٬Y3vZRX1y뭷w^j,Y,u>H/.iӚy$DwSA!I.zGe˖IϞ=СCU[a/_^%88X#e˖VZɡCSNRBvz;Ʊ ^>Ј RL|,nFa4hWMiFf2Fb{*^bرCo>y!D B6z>@  %_jU+|ռu)ڴi^~}`wUT^4kL_rE?Qnx761ax|9ZmAq6&ѻv&{!$I135h?4ɻR?i OT%GpM|a>ݨQC5!7qS5їd֬Y Xa=!8 %>A!IY[n.Uƛ1~S՜Oݻw?.m5,ק!g.&"EH dȐ]:wQT}aMYrf 8E^k BIj Ll-ǀu:k@Çgor};wRw: 6ubbb7!N'N=B!v0+ !BHG!EhB!B!P!BEB!P!BEB!P!BEB!G!BҔ:_ʜ !BH k, #=H<9\8V".sgrN)9s9uBq<8NSǏ*NcG&9d&{wK){wCٮؽSgڡUsŎm`[7ضl4uN 8p3wvAc૤bXɣ9]n޸N!h.EE͇/ 5&z^sG{jo=(-z]]h]'ҕB׮^<&zd[=Sa&#-zDo?6% dR^ig|F!=E2b.\y8vHqgE=8(z#z8@?zsiW7zJ&/>M̈~sɜVZOw×,zzɭ[1$=z ]&rA -*L >.A6O{\2i?oY0oNOwe.z7_%W 4*/IN_,}&1%3=WxBC&Eo,SHL4Gq2.D_ϒ= 748`B(z[0~<]^#y!q2_~ϒt!~|Bѣ7OKhUI9}.JLg>Kf:D/=/EEO?g~DѾ*ѣ%蝏ASϒ|(7}/Edc'=sMpUH,YW_VօIѢO$5O3O7%%#NԹ2d?Y2s@襫~D/]%sdEJfxN͛ɂҵ1bKf'A襧NDo)S&  HUI-z*mbKރ$?$z.>g >6KONj6|E+NO>X~6zhۡ}{y%Gd&STŊ3+ŋMAkӦ˗O>4hP_6[c=gm$gΜK/D_Hܹ矗"EȄcMNiALt[w޽:pFA*Q2dY2s>_8?]oB> Iɢуt6$z}A*UzG+_YDkeء};3{,[*_5R/f=HoWs%$(@*&qL{]/ KBM7v(%BUAH$d-9D~į{rmڵ:pF:ۉڵt)qFK2l|d&V楫 Ė`BҁeȐABMP%sf Dimɓ;iW-\ <󌒼ȡg[F1yΝ;ۭ]jZ/$8 yDq5, @~m1D[6vq3A8/I,#dJTx-'gvŊ2wW~%67O!O:Ws7tZÏ}zw%18+]m/E,z>N_Mjފea&۰.ܪ[($H̓\fs{G7nh)Wn6 E}7/@mvj)_ lzs{ݾu&Jv4MJ%T*K,1-rK-'oa"`+W.iѢ Μ9O9߅ ղm۪R^xAmp >)۷ & bD$bq7J;ZVX&W.iSxrJ!LF>=[q|8No,GTb J} I/E,z8K/gUvEopU+lvư'zazmuư&z~ UdӆJ,E7D,Qǫ4{$k.)?Gw51I35Y,䨝Zi9$lٲ8tZ']J*Udm5?֭[ Zxz{ϕuke߾hTׯ]弖-[Jڵ⣏>͛%/Fx7N0Ү)"?$:Hi(^|{$+EkGH=H\ݺJ֬Yɢ ټqQCyEŪ:WY3e5޿gDG\rIR%uSL+zfz*sw*mqD/{lҿ_T/)Dϼ'%k Avm뼢'W_6F'<,\NQ'4mT8ә3gRm)Qsj4.Rd˖UӢEsoDVLM;v؜ް~k9^n5ׯw;Yӊ 8#,:pU ޽61Rg}VnbZef5+eIDD2n+P ]%;JQ8!y㧉q3gAo[]^]I~iunjmx)zp1bPXvCʦn:yG~YݰuуXiJUZT) ަ eAK,!u|dWppqClҤvg:~jT$gKUCO0޴FUZT4nr^3OY:J&-MpigmXO[^={ȴѸG;iΝeEMbgi M9te5Çڬ7iJn0pmc>jr%rᘌ˒2viqZukF P>ZUԯ'ѧ. V9[h҄_O\Kz9b7K lI#ZgzwJHF/~ysm.u=ﹳսz␐tu@߲ii]i`B҉hE2F&')&'rjӋH>L\rѸ% C{ Mbg靏1})Rr ZQQ6?ͧ_bWAhM"Qjy8ֶ1v "[/s=]ԗ ˒H:fme7o\osA*yv,o Ӑ@kyj&H~9:k]c<onzuș3!Ue@U+Ui-:ޅLEoMboV\f)~F9NA}kkY- U%"y?)gͰyǖܼicv<}MxC,^JlS~}ի4$8X-߶uZhzl//z:QX\ޢ~cmpj]vRyB֭ ˒+D9vJ'|YXl{2\c۶B8-|c>m Zfuf-k!>y?ѳ[x!1n(U& ׳{ *ztMTE^2^ܸE%(2KBC.G5ڥ 4P1|Pbz(.`}zTqCɎuFw&4c'v:yQWd"5jTB AG:v" ҥKKÆ uJ9Ɗ9<4W@iSvm6?wViR{˷vȋ9W\s#KDWT'(癗Yk|r.yҗ1>Z6c/ke4O„9|;D]޽{xsmWX<3d idM7AWϹvK_EȠչK:X糺J*emjں 3Xagi>L z)SF;7k2^Z-O6\[e*ckRhQGܣ{hӺ|'ORI~[HKi7>qyH\3 G ]ju>;|٤gt {͚yNwŋ$(Nо>%e82Cыy8Wc\$ .D/xeаռ豊ޝ(2{y|ڼߩ"C 7k2^Z-OޭG za4Z}R%!j䞁ROBo!=˔i%zxoR*4w6zS}>ҋ/BGK#Gpu4ѻy8+We)|CH˴wiysft5b)SLE/݋#:,K3fr4wj 3S}VE/4\>Ό(ѻNj7DS4wlݬD/5+:-^lx)z` QEKJ,=T\ծX`>KNvh8^!)X/~>޲n%v==,H^ f>K^k^z:ysf#$%^#sgy/qg.$^c>K~ zx)z` UoM=׊ąY5#/7BRy{yJLM^2/ܤBR7!(_>0C oߢ%q=Pʒ8pwa՟br"^ =!BåH99 AѣB!$;~&z/zzɭ[1=!BҢݸ~G#BEG#BEG#BEG!BѣB!gD|-zdOM<]DW_Z֤B!Do]j)_ ^…]6ezB!$ #zÖm%z<B!iR%F^T˒%lB+&3f%J<9J&O7mCI_9rj"$y2eJ9%K/)ˑ# %m}Vפ;wnyh"2q8uoPjkPу˗Wg.>LVZN#BH([=W֯]#͛7W^ya޷Kw$TV,_~$zئW2a~HP@qcG+ у@V$|JS^VH dL] 4lX?YDQA+.۾mShn׬wq$E8~L~twA:"=Y+)K !$LU4B=;rdΜYIi6mɓ;- |֚Wݮ]*vې >dѲ28$o0aɝ+WJC;7IŊѢ"/ʩ'+/SqҧA4iIxlk9%œtE/'EfJ ޺kl%DkFr#{vS8~- /R,^d3%zGT۶nIԍ8e$Nb`֎3-cIiǘIg+)ze[DC&XPf3QуeȐA /7Wކuj<qa?Ͷ]۶j'qąj6mڴY UgZv9tY , r͛kTof ,ϗ/p?ߴ %m۶Qq͖-jy)*rӧ|ѨQ{I5tԏ]%eʔL:Juk>|ۡm-IhXqaC꜡쫯*Lqoypv^K衤HbTԱ[2 vYɣu4QްwNcb#u"Eo؛ݤI.$m>SGʿx͚!k׬%څwWfϚDU}maիWndm]*S=l22mdm!`Lt$nxC iѢԪUKN:]4k̡mY*eUjk֔V1-9:(s7K̙-޳{C{(d.#dRR%0OG*sgϘ!~ӦNwݳ[=o3ӻHm-ILX)ѳqURJCTp=-]*v#^7g組ҳr8=b46tCVu4ttN:qt]=.B(z)L:~~,XPj*!z; ! 9,U|=о㞸9&MԯL]W>ܹsIΜ9Az͛}-W1׮]+YE -H7m2miclC2uCG !7S]~ѣYU@Ff AlR a%G}$..#U>ADbn׭[ڡMEJ֭5(1a%V⤽Y\vUx=I׌^Td U;JC{O{$UF#u"ĢOY<,zxVUxnxj,37KΙ#oeD:zC[dTI}{Hv>Jz3E|9J1~iۊy͈ؾM ĻHZOGN{ש3E煮#C~բ2Pk4Ɵ{9S5~#4U~sK0QufUz;u-^P]jj_4ܲc J (T-84GwuJCF\_]oFLyWiUZj*{J}\]_WiMMMM:jtM~MwIW_IAnFn71Mzj.}4w?F_#o~ܥhw1p .C4sae 2]Fk!&y2AeL!5L󐩮!!3{LO5C ZBB!$Eo&y-zɈeIcbqѣG]kȽ;זc]SXwy`o6qYC#BHޏCnL =%}]=R<],J^X~}˜Xɋ\F0XyisiŨ7$Q!,Wm[3'!$!.\;˴ G{ʢO\BB| fۛp>CS/\∯]8;lg7uT,S&O6}(=^SCO؜6)5;┪[wEq`>Xb?H:u="+/… '&\\OtJN"?uRlVNNOI%vnU+Wȟ!3g>}zg-՗>،'g+8|'RTdqCH=jモ KC7i*x׬^fMo}A8!w8!@Jp}ze05Pń7nܠdrAprF(=Ao{ɾ{TBzPvAj|СR7TZٽK6hλ.~JPUWqD,jY+rέn8˱^={|aÆɅqCqFC- #/ݳ;N^kez5E\p=rYR!CTxHwsC qn[|ϓe|?h]Dڭ/@Pbߨpt·w{idmt2r؋!=^=<`3d kV[T5MLЊTxW,i>J?0 A/m Pr/_>,<3E[RVq[VFQc&@~\ -{6d̘@(55iYk妸3>4u!>(-Uhqxxև:tPzዸc763J,nSɯ>Y[9]^{H~F9wrₒ3[fe|i8?悌|amo4idkt5b+^P(z)N 7CKK"P_OmQQգ0>gm}}Z/űQ%zTu↍L:Klmxl5[ͣ: %f͚w-ʫ J=KБ?Pyc3z,c-~y ?h醴6o+66zXDr@(z,zk֬V*8w\0$zׯ]gNS]}\bD =^DZCcwnJyqTZEk,QZ;HSTk_S\[v}]un ,ulFϓe|,-%/]UJ\ pc5o+6ڻFċ/'$z_EϲcKҞweJq+#1_\HPy@ P էSg^/K]˪9^p<kwx6rYm׮]կDz@z|*'G_\HPcM$!P,DkʼnFemKٲecۦ8 A6*k٢ԮUKUvmi=t6xg^5#=@{$ZE|P#^ =6zW._V@ukaM.GGwmټTM;\d۶ꖤHxS1W!hNJ^B!= kn#=~S}tEwС'.zwO#BHK1wu%zׯ]1^K* -1wJ4EB!zJx Ytꙇv=5 qA"U=T~S=~ǜy=!B(zȋҡCcWQ*T FwWHaYb7-[y\&)EfP!D/=Vs(zBQ!B(z? ϥG)z=B!52WQ!BѣQ!BѣQ!BsݠB!GѣB!$O#(z=B!I5!H&Q!DoŦ}Ҽ,>,:IѣB!$^Q: ܤ/PQ7WWWi|Ѵ|4hUZtzJޮFmWiUuoptrv5:s.nU㗁nm}>Mz uKHw[(w?]h .Ǻexw1rrqc'zȸI2~Lp!zd)mT5ht?F`!`XO,E%yΪ#zBEjDϲzr9QBgKf|T~cMReH,Y3x%t렔'=!E/E_qYWLi5oVYTMgaK/E-]DkҸ=rXJ}vVE|;kMD%y>s [o+BE䢧' YQU*:^`>p1VZqDvCH!c̙o68>!~*g}X*U-]ut)zBJ]裉f6 Dȡ(mB!ZETR!BK]z%E[Z6%_|#GviРlX$z {{ォu)EB!ORDS&vmoWs%$(@*4IЀN?k'EB!F"gDj">e5]$w&+X?Ū[BpM=!׊0X^SVݮ\f-]"Ml"y䑚5kȬ)zؑȋe]R+!x0jPÌ=Bfx.܃V 4.^3Wn׮b6͑Ge+5B!ᅥ4u>|Hn߾E/{2d@Uvm)WxʊeK%(_EO2cILd˦ =BpAQp?9|,7W=zEK}XI6mX'-[KƌdRG&ѫAU%6*2~,n F#Wx f2k.͉?FH=1A> ]x!8p!=| ޽ku~ŋ =!=8pHᢇRa˖-f-D*_wZ7MO)SZ/ 3\KR) =".ߑeLbG뢇# Q"".ȴ)V/~>޲nu>ç2gάD i?~ RǏ'5WYץKg)[ka.8`{vK˖-T8:=~];)T@VG W*q#ѻ#ћ:%Eo zBA zır!dw;d*Ƒ#kRA N;4|<~M6+G#)losR~+~uz]] !jXc]ɴn&ˌn2w,7wDRW.[,)n)z${?:8pHf@u-JtKRѻzJ=XVʛ'|KٲyIjMy<&M튞MRҠ~}5j@V"օ+V"׳+zJ;uKBe2k'EB!=ܳ>+my(郔a<0TuP̓ jHn !%X}}RYR͇颇W`a `A0lޒieU[f G!T#zG$Pу=3qJBs> "qJ}UM1 nz 2)zBI%w(կWOC 6zM76 k SٳˠU[<]z)3L2ɖM)zB%Ah;wnɛ7h<={E=l5j(rҖ瑯J .z?vA\M&ٳg^xAJ,)Əe-!B(zEB!=Er" {͛7vRE/8O"/R(zk>8Oz!]/i0!$n#.P(zw=_y <@W^!G#$DuFw۶W:9r_ XǏ?믿./|gO-aBѣDUAR6"=NPqqs&IŊzI+=kq0"/^\aąO5Y2=(zP(z<%WCںFEr~Td(QBԒ(}K eZ/P~O=9EE$z Ĉ"+W6M_$]t we6o\R˼fũhhX(?E+&ٲeSՉ Ӝ#fyo+'͚53M>wx[1_=zH"E يe7TLiY,jZ⸱GR3g,]>e(mk׶(_^~eiӦv?k:gEz>WկXwI&Mh8FnCB(z$7LѣtDoeꡮOJʲf*݇5kJV8 vP-]*ǎ#FJΎ;^~a5wnU=ZRҥKk7kO )[}{%0pa-[Pħ G>/Uv>]I\}9Bvl&}Qlذ^理m$FD9$wH]E/,4DEGHrޒŋ,a+%KG{.| v"FiUu'Ș18/Uʇc_~2L fun׭[E+z/E4ټiiަS)W6zΞq5Fy{2{|yն̼s4mTP?\!)EOjFUh׺u+q̙SLgG^ESbbnR(zk~Q8Sg#,6d:HB @)RUޥg.yzۯ;J…UctnhؠAuuE^|EvD/EG\kaz0㏾1cFSUkbyk߮኶h5WW`.:qHjуB\+o;t0}#EOު7pݺuu %@Px-^|oI]|$m|.iG!t'z~>(zByU3(z=B!EуܺCѣB!$-%S(zBQ(zBQ(zBQ!B(z=B!P !wSLNv~C(zB%Fiaڣ$kܡt[x+[G!իW*zU? EB!F^4у}mɟeə34id bY.\H>SG}ҹmFr!raCD/sLWMղ/$_4j˞as^)"'W7fԈ']&S9kMKɗ/dϞ]\VZa=9^$k֬Os/P!:D/::iɻ*I&`+UWMD/5헮j$wM2f(VecGRiavEo2{,^, <6[I d, [ 4l$zJTas;EB!KP-%K k&P;wln'O8WD –b/[j%j[>I7]fZ'4$ئA2gά$od;W.,X@ic-!BR8M6m`W5C=sCJ0oՊe6Eo1Fr#GvӾmR-|[qE/$8@U CXkT&])z$sUgʙq\TzFDoDj5vHVU{2tu D.C 2xٲi\aM omڰ$:c@ztM G*/Ec'dQ`3RS1a(Y,ΜVD|f2wl%QÖ qcF˖-[F:ogj4KxT b.zᏫrG!ׇAjP:u,Y"~ }dx]ݦC2e$׮4ItT߽Wƌ*fxh1]2f09~܊aBHz=C/ڂ ҷW_-%u?4S@CGUꦋ^;)Y=˃K3GIyM%oV#,?TvJikɯ̓((Ԯ]$zUVlٲ / %KcF?f"!=q>TVX.+ΝsFsgϨC%%',n ' ŊbC>їx)"BBU;wH߾}| c.|ʟ=Bh2/ P%u'OW2_(2eܿ/.z];w}<B(z?vEOEFqyI58^/ӶmjTQlB.EE0?tYf4o\;קL˱Ock0TPA~.z޽{j݇&Zڴi-S#J(!>=E;ZU /ޓWw^uk)zUS\ɃZu4D{Cf͚٬zE:tP<`$/ǥ(Yd3ƌnaZ{N9sVMޱG<]~}vgՕKy. !=^=×=,`SVZ^[<]P‹-=Lii˖~0q?ZU{uf*S{JDSy<l7rpy3BQҼ聟~"M7+3=9>+6nzK~iybŊJ`]6zi|/C0n*Cd{z*ɻvܹ}+m g!!j衺VU!5r,YXIT"t0$P4B)zE hXޭ/qW.\X573cǎjJJ.- 4`4 x _^ߟe~]HRDIΝ;kV ,Ǐy6xhzPdIqҷG猜9s)SZϛsH鄅(~sf*7mzB(jTB𞼇ר%Ex}QҮ͜9CUZΧB!iXxϑ_;S̜NDJժɈ)zBHz_Uƪ۴]wYz?EBI')117)zB!LPx-EB!=EB!vEG!(zzɭ[1=!BҢ=!B(z=!B(z=!B(z=B!^|Doټq=EB!O|m^X梷aZɝ;D.M~UVE/lIZA~jG!уL,YB;9k´)y _GA_*rY9s=uZ"ΝK4"4$z{O׫ΙF˗^un 1KQr Y(njTL;JkqiE!A^bW s_4jD%omo;H%gҤqc٭ $/]qcFK*M-[6yW%{lRFu%N֪n3g,_T-*3fW=LR@[&RHɘ!/VLݦD%m۴| K9^3J$k֗$o޼e=&ʘCe 9q.LOw3r?rDn0!$^tt]у 2e3Fᅮw߭$Aj2&dJL`WZ55rIV._%tF X=CfzNeaKi/צu+)Uxj.iS'=nxE~!Ŋ5‚|zzI[CvᅰEGk葴P]{q=|^\l +|Qrmyn״..ߗt@Veo3#˔)-^3gs=.>y(hу!\&=#ƖMoJ /jkI͠w-:]=޽{j݇o>*ӆ[i"HGDEyQWbõ4OP%vߵtCJHH Uj脐 R ߹<0If&u.sysrϿf6&&L ٱc3N6/NRSw0V1k֭+2tMnFs'x܌mf43E\Fusm۶ƩۮZBzA)_Ϋ]{4h@vF5qGc29L֮I,Z(Ə˲׭OHժUwΡ7ӊ( =/Bz׮6;W,7l>< =1kt>`7f̌ 逸4X h?2kо,7nnk׬1Lӝ94z% [j%5Y36zΡݴiSmi4F̜\9<۱Eu<@ 9#_Ɂ ֘'%F jƬB֕5G8o\BޓO>+Ç V0M䩾gBLmfuS/VV-EzZc-cϞ=6Mofmt Nk1;tܧ!ɞn-[ * B/u[n[7:% 0*nڜdzPDz@zGz27#@ scL|z(b+>Ί)c ;BE(O șdq6a,z137nYXM 'gΜ&=PBOϞ#Gz+kv<3ȟ jb#@| S'3 =B۷7#9!)rPPÇ%-%Ō,# =BTٿg̉72/&zƏ,+ =BIzjm.R&cOywW F˷3zYMnG@z t{e_ʲ%?.Y$F~嬜9}}re:1s8鐹^܎rys7"Mk->eʝw6Coy ّ>= wR%&*ʬ^gՊ&_1kpg,Y|qlR =( ܘhyj] <7o[p4j(Ki\rI5uz{a5tlz;o-7$z n7Z]oSs.-7wtyOEo9:txET"W_}ԭ[Wg KÆu]'-[4kۮZBzAs5˫]}G)SFtl/Uԯ__Ν<-5E,B/UtiرTXQʕ+'/ܿ7SגvMnFs'x܌f'4Mxzm۶ZV vE͜}edh-^МQ믽jkԭ^mۗ,YRnSG&k"o\ϰ!/xRK,!u(cGrqd UTr_+=o $+/m[*]ӵyvli⋎j+;dfq=vNJN;u(7|PX11Y9^NKo7vhI9,׭D7ϳ}Jfdgwb{Ҽy3Yly^}!s,+;+ԀLnXF̟+6rz^ok]s|6ƚtuj?w{7{Ћ9- Urzs=//q/c+/]lN\I~>hdWYP`xs:7a:yƈ1tVNqrWќGo׿v+Ç F/SZĞ={=H+UdvYc Vʕve-Z4zI׮]|QB3ym $|Tk+=7wa3Yz5ǃ #zO 9#͆1Fn\D W8Bгߖ+uKB =@z(^77#@ scL|z(b+>κ۱ՄGz.O șdq6a, =m C/&rY-k@ )̙ӄZٳ?z )}{ALjӧO#=t}胾2?XvPpnz`\N>-_}9'!=@纶ΛΝ;Um ]vu]'{|f b{/:zzRlYy zZg;u2#%Gǫ;#k֬Q#_bogiڴ__U:u䭷[<2N7?_B =~aQCB =]u]oC/))Rn]/~~+/@<.rٰ~]xz@z@ O =// ,͚5sxztԨQ]*V(m۶ƕЉYiow1*IorʙFrOgW?\wQЃӥK;礏$-5ūכ^ o\2SǎRz5Zt5'9~&kז'|L#ooCx< =ޒŋ̇ol޼,_=$}y֠\`ٝ%0F/~gZ1GyD~1h9ϸcLli&MG~ =JuW^i6z*TÆeC/zf.ZժRg1S*vcl}ך[8ԬYkv|t5ߧ{RdR΍2v(G=?RrUW u~Bzϙ=Ug~"eI/-s=kj֨!9sۆuUjժe|5h@n:uzaE ۄ8;*8O庺OW]OE_^=lzݳU64fu/ʕ+Kjլ5 Jk{,ׯC/==5k=΢"#df6V١ ,cŲгϟ;'Zw{]ۗLc %Kbk%;X3J̛#?9z /SB%ЛN衐9}<=үK+MoTR'؄N˖)SZf[Ɋ'1FCoyYnгm{g:mv2fGrLNb&]gEG b`„fZ(p5sZCo͟A/COف)42~c)_DF L}5 cELxA<~t3F0C/zzݾOjeyw4nlǗP,COJck0 4QVZaNFˏЛ8a Q#GC¼ڥS+_|G#cp]5j0;>Կfizz8Ν:#޻=TZzuWOB@#G###Wz(b7gv9Z:GB#PDed7_k3O0Nz@8f+aˠd$t8ٲ1֌vG>۶ea9o;nysyu͘qz8qܧ"=k:k4 8$&Ȍ)zs =Bŝn/S IKMiSX}u(ppn/BC=n.i2ii>yU ]q֕H܎&i Şz| ]Л>%L"gNI؄BjvG:!2sz137nYzÆ ^CoJ89s4GГ .0o>@N1=3GГ ϛ ;;<ٻwԩSӾ(7tzq;iӦǭE|mE5F.|;+OKn ILLYfntřYA|m=W͘1C֭kW^'=B;/KeRjUq|Y WPz!!!ҰaC9uTj@蹻̙3,-EЋ-{9Ov12'4tccRnO%=":vի!ɧ*StS~חs8.OKMwn!s4M+VmZo^[\vmy'lٲsz7c^2t=-`FzΝs; 눎qq.S+W{<ٳңGY&n߾:.k_zꙟm\d,<<{TTڳgO3ݢߺuk3Mm?W\abwʕv~WumذA~ak+@ =3Bώ;B+o`N/_D| zk|(x_d۶==Ge^ #--#<5G*T0iԪUKfΘе֮uvsיs~l(QBV,_괴 קt\*U_Cƛ&YoDM=.ӽ瞜|嶋o=繻<+WHR!cfݚ5rѕ2W9wؑ`/ ء8˲?iSzLaY=^h<ù91Ie5iR%^x<4&RSRy;|Z~ޯsz7fYi^Lo]A߮hi7e7eÇN~N^N wYU&O<,^( suuǝ;w^ru<=Ff0nzRW]u 40Ki6*.ס=UOaòa:3|6] SbHF9-9W^y%Sù =!}+c[ז\zǎ6J޽[o5ӚYx޴iyvOM۷osxo! ݇s{e/yϲdɒ#$%y7 sunt+=|w3ЅNGz&N07>np!@_ Șѣmt=y6b*u煣ևƈͶhn^N!֦MQ#7wY1sF<ԓ(Ӊ^!ݽ܆7%)] L3eꊆw46; >L6lX/+]߰aCe|-{gAkKCOyz7qL|^ 7QoP;ڵm+O=dm^|ӀmVFYۡWt)y.f:Z+d\MnX}NTl瞑W9BO;;r#"#.E3N {kJ.t/{e!!}Gu[C7Tib>`oӳg]nxBGLr;3uįv| =Ν:=Xu۵x@j֨e83Qni>ݺ%<-`IkѵzY߫E2mZ|1t-Xuw!Huw?s_d]V^Ϻ%. W|^G\rf;J gl?'we˖fZ]N@Nr|vt;7zt: T^fP1| =][਑#p/(/e?.noingBO%dɢ.CO6{-tIoCŰ1c¸|wjT wvyn^bOi_CBzJt턆^)/];ua0 ;;Οvg f="gtLFFL7iyz3xڄu BoYŝz\W|} ;5sZ@Bo2eLK/pUF fуګ=.U-Z8V١-Z0߫Л-?ydAG衸^ Xfb;;z\^n+t۷ѣFJժU$l,AۧjML)4t,kf0kt͜^>czгwp{Oo|V.C z'( ce6PL~M[oΡ7 0 ЉfoOx1ު FgqlXR^i%{3J͉O>l#vJB6RS<C/Џ3l7&YV:u1t]_7ktﳗ^zK[!C\zy6~jGT~wYOR#PcZueE4(݀z|z)4wvq=BZ{Ocxzd"7UzZj =}%v퐦M2=B/v?s{͚!C뚼Ozy] fގdMKʚ2>Oaz^1=P{%))DݪU̚_|фBCWJ*rWKݺueZxx+_4lx\wuҲeצ9ԏKK:ud5Ӥ[7`.+Vmʡe!!}#}=JzAL2ҥsgK*%חs8.OKMwn!Եu*KХf_y =nLD_Z{kavVE=]w%㲧z$:zY1sFp=T^L5T6mFdܹq1oyy;Kxaz7yL:TJ.myÀWLCoY&:,L}o_={HrRJfG5j9$+W6ۙjz̴lN(E fR#Gt蠹}Zޫ 4[d އ>'o_)TGpFoW|sNJ 6@§NeB+wKgu%#@Q =;B=@=@z=B=@=@z=B=@=@z=B=@=@z=B=@!WD͒^3/&J232=@z=B=@!Ww^ = @s> @z#=@=@@z#=@=@@z#=@=@@z#=@=@@z#=@=@@z#=@=@@z#=@2߄=zGzz(wHGB('$=PqGz=z=B#Gz=z=B#Gz=z@ޑÇ=Bz @fG"z''=PTBoJx c =BӸ#=@=@@z#=@=@@z#=@=@@z#=@=@@z#=@=@@z#=@=@@[8/^Q z+*͟KB(r;BzGB#Bz Gz#=Bz=z8u2SI" z襦$qI>zX' rmcr25{i #焜̀eH7kv'9gz5$iSe{G2?JapA9tp C{eߞEA1gw$ZA;!^/v'KbN{Lz k5̎4^TM8^ME11m̚b&r4bhٲpn a٧q |L2e 0u)נLz,1!Zlal-SSo wSݝ+(WܧkILg3Mf5b=ԫq-[(=B=zKr 1cm@@^ZJ=*ǎRJZ1~7xc/:8xz$O5;ŊmGed.G^jrl+ƏA  N&+J걣|pco^upIl|^S@7>9 ,;%vW*SSdsl1\I~MKϟ=deՒ{7l+R>#}^d[BY~=RpNd!]2mjI:ȇ{75k4XfuA4yK{ܻ&-5U&Ɂ}{co^uncӏ;,dȷe?`&=-MZo=|*{3u֌7GR3E?zrz{Y[Ρ2=]jQAC`n>xz{Y[zŲ.h7l  c ^豬z} ,zΟo'z| =,-k;~=ez_]@$2qBW^u5秨8-5^\\={  @ıeeMGCoAy\ve&|' k?0zA @-_~E>3{TRRR%i֬,^8_?s6wio%KJڵ[nr%.+v-+WoQ5bWj ٿx^ZF BgϞKݺu… A eAq]w-" 2k,s:??sfYkwBYniذDEEɾ}dҥ裏J:uL9_=ߩ8Ezjw͚5MtTVM~'BϏbԩS注ޗ_~)իWf9ܹsr˫64:mڴ1[Bz^= ۷ooJ;*St\|ҡC9sL1#Gz| @ .͛o曗\Ӹc,?|ǘ8qY_co 7 9^sRjUꫥ^zk_ݜӾ&iɒ%5 u͒eߺuk3U`,^R&MdȐ!./?\{&]۶mM<އCzgˉ/;#w]֜#Hǎs%tɓ'e۶mf ' ۩S'LJݑ ގ\<TYҥ%==qN;6Cϟ:%%żcǎxӧ˺u̔o3kiݻ׬m_עE Y|>|8K32wsHe˖5eǏ7ymzM_Z,|=k95N>e s%)%-[6sѿtV\|RJ,e_yWdTN k;n-KBĉRB3&zAj֬M_/W-[C5)6bY>d^{rQocر[f\~uWXp32Sg늽\\]r,{8eM:E*6-<_wv3zG4oڟϜ(]7mxY®xkr%& k˴1# xz{'Mr9 >^&5Qz/m_ױ7PZאjt)S&]w)+Vt }isnMRD 9cE]gd0+'Osו;C~D?:Nt'eʔU+WswvCoܘQ B.Mc=^guo߶5!_ldfF_[K}rF  LҒr,qӛ˳zC7]fώױ7P˺w^r뭷#]^[ÈfgfȲ#y*(٥H;0C,~}{\?2'|,wx uzי If ^]vuqdR%V}y߾D{Uui2|`hb@C 26: W}㦧]juw6#@.k]LmtE2-<i=FN{w]۶א`,k g+GH^u[믿&ٗ:|TNio5kHMK70[Orڰa}܌;C(}7Od+X^yY 4 p<= y0B7c/:x9X^yVZG={=#ޞ&@;,C}O){?ЋK2Ӳ>&=DȊm~#>9Lmd#O0^r=^` ˲޲^wTM^*b f5qycaZpپu$[WB~Ӄݳ;-v`lۼ|-̆kC|7xc/:x:~^|}׺- ֲNyY>|XJ =%aw`'q}Gne_xI8SǎZ?:~ ᅰCƍ>U0yD6eNصk}|co^upuzzJw5R:ۚG(xH|<<ƥ|_(߅.bw =&HbI:(1ֿpt/>{A{YY'&jdPh8' :]Sz(<=B=z @@6[mIENDB`geany-1.23.1+dfsg/doc/images/pref_dialog_interface_toolbar.png0000644000175000017500000011216612146146075024622 0ustar hyperairhyperairPNG  IHDRzaֻTbKGD+IDATx\U2G=2[2G-54++G2s?Gޠ"Å K  *2Emy8{/w}zsp|y ϼys <0Yp>ׯ>>>H޵k޽{t-u&(@ݹs^M td/00P$Pٵkim83o޼ 8m S tF:($hn_\qTJjժT^=п?_Pڹ QթSf͚|L4ѻs6+3 7QE͍K.2ݷo_>l`3gݻw+z7oޤ WQE?wnߢ{ZOeoo_/HZ͚5˲}"au}>>[nMŽʲUVR-W_wyƎ#ͥiFjkћoI=ztǽ4c뻮D(ںu+=ZM&m{ hGǎuRnɓԯ_?zw)--Mx x護2Lqv,lSLt=hjg-?~\HLL47x^U044T8]zUy@@Fe?ӧK;a7mڔɐO^^2oϞ="C2w^tG0Mv>Eӟ| uYf~\g6:hi,\RRe;F+@+fQU$,WiYZooo#}X&0\_n߾|Pr)Ij*Vl9&z_[+U<#ÇK5gLL eFnM6݇ŋ{)$$ #GXL~)ѣG${ D/)1]\q_m3}g"EjՒ726mi3 /L }NGŘK?I&Ϛӎ;Z D/r<)3 aa⏩utq;Bܿbz> םuv }xކ:79^=PxDJj (D@ 襦$BD z z z=PDddy#@>ym]OQ'#=ZaΝ3gsB4s&J8˜>q&Fdq8Q ?rJǎŽ*#UBC505'E||ɉ[TEN=E._̐<^kW:ж։rJOу-FR`"Ar|޸Eڕ+'E):cyDVdxg]F{/( <]Eǩ˸UD?yLjZ#H1cm(P0D{p@F\}sȠz?zu@iƘ"Lp2`gq#ˢd8_M$5!yyJk]?zufO.q6EsW8#z׮ArY=eg~<6`i=+\J?m@ z:f,V3`y W ]a#PD~ڹLB=K 8}*Rȋc|wѾsvR)49Ms1&- z=ѻ@'DcEz߻'p+MJzp65B"A Dn=.~=$Ws\U(K/z; x|wF$E{;-srMP2eҥڵ_==kg@'2DyQ0Dz޽#%(\A\_LӖ"(7t`*U 66o rb2ҥ3y-Ң+@ȈpUDyQ07ݻKw6!5PrR*UDO=dlPDm*Y$zȪJd_̢( ĢwOejskBR MY ѻr%5GD/?nU=n|ߧwoR -[=VdJ= rW_%J믽F+W,GTree2Զmڷg&z,zrs=^ᆪ O?M/2-\0/D: '#i:7Ea۷o ,zQ|J:-ajYQᴂCSe^ȑ9Jd(@#jKz[6INwD}z"իhۖC^D%Q溆}G)^=~q?m޼9u3mv,,ky!zYE:(B ±@wܡ[7o ,z(>:E%RDyvRKɲޣ"6}LыȑUXsD3 z"(z< hǒek -]yRDఔ*V'z[ASnyГO>)w\9u=AŶ6TB=^ovΌB;oD/ZK.ΫV͚R?}.%]#pAٯgbe^c@(8#rۯDmt1{7h F#z۷nDoߞ@:Doc۱m-s^TLmDstz*\h7hP-Uiʩ4%2☈#G ,wZd<{9}c;En޸!\JWؽ7C 3\STjUT u"kqV/t9}u:t轠mY-*S,}ֲ?iTT.^^{X-R~0V_xAŢkD"69%zODʗĜqߵsD#{aLI)x_ț==?c9+z*?*1<ͩ_W=sy3q_r|{ABg^>_Av#3ۊ +;`/&@Ҳ.i~*ZhYKG?12oOaKPDs:˝i㖝/ 6R.&=m,-i.i|6lݹ Y!L1>sOyvkP1bi԰aCxAޣKAUݨZj"1jբj ޷~ڕ^|l_f js- ;(ZeM~f"zSw;poc)r5O s*nNQ;f( $?ý=ʵ{_*5'/4)י)c0{>{]c1oB1Q#Mwvmi&oqӦԶMGʷ}ͦ 2KfS6Z_K+rS`zYskעܾv=W^t\gegPFpyQ.e;tr<9۪a3nC*W&jyqմzhR^fZ )|LN{zkR^+U KJGSZiUJptp=ksWfE"0,#qx{izy|6߫Sq]Z"g|Yگ5Ϛ9]]t<򣫣",թYn)sMDER)zO$֝{y4#pw3D6gls66'9m)LTf]]> 8ׄq z,f a693 w̎mMvT1!_U4ŋ<7Lǚc0Y7ڶ5묻l떌k|uCg˷dFm]۵t-ך?u"ˠ;+t>iނ~˖-G>xɌmM]O{nRDz6 ͔Ōur63kjJ*- y{Qbe^fEz69eL2i>'uKF159ϔ-G]GdMǚc0rX=fѶ-đ F6߸ZZ,sVD~9.5?9]Sa]/Kǯw-ƍ-iv?FkޙD:)Ej89v2 UX*WB?wE'NZ|mK>~Ꜭ2GWm޿jۜLD?+_ܝXMf~ekjj -]<^ۺ):۠/A@qԂ4B#ș`Ep-[!diۖMR hxtM2\s8tk&%i׎L1!zf9R.WԤIc %p8~#ʣof6{moޯy>B ק.4ǍC+/}3۫ml9e޵k(u2\(<Ԕr\XEoD/dŰ4ypҥKӋUJq/]:˼%5jP[L|++w(1uGUs:ƚc0$L{=kF;.h_mW1nN||c1+a;KZگmyɓ&s0w9?nJeʔ*5k͂&mI_*`OFɅ \*A^(0A[( ,YS<!tlՇkBOEFZ 碇3CRb8N6X[uу;{:J։^Qk_aiw уууAѳF~9GD'M7ߤ{ zKNFk4x  vlSOҡCQu B-zg+zkv=ۯR͚5dɒo-[D\]xyy]MBjժQk׮tB&zK!CSŊ^8 sѣU\/N5j w7Mhꫯv|))I4`@^tB1!z(x=:E B[nSO>Tvm!S&M((09B}uM=f鲯' =[BxX5J*IWRSDuF7-7+Eq"rAR&itAyse͙=+c4ET;U8p@W͉GYbcu$*+zG35&zU13)Xby"KmڕT*]Hye#| S{;jp^ ޿@^IkD)̉S&U#zk\ÇZ+>$=3tjZc3u 6 ﵏UXTKNJL'dg kE*Q-xJKMD 1X|Ôt:/QRm$WrcJxK58g*?W7lP=+W5vخFn 4'w)S]BB%''ImJ.`ibՖ۶SC4bpM:zz/Oiw1.Vkצͷ"+~~;r<ce?y3)5v"2XuFIÆ%1c$rZJW+K.PDK>|/2ܹCD/E2N:Ծ]lgPE8XF*T@z^s7-?)rjF&P߾}z1S GX2O,s{DegknM {AٺukYHTU !z\ʂ;jդIvֱG8j7a_T[2逸Ҫg#={v,Xi|wo1ғZnMNc wYDiB"zfΐeƆ>iLWZuʚ%sδ|Oq58Wms49;dɞ?3eDx 7`'9n<+$=ggϚIjՒCEMw(k,{*Usd1տ,..ςǢmh@ zֈަ >= AѻD@!3!z=JЗzA z r%R]|joQN]ƭnGf9DBjJ;,p'--VXAׯ_L-Z8ߨ ;Lg仱ϿާwnӵWHCrG2rF:DGL}bccYfTZ5ڵkUv%llG}D+VRJQzh,4P>x :|6au~"X.4 ۷t~^K+WS)J&ѕ cwޥ#nP͛xE4^!5%zW^MK/Dvvvtm2/yhK?wߥŋ)\YY"8'"©aÆ=@a Wvi׮^IDJLL/ѥ _|D)wl(BtA&5%W,A=7gggjٳG"y?FKiWLJJb護ж[u/]^={ҋ/V*UPݕ{)N͚9CU7M_Νi[dɒ'(0Wpw_k2ePݺoQٲeUVʽiT\/N5j w77mW{|觟tڅZh焖-[j"Q1QdרB (,suԑ{4;=sf)hO'%&H޲@ksYMwѱ4z(EJߘi*KVY)TERdD2$O!9uD MhR<Xߺu&+T~󳗟7m۶{ig]nyb^wwُ4QCNIIygϞ9,1Y/zQeﭷޒ*qeig詰-\>DV\aR '|R{hr@p7n,UW4%YX;G DL/_D5o.ߛ6mBjNֵV,ךFΜf 5jH6D-zV:3SR2Da;q-!evs61gEQRR-Yj#2Lnݺ"5!j-D/0%zgΜ'Oŋ!zDC)fJSU$cq۷'Hm[6Sz q@^)ak׮ўj{3FX89O=VnSpkժEl}[N[ 2D֭%&&>;k=OrW_}47ԬYeKÇK>qocbc[dV=ê ~> /z<6u嗠ht?kի2i[bɱq*apS^U ޽6ܮycnjݠ5iҘښ=Fn_ct%\jŋ59SEkiҥLsE=یP!zLc1,mnYmܜy3Dd#5(IIu^/_#۹&E/!VRէ%c믿(::"##)((Ȣ u]10_|z,XN8A'N~Qhh(M:Ur0}ݪaÆ)̏_m9ܳgG=sbrS|R<"󸣀6qpE 3>c =&c~nR6zS^޽7jj畴{Zd=SvmHhOn]ԴIj76#G % KՁzwx z\ro҅qLSWa;ve}~ǭ"{n..+aʽ~UϞ;*? V{r˱#GBiiF[~~״mV2y)󒓓2XF1<uغ, g3Ճ:krc禊,o΋> wrma!iy+3lQ<ӧ"Ŏ{ZØ豔{{Ӫny<ޗ*z>^bqKOfdR*g!7oݔy\ǯIS[lg+LYS%rdʈ#70/u:4m~f͚Q3r޺iwn0c476\;v_5%&fTU?~乚9[:Ks9|.C"y[nhӝ"AK(!n!ܞ;E=DT-Gߤ^\-7f\!豀I2D/M$EYsk@Kq]dRFHйh:{6Jq;.}5<)3}a*,?o@\_dT+&ڴi8b \&3ٳgpZx4AtyYL6",&6m+, i2TsfV^=?zǎ4+4GL3g6#F ü2=,E㱋 lWɪ"iF{fDX z=^娞.g#p/hnsՠ}6w&j!-[%mwJߵk`N p]L[7"| ~֯"E i-9:ٓ":9}{ߊPi sK(upÎR?J}$mj_ޠRU"z} RŊܛ/DyD 2y ){ Ν;ͅ#MMx\B#zE] @+Kued;*|?rM:j\x:ȞZZXq**%5LM.C zJ\WR̞”EMk70p"{0\ E}^y l} 4r\s|.zޞ}CmMRcG}$eRJQϞ=| /O?un.nut"zK>{S5dɒTvm ؠ-FE/H1sv^xګgOzŪ"=ztk;ai)+S խ-[Zj=Dkp+WŋbŊoƮϣ5騢RX1z:m8+s='׮_~-"[7 PDy9_Aҽ{7;w|߽k|F99JߗIƒ>ğ5oNݺ=Wsՠ,/jҖHrڵ hBw -[Ν;[ܔq4ORQ[e5EŽ*UR_vitXTf7gx{d;>uokfϚId_}ҤIEx؁7 z"/z\x D/ ,&ʕ‘PRs*K --apA`8Q. '|Rk43ψ,=J-ѪڼeG,-W}sN]y}t(yy[KTzKKǍ+N5Xly]MP͚5KsfL]۷ώ[itMJ~ J66 飏>/UկW _h2j]??_z7瞣o:O]Xp@+V6nתm7 *zI /o5ou_x>glߣGwi/ZxqQ, %p|ygo~:DnjJ\_s18۫gOzŪr|\/iK.M}zc,Y$ծ]6IN|6zmVq uAk׭^pvIOcFӊeٛ巈=eY,SD/;\~<ԯO[6oGBizyi_ ڵ hBy>ܹ98@5Bncl[[@\uTĭB TR%y08{=l۷o'+UH?*z]?Dq,S5_fMZ`nÅ 2Tn EOv|wuE.\ 2V\-ϥ?uJ2j6tM 1knGB >.ZGpmnb*MBpWRS$̒`L:,ۚ6ކa ) gxOY2&zsMu#>\?cyi5wDNJڇڼeG ]={ܵ7=+IʍkUgh }V6o4bKzՍSG/~ՋVJ_Z"-&27ư4%c\xĄ[ڷ׸PF]u S>ٹ̉kj*!g14\_s.)qEx*s- z".z,aq112Mm ,#q aWwr)vO<ͅWxq5Z%)ez "bD=.9m,mdd碻=G|)lÊgO?M<5j֓nD?S٪7-y{I;^0N.?[",\nߗ;Kܺybzmt\rdb4MKaE,75ߟ,{Foizi[,K=qq]{sKm_ 4~;eKciڻ'P hk cPzum,nkfY L.ĸǣVZImzNmy}nWUzu;WWq:uPmsDXj Q>O?^VM=}K#^|ۢr{X(%*=3Yct֭-KaE,7?w|^ږUo虸X駮{aŒ虺=DOϸ`1߿'C^p#yn?0յ*'~-nU(\=ݻG 3A z; /@byQу=4kF3g@^ rN63w9[@ zzAk '>ZncJcotqz^D.z,w-"_=EGG=蝌 /wWADO=Wt5e ొDPu :/= q͛7 z zn=@ yqVݮAPEƍtDQ]MAуV{&8=Cqc(JJH{l@ zPRܙhC ΢ƏΛM/)+HHaiijr]]Xr#͝5FEэt=$n٥"q'UkѧҜhmdcVZ0o6ݺuү_OavHGBey~7Pu!z:p;)>kP>{4-OwAa<9JqS}>yWKӭݵk<wmvEK={Bryn;esY*W^yzJ*4z(ׯ/_*VHlmm{N+WŋS5M[СCZ"Z$0,紻tܗ{R2ed_1y掣tԧwo_dI]6lЖ'%&9ziG9t>;wlRJQ4ꫯhȑ-%˫tzI/XUeO.^0ƍKߵo'GOQrD\I1cI>Tj*W,uUd%o-TKEVRJh@ԳG*[DǏ~K&Mx}{ ;*߫lAԠ~}ڲyr_Ҭ3 AR&iϚ7n~֖׭;"ODБôM'M}8@ RתUKۖ'(xv#z·^"-{O;˭{U^uڅZh='lْ:ww7 ޺4١%''ۯ"`;m6:uD8/>t`f#S%(X/7gD|Pm̊ysu mG}cXEztF }\_^Pvm5ѫUC˗91x iM5t޽=ubcd0n%L-n? 7V8)?X8[᨜>G+כ q+ '|R_IMgyF$Qn9ׇ~(,=e|*=`b@p6<# SN66 S! 8@=凭"_G:z99H՜U3[l5۲)@pqΚ۠;e?2U:,yvlSJ ̣ kDžB{EX [mRb"mT$ۚ+9оAtG=cjԨDxuM!G=O}&DWيmhT8vnjR̟Kգeh^oR6+:fUJO2GB#zV).&F4ۮɡ0m!s:.ëdG(ݒ%2Gae|rz/Ohx98]}V;K9 ܝm9~|53i3RK{ʜU^ՍzJZߒ:}!?_X$i7 7@GȌHF]F;c<蹯uq*zq?Oҹ˜豼o&:c1\GqsVgsd ".֜… qRuٮm[j߮ޫL[)KQʫN/m*bnOLۆ\\9Zxq{uA$ ߉՗_ "Q۶l˗=͟;BI}zqlj)ԩQ="zNN!Y;gLڿ7PeE$m{%:wYQ#aD&tPNc.&9&XZb :;Êܫ^N5ܐjմu~2_}zisn߾}zrԩ#UVR}[umZsa0gQ*b.9ç|1x]$b|M# **?K{ʒU^qJg2=uxb@uYȼ 6@=n?ǽh)GDj׮EEO_~*z͛*X!seeUx޽zJ^b^ԥfQuWz M .rh,}kV9 q~t"s^p\M7hn yzFܤp~=L5nX:udׯewd)s9 ];wȠ˦av}z{ΩrwJAB4/ճz =km!-zB/%9L  =+wwW\ay/;nɫP}>bNMI1vEY˖-m_'N2z-A}w 7n0+c|;u֭]c{KK0+lic';w6A[c +˦^YZBuV,u:ea ^NΩCOc6[ؽJ__Ԭyt}Yn *w#?.Ǝ%۷yyuFpr4t1sm{ys0zc' 4GCXݻu5UPA7k&3k =ݒrn:ve rםwJjWI:u[gKtn}+WNv'rx'O#͚5>g(\?.tWdqLD, s9kusK5|L`KBOeuxO#m?x aj}MmJL0È:hatԓ[fՀҭU v(& ʕ+Io6ާ0kF5t;G*G>{ש[?,X=4t?’Xpol )'-~zÆ1+HܸVrzzY[al*TEF,4iZ羃7b"V@ OfLGz \ =4gti{VZroAf7 1iعzn ZX0i|Cz B+Ͱ5Jei=#r 7Ȟݻl=r-m$4$X62{VQz\^fܡn( ==gy:} =~uzƊ2eBֵZ7i8޵ A(ӧMEGׯ]EzzԔds$_D =݂˽aÆhVZJNم)-7u$s2fE :q \4t[>z=BCO?-#=]>"#IѣaQhz^) Yr`~Y%F}`,߇-I~)bzٙ}1\̚iy_oת2zW/5UΟ;/łi%:bM|ze3tHm>pYrﻕeܘo/ȹ?sNɄ {1#RP|7N?%[\oLL\O(hYʙа_CGf 56m*;?aOի' $/O81ߟ'+3ܿI&vm]޷zQߘ{zI֭kPhBwE7^t)IVA\tF]Ɖtu}zn]R{twwyۼ޸2_|μP[䣷z|.6嗥Auk9v{T"}1RJҪU+[t(A(Ν%hi.5`Cf)]1h}v+Ife}au;voN5STbex[th}vf*s>y 监#ʰaC^}U6n }yBth0kpMڵS"٭l zVseղc&tzXW^Iݢwrz-jj uԑy.isv3|W~;BaBOvIe7-w{C=dY^0}K#QN}–-[:JP 2zz.3=ͅiznL+/^tme2~8f ٳlo3lún y饞fЭu˃u$[t+Z~+*G;"vuܮ{>;o9uuҭwݻw7řIY.'͗y7e~s6/zrKrKL3mSbĄsnu\ׯ3"82z$^Vf,v`Yeu/?96b5nСmaf8~̖FWby.+Vt=w~,m۶ 澏^y[!!RjU3޿3P]|W~;󂻡[G'-tz?0YټX*3t;b?D:derO"^&e᜝^}rC_ʦ7mM9kXm8ͺ۬roqe++>݂n=?)SP,ϧC|-[%J5?oٷLO_¼'̗Sw7guﺿ]~y-=|WAAJH 21B' kǏlYa4ImrifE|:'G~Q|9Ŋn䓏_$tߟ>kV:f^mZdY)Zt׺?uL[ϧf)_SO/+}ݢ+ЈE=ÄzpcAu?&]!>zGu1Y_fM2yc7]mʽߙwrσ'̗y739׎+{LZIE}rXn>z!nGOb]=0U  =˛+S f֮6GCdqaZbvuEMs ;_*GOt2Ts7UZgtZjvCGO/zW([oiK =s}ɈfZ=Bϟ9niƜcKREz4V\nw*=h۶KlLTܿ(ڄ z,M#zH4igz)&\ ˤuvGzbIz]]e[PB/*|롗sʫ44P^}|䏞ЭާGY愢i\f 07vK>h c<׽4myf0c-tc{Iݺu%9+\L nٔ ˖gX?pY[a}zK9fVMC-zyCO/z̜.˖JϚZC^/u]'gHt"` \9Jr%9JCO㭠1r%C et74CaBchi FF,$^TxWBӫ&FzQ~ع%֬Za.[~z Ju =+B&O@B$kcF#6r'Tn]͇|k=J>f? KpCO_zJZM6 #懆H =@[}8t4okw=#9#r9|9xHҏ sRm~,b"#$3D = 5VeK_K5dz%ɬL9w,qG>0ƏFXÖ$p`b=BHK/7ms*ȵ׶aC+k)Iweάeo^8CFJs8oKϺ-Cjɨ+$߭\.|#?|AΝ棏>jjccc𝣕uӦMs'䪫z믿n"Q{'Mh^/Iݺu+-ZHՃzMi֬T^]xq󻡷?&_~ٜQ_cGؾWطO*U$ZŶׯ[+>9ЧaJ߾efyY4.󶙿}^0ss?,ہޮg=,˺[JGze94NVG=aVNM4/>nh]~3rV6l߫ƍ>5߫+Ip\Yf ʕ+V=}ڵedoZk}CYFǎ^{.] 8iNnٲnQ"ɻdˊefyY9W>\v.vپG7m?_=o%۷5Wyy @X_^ ==BtexmʄrE׶XVjǏ{`̞=PWrLCQ֕W̧XV̌ %9yGfe6%&ڮKLH0VGϵ~:)WkrK=ʸ-1o3tʼ[Vj"sEeMoS 曭[JEIN9vv^ LY _~vs=-Cƍ廲λRuHpm Yլ5t~V_VfF sulv>{K;-;eeyY;zq94r:e[`~BoAhDIȜ@ ) +#s\,S` Fa8gp$*r7۲yTXQNbv1У󮼷n|c.u%[ProuW\qECnԟedyse^z>/_^E;|v[9 Oۡn1t[6;iNX;~7fˊYOjgN3+99 䓝)V䓏V/oCO;ء_?p}k֬)S&O^G =n}Y~TWݻu3QYt?*.u}lq%f nF~X4u6䷥WxSGO|KLL§Ay @Р@9w,WCO9֭]mNsɇӏȔdf;d`r}hBy}yn/tG,֮]ިaC}ugt]u+he+Y=RҭuMWRNzdn-rue!on:7/=ټ_r|W灻=aKƍAB7p<ե z:x%v)6/S]Tak8omذBpFƎcYǴ'C=B(t&:ĚgٯT=z  EQf nt.PjCOw&=@z =BzGBυЋ -R_jI> H|=}E =PC/5%J?ψ\n"GK$UV5 k?.W[V͚g:{{7iڤTXA7o&3BgڵkI奉>Ǝ!^vvC߫ȝw)Q"~t^[Bz}"-v*[Y[#o/{hM^RO 9]-Y,ݺ>+͚5ޘQ#%48Hbck`h- VRY-%4fNfeKngMذ|g:lq_F; EC\rn׬ucx2b"zB/*<롗 sĝSCOYYidu;i&QDF,$@ n^]5` _^gPٿOj  \GG6mH9qZu3%47}TsJW իg|z =WaÆV-[c=Z,Sӻ\uUݮ]zBRJrz#=@z8AzBoqt%z =Bz<zY0=BЋ!=k#ޞ$˝C%ivvwB/eނ` 9<;B‡^ld-[^hP;w#1^p#Gz "=7?$G? =&BGG? =kz =BuEz4F|=\JIDX{{7Bh=@GiH/_^&gzl5jԐqc:46[KB8BOmֱm]M[Z^^ӫL2Yn\}&L-[R-_j.kYCOL[lK#ݺv5þ>p ^^%t߷ӧIzu%xӠPjMMIv+4ʕ+gEoBEOi 7ch}0}z֭&?׽\uRNoC/`VAsֹ_ͭSO<죷~C{glzeǙ0Cz.0HfN%cO>6&n\GBY mªw/d /~f_͚5z62:u.7BOb7onNܨQ#sлCQk[84bz|=Bz1q#HK'=@z =BzGBϕЋ!=k#ޞ$s]Mzг^Ld B{;=@z=B=@=@z=B=@=@z=B=@=@zჄآBz Bz{JzCo~HGB @B#Gz =Bz B>zӸ#=@=@@z#=@=@@z#=@=@@z#=@=@@z#=@ eq"9cyC=@%Qr:'@z#=@ z=@]2G2GB#Bz BzGB#Bz BzGB#Bz BzGB#Bz BzGB#Bz BzGB#Bz BzGB#Bӯ =Bz B Be!$=wB=P=r#?GB @B =BGB @B =BGB @zǎ&=@%5=By̙Ez_B/4hrBzw=z=z#=Bz=z=z#=Bz=z=z#=Bz=z=z#=Bz=z=z#=Bz=z=z#zKb =@cXX4?w =BGB @B#Gz =Bz @әrB^f fXӧNJ4+ɡS2Oșl4:,9%gri9ּݲ8zWRCoo'{,wa&U:z#(>'',ۋ2boZZ$-%Y#R%5yi})vø^ õ{#ͦW}ʢ9$,$ePDX,Z8eLdxF-Btq,6 w+Ћc![[= d+f) 2d 3d˰mY5,{C{0nZB^YU2d[0Y,ZPfbø[SB=%6[ R,?P1t >z @C/+#C2ǏM%+3ݲii}2;[RdH®f;ܱvqIܕ.ɖc.۾*sg1Ȝٺ9Q2Oge,{}eZfZklMN5ex2y{BQfŮ-[;=B/;3Cm*3N{S~7ٛGf|;E6'ľtV`be/w:@D["ɱ8i}Qv1Oc^F1T&r쑰yr!Vbbe/w:!"4+{U^ӱw,KuMVf+c%)[2}7u3~?fEp4#GF<z:τ-,dJ KDz7^例P1Xi9{CQH02Ի^ucn[gBo)ؗJ KDz7^例c1KZM8%.X.־ Ac#"Ӻ~?!sfz =_2}7ofEU2B$9#sgzeZnZzꜳ?ӗKJJ .}[8M JⲗiiMyFCo >Lй{'O(ie֭[>r$?,}RR%]kNVXQ$o/QzgϞ?PZl)+VMʛo)72}]ZZԩSGF/w\O"Q՛3yޖsFfC=$-Z/t^Rޚwq\wu$)))*-2sŕia˯>yrM7ITT߿_VZ%<4o^[Cuffy?8߿S?zB`ZQF&:ׯ/6l BzހBJ7ӔvAUJ۷5W^r9-lfNJp+썏ۛryş|t9̙c*ײ[ӺI&S}#Փ+RZVjUׯ^}uKʕ+mk@%ӾK.fH_L^ҭ*'NtxҥKZj&򆞆]=LGb<z.I$L{ɽ+;/\L3gȎ;>:zJjysۻwoJOߑ5\]nr{eU\YmY@@@'uFFO8Q,X 6m2CÆ 3ki۷lmjժ{uסCYf=z. e=KUW]eN=?_SX^US^=K឵Mϕ۞|~m&͛$"|v2yc̔cGHbB)swsSY2mDB{e#͖#]r 7 3gLwyvGb[oJg )e-mژS45e„tY<ބ^ll>h˻z{LZIE޴Teim ?dݛWVfvmr-Fߋp`>:v3# ӿtbnݲť:(3;GVTѲpj}Ȑf?N{ +Aeto\dVL42e%Ʋw v܆"Q%aOʴL2sfEp"#ӳ7w,ʔS'K5] mޔX,ϝ=n^IX:[nvz߽_e?S[F^.'2^E, N] mJL(uz}{ӼjoZٝݲc60[ì8Ųw^u ^||צS,:i}Q9tץ= )iޕz@'a$Lɒr0衧2Oy%hVL7ƌd2uD_:&4 !sHXh9tp?+0.ce/7:;;[I5)~} 2`d|0.#MO:{ˆY2&hVu 93XwN7c_8z +/n^-{־'%*qWL(6};synJBB=zz?)zKsIENDB`geany-1.23.1+dfsg/doc/images/main_window.png0000644000175000017500000022036012146146075021114 0ustar hyperairhyperairPNG  IHDR$hsBIT|dtEXtSoftwaregnome-screenshot> IDATxxGz T5/ŝZ{))A!h'w=sKn&!goϙ*UL6m0 0 0 R%iͰÍ7O<O<ORRodaa)sH ZȑBie}l0|p>nIaaa!ax\p^?~ )Z?nY[) ߻aaar# >j'زiP {w 0 S".BWw<abC8{F4@rR3ƱwܻwhS:M0 0E###i-ѪU"W\4ҧO|GHNNBffs.:eAGÆ ѩS'̞=[h3 hǏkBWg*c9۷ow77~eN멳?0#ma#QFa/9ףemڴQWax|?ċ0s.ܸq:::"ϟ~)z쉡Cre&L=qgю0?ӧ1iSiFFF3( `i=uoI/:0  YД7ɓ'b؂%JM$>tPc޽x$wAeS1nttMF<*ӯ_&w }ry sKGƍѷoxxxhL)򑔔T9g_t ;ww?v_5Ǝ#<9 y 5Z'( OgtY53etUxKpttPn-^Hcv6IIy!ahhxһKXYZqT4M8v0._+tiyQ7o 0LyTeiѢ0橽 u)К5k$ݻk_Gξ"BP?^ ۷omݾ[N!QH * No^$X[nZRz1UťKU?%%Y;Mׯ/m;*IW);wR3SrV<5Mvtp M!y m售10Le!oYkҳR^F⇖lGW]S'hHtݹs*v|'' 4@f6rcAq9R!**JxJZ6y96,s߿ )/,Mr44vh߾l ,(E_{i٢E'3g!չ 0 $bblM8F-rls33ܽ{'WG3{! zO) ]VCaJ%R yh^eICRXС┍wYV)  K$!}ugefy<vEc,BuI)a傮o&ڃܱC // üL\- ADGiE=~Qmia&:E(ǎoQ'nٟR^;aJEO{8p4iR,aHC32oɒŰ,zu~&pDzS8!;~88`|e-ɣNN RlO޶mJugȈĉ0RyeSW95IR搜pZM +++Q$X$Ȩq?S5ڳgF!r* üw?4~a N(;{V8!Jz7j9,ꊚ 0)¨a*d/:=qjC9sG˻<@dq PgQ֣_OΩߑyȿeHaԣ&y^it9-<+眝G 4uHt,sS5k)_"큢Vnwʖ7aE"R89:q^\aBGxJiϼi*U˚}ڴiBaa^tE/v <03#]1 0Ly$0L=z(q"0)VqwsEDx֏[V Ì40 0呟wDŽ D6)z%O0] TR`{"\]`^ 1ñ0=-+ 0 S623SQEy0 /OwSkx{!,4D,V ôdK0 0 0 S1?_㕇c+ajJaaa<@Q!AsOw8+cǐaaaڸny(uaa& R ^֧$2"\L9urrTk%EU" ݆7^h_M}͛75\]$дQ6yss~B$ wڙk9}V-ڹCe=)/By  eKخ5? Σ幤h,à!w놺u"-5D}R)o9,]RfIq1g%=;&)w@~)jbaD/Lm â+m4-y;T޽;zkIk*7B~ `ҥ/ͯ麠j$i yy#AZj )g&L`a0 0P5.TK_'N u|$Ӏ8̜9~ip)&g\HcGKn]QS"T:СC cG((4uI"Lrz{=z+CFW_}V%$Hme#F G޽'ʕ+D8gcPYO9OW_Ņ K8޴Q-[>> }>q}dyAe<.g_~[o%MvloqVox 9B*#~Z]WUNby ir++8眑"cnj),U°R&CjvPVMq GUaXXQ/Æ S4p.lD0 0/0PPС"M6sKrn?S˖8ksFoRE׺uk _5O Ie;|I!Α s2/Z$ E)Y:s !(K>e˖^mh0GQ>,-v%#ʧJF" p'cC-߂=0_a?_1OyWj׮-;Z^|Bt$]VV ;(:uZǕ_r%%ѣGŋX`G$թ7-e%5aۨaR(LR9󤪾V9˭.5}y;e„\k^s&®KQ ˜ٳEXx; Αuye;w.Eп0 Ô, H&OcH mE0MyE^J#A₄Um! e8ݰa=Zj%>ݳXB?1tdx{eUj<{}wV͚:{׮]vj?u3<`nf*[4X$F:*[˶t@zAe_T@v#C2){KK7dtV9+ +h8ed `=JSv]rrT/Hj:}Cqs#aa*0)!C-4BB y̙?Xr9x5k&Vy:w61ʋ4yA^c2v :$csv_~I-=1KMڵkкuk?ylh![Lx@ (U]A*MaX{2-yV) eNGZ4" {~u+ܯ~!~; gZqU#h;͆0 Pa`܋TtiE yIΟ;[$aX_)XS.vMWa0"<ז0$/9r0>CAX $#kҤ2B"}X6mJ8㓇;i`O9$Յ'h[ -0TiQλ9Exqy޼*VuQw-\B<ߨ 6MM4\u(\sWi ®KaΧsB|QyPy- ?:v3fLS6"aJ+ aMz0  :0LyB{0C.,G,a Ô[($sɢ ؈˄aa0 0, dڥǏ˃aa0 0Zeaaa|0daaaaaaa"gaaa*Japaaa({aaaJR^daaa*!, aaaX0daaaaaaJHVfRh)5bcaa¤88_w ̞01'{;\aa0 0 S^ O-nHMIAzZZHMM}!IE$9) INB|<D]͛7dX2 0 Ôb<)$$wndX2 0xx^Z|'0X2N}`CZ͋1&'a ĄV,"|trG/|ыKIʓ^y;o5i aq-i%fm$9P>Whc%~h|X}7󅾦ǀAj ň_.y> BfM|_诫 uD'aH(ԏ'% lP,h9᫝J~k C7gDEG*+Gq]\q aIq=i)ĕ˅_ILGtLT.<\ xy#2*QR]DTT$J5Onn+l/|ՇeQ#AA2EDudDGF#.6@dgJ1>.aRbV!3u7qq ܻzLy7f&l{~vlƕami.>ѳȞ  ?TǨFUkW$'%p @__$$ni9{U$Q`RW~@*I Xϓ<_C<=q e^X%{89ջBw-&: *>!=aH'O;u&nܼkׯ"deg Jfᶔ=^A z3PRōsΞ3ǂycR8;_~EaJj2]kpuwBZz "COӳpElCpiAApsvåjꊀ@kaY"M*TX( 0\W( be& TqPBCZ.384RdShй*phMa:,vA]?Cv[<tPݭ]k 路-_NS%Y}*>y*^ T_?UNy %Q|=Ňw/.ѽV-!ڴysmbrslx3mćX 4. CIyw'a/hQG$L6ŨyXo?D?ѷЦLGglҡ?'K8 CF;PTl2dɛqz0fdg"J:3S􋸖4{f׸Zlw;c'7p=өؼaekkau fabv;) |aEad}E>`^a"%^֧e%ea7MdTTCuDIB1KI[I!X=vv^@к,DtTdzQ& 0>+{)<đnyZNI-0# .aj't.c'} a8;,0OOE;_N5XfV݄IMa8fCD4Qq, 'jDx7>])<Y 6==Wf!;jjDs2n CFd= m#"K%o..{& $RIIJa}a}& I%DKe|zƲTJI\ XfLa7mTѓ'jr,\<ܼ|B&'' 菱Y,5&5QN_yذKׇ(=w3!;6nɶX 4WC-IR-/†oUAIlSV]cujiUlR y)Ix )lMҼ=N`44k ﹰr' >΅:@a. C, y*;ױwI+6εB׬TKN\k:V;_ $ڜ=Ŋ6Oq lV, ' J쓧lpPy92҄A:6u:DFNc۱^_ڳn}k{jܽ ;vގتK YY[E"OxG+ c--tY8 uMx.Cp2.JCSYg$m/9=e! չR0LBrjP.^@hhƯ copT`xAG9=BΘuHq8Ǝ].^>dG.(LMK^5!"O98L)󗹇O ,\x~ CK9F:.WW.^ٍp/ TUz~q!^18ض:~*ׯ]\XC5t*QJbz*xZn&·;,co^|dk /o/nQDhvhө ˍ0 # 뼋, ax[XTn'Ű p$Gb]uhpu 眂㈃1"vl5<<Tnݺ7I(.^߶bc,Y2+ ɘVx8ƬDf2Q=µ|k a "5 U` 2,]#:m  C.]> [1! J+gI^Ԏޕ+ CP:G=pR z%1˶j8::PYh]s=pti\֐>c!ކ"OSxMchd|[m6n Bb l] Sscl۾ECnܬ[/! AoW(/!T]~K?L˳rmz΂HƙC-`茆:`^>2ӓJ1kTVJM54}+fU|zUx J°U0jbScDowXPCzئ#Dt_~CЫo?,]GCH@p9 5q+-H"a}<)!`ߔ~rRmĜFB(\@evK#,5ے Mo޼H\l_NŨɇ0meaȔ0<| }JF V22q'd~:yP^^["qX6vcFl YTm Z يa Ny9:}xzJ ,w7BpX쐚7kw~=%aj*x*x-a7^Ű qؼZ)Q*V mX *61j0P]bj|P|JXJτZ;E̖O;g/}CZA0<':ɍMvһt؋×QIj qal"<{wy!c.lfKi- uC6A_`ɚtWbMm!biHXÂ9 Ct{M 24#2FT3\[REcGx0O!3g\/%d)vzQ; SB/k+mAD6fH^}qAKa qD"0  CXxz<\Ԧ*T0$aDdd:GPP0%$G }pGOa3!. ڽ| ϡ~p:PQؾCObN[[`]04OeBD|N>mGՠ@DGE(CJ闆KD))6zPwa.ŒeqPp` 1#! c΋3>a4=wwQat.!Oş2b#䆌6顝b.2c+ ]:gph>BB+qһ 2KWkˤ1S;p] ڬ\Ap3NJh+\O'q+m2vz<{YahF ^ 2jtL8P, _:S 0m& XS1dlS'4$c#+ }@1appIa, $ K77xxz- 2Rql-u>XOTɻMSRױĽ9퓆CD3̳<=#!,Tf۫Xⰸafm2:P:䋳>τ!lf {?Kϼͱ^0.œzԦ+q94 ުkVEZU[ͪxU8E P-%oTWBKUkZ(BKG~:ky:9wVz޺v~~C{at$LDbtX9>jaaa8!@7-HjYR F߅K]FKx*]E뗈]hw/D#%Y6+..T~ d6=CJL龒k+DazAg.y _LxYx°AE \r%7RV#$t#R" 8t?iӄH̘>T^ÆR1Mʡs+ԋ"}/6> iIAJaH2J EiHHF! ,ǐ#EH$͢a~Q4ؙ y{-uV֕ e[DFOo)̶$[/Ě5!#QVoz6aZY5R)#~&-XtN7o^au[XaZN"zp?:tcd/B ^ZP_]lBFI{7[Ipi` W0TGyIу+ixxe_Yp-n⼜M{JaHu0ao=qߋu[  !B D靼mc'AqhGjTda}疧E/dRԳ"vUz&{oӳU*;J-g[Bږ ufDCHh7ARƜIV<$pI8X%QHmJ]ށtl4,9i8dhkd p+i(cz=N=?uwQKo~[l0lY=+:Rv<}ubvmYYe0qfaXIġAEalHPn훂wnIƝ9ܯY+F^K+0}(L6S Ǟ+̹>mEx{{Y/ 8_ ]&(<aA܃5" ] yB¥"{i9GDf(>0tԺ0{] k]%4x& 37-}x&<݋- 5Q12dvh,LY]r>ln]ᅬs]w(.]`ڴ)HDYyK"G0Q5~KUZժhW-mW]tL$e,,1?KK[0evi 9wL8{8vc:z&M*?SjVed:.GF\܎^;+tXqK][!OjM}RXFx=C@i#N( C|iNG;c_e$%*BJ3?G>д\a, +og4* ; $G;wSiqvebp.L <ǜСM;- O9/pr: Gdz8xpoX\aʀ!$ 'Ң@lQSGx(I!Ps줄tF;{*:PR7wiMKUU?=Uj8sDа(TIWCC#lڲACMUP}تOyڦCM|HhHq4e)C`IR^c }%QH:(%*Ot2u9<;$է"G@pk^ 㧟pM!59tsq¯?| 'DC歗u;bׯo_paW@[V,Cp~?.vpp O?wG7?k6;^LM̴* -q_8{MȒD`j\q^,URd/38>=}; ]eYTfSȊ.~ (L)]q=n8C;9}'O+ G-aƿG0tF? [MCg.7Fu9/9u CtuDŖY*T<|J#<"r hZbISuFYc /.ٚh/"7MC%mC¬Vaʀ:!#VzB1H2A˝kȝh6W`F!y B\9#*M%tvq␄ yWRd9lmDh_Qa>JDMD:t^6ů1B$ y?#2s}{N^'N!'Nϡ":љ66# Hjzr|DyQH)yHxQm4DaR4F[E&˓•g.ziSD C#OX\$F<2~i9խ*z+fdaةnM,V! UCb/c쀊! *}"O!G-֝:a6;DiHXb6mall,hR8+z*Edlqq[w܌U]BfGƥyE;8f CtsU}!c5L.wR& 3!w$ G_;O|r&hꘃ u놆E&$+DaD^ՃGǎ_獐HymD%\6tjs^<]m(Xu99ġ,' Çe8܊6;Cn ac+V[ð>}Z)e) s2! `[cXnd-uc.nŜGZUۍ.0<^2#I$Ak#$t!uJ՘0*c =4uBG랺\o=z }`ؽm-0,O?8, -&5K c @b뭄 ]_?z J?Cj"*!y )O$(͕B|G4Νp;Y!+vp ֭(Ucq8ܥ2qHDӯ=4A:ź-,C[S2@O ,{ tS<)DD^[$س'xj!fMU(IJ8 ܥtF>meyxzaݫ Té@Q!WXþHⰣt/8?~h /Ĥ)Et:bta>Vñ:S`GL{O'$NHY}4f#x*tv(R#KⰡ$sCP~suj2;B+=u[6Jz&t &MkCӯ"Z!  K7 ZU Hۻ.B C@Ww>wK쁉>a#R"^q6̚53gN/~) Bz“ vO=~Ɛ!I=6!YbK Qx(Ix ):n."gMM/svڵ,2!^N11_g0|-0\&ey/ϟ`T5!6;gf&sY<-t螤"=f-[aȈؽg|}|x)NѱτD+#=P~Ln[60I=>yRda(SH<>&"=˗mq ,Q|Ӵ ~j Dzˆ;ޥ, w])"2\d/ ݌d48}~P"% FCϊbJq /2z `!&GېSRHlL . GB/E81Ѣ]呌n'd'Oc>|Q($eC4OgrK^J} GcqWS/ S|S//)Q"]R7ojc(cwQnWʳ򦍗94o>?wI<z(p/6y1? >S 9!WѯY}̙4X޲<)~:KL|PHIN4(݃/ҤK̅a\nacQ!U} C^i " C>1}>^#Qhs LEz5ks4}S'B%EX0̷Ruq̛߰YsclbftbTL#fLSSF!\QD;HtA9|PRF^VIy&OuBf˅h '-n9x$GIBMR*c`/:!.],QV]8WD dD佒E]OZsIH)|yxh#oxSom6: _7i{%͏O>Vz5\}*|!]x* AzޑǞ ?2B4OHdBN%yYGR qSzJQy9jvCV0 C]A|(@|N}uɓطo/֭] qM/Шާ4g!9!>d2HE/X:2寱E6+0=(= UQmK1C%KSu|+Oy/wמ=a+jzصs>t&oc@v|B_C9wdR(yi6¢[7Ւ8;osvWP$ YT'ΞQ6ʏһ"5Aѝ !#z}a5~,MM6FY\*KZp,ٵu2G̋y)\RG3K)ˆ AA.Z$`8۱bI+n\Ft$W[T&NrF> #QdJM2 0 ü!hw[$ vh;oܼyYYY/?AbBBBâP]#O͛7dX2 0 ÔfgK76_+BWIgt,obXtqYVzlX4ͥƎm[D]cX2 0 Ô3{=帱/ 䱥raa0 0 0 ð0daaaX2 0 0 0, aaar+ iKaaacx5V=?fdAQ!{aa<%pȂ3SL] ǵ+, e@eũ\aa ÿWbI_MK ޘɌ+H=0 0 S°̽гŎ3quFYg+3c?|)!'1BC \˶O`Faa- `v+fQ陥kqK .67o۷@eHeibhP8zX`da°=x #[Mh?,Br=,z`2 0 Tja82GL,3EJr"A"CamQzX!0 0LGJO\RnFD̤ l, aa*09o0>xPKLDzHJg4Hxhpa;Y2 0 Tja8f^aY2ұB2 T0zX~. 0 0ZNXW߫&b.S$2$4qaջx aaJ- ^ǽ{w+=)Xq1 ,Tr=,zLψ 0 0YNYJ6%2\PhX, _zhjj,C̝;'MBSw!IINV&MF݅gRozZƌ:u}5Jxta|K̙g''{)ظё*9F n.hؠ7k&oۊe:\}ôaXP={]Z&Ͽ7n5l^{ _|؈ǏS:թЙ:U'C ARb2JVu͵ϼ4ԯ_5kDϞ=q|iN ^w .bB ʢD}Pߴ?aa*0\n߽+7U# ݕ+VHFp2=,4$쒔˺v튽{vK0uu7.M7W,_L73#]lOi~bI RwСҥ t+Ʒw\`'tb皚-{ sgψc]' X0nVT;X0,潮rʙNc̘]_2UWM6[NuI#r:FwgOXZ܏ mۺU+\p1Q/u066a/sOcU033Q{{[ǐaaR 6= ufP{m۶m۶G(Ӻu===Td[ali9͓Et+ P0 iy}[[[{B^jժ]&e_"s[$fG!.v))iظ8"CUrZCUڪ+Cy?/ 8|= >^I̧~5j$xCE'|n(&O{I9rkmC0f(a>O9D}WѠA?vDm'm]"D5k}28r#\0,潮yUtWZ5U-S}_v oJ N:%3S]}W$h_~d[Hu8V?Im`ͺ[#0 0Le7 y?vmڴ^J 멱l{#미p\疒M 1Vv*NK« h+z)͛#p2ARu\%N,Hen& 3 G"T-Z4bV~yѣF % z_|9H҅s8s Ǐ[n~>0_P,潮yUa:7yeJHS,h?2E$!I`NMupt훰aZJ|84VkT7fa0 0 Sdߑ jcan&W2|pphFsl[|rRSaLp,W..@tүfg)- "Uyv 6_'D xEWDA" ^("*, ,*xEtuWv_O+jP/ a!\ "@!䄄ܿ*3骞Ify>uyMVVMVT}ViټoPV-=p)в:1Ky;Ku 1Զie&߳`4K㾽{Don> /붖Hij/ zy/Gسk-[iymvOWi}cӀxJS5êDd&tG2 ӭQX{L_,phEgXWj@N|1D@@@@@@@hbXSc??ke4᭷Dɓ]~F!:ta功NIRe55vG\KXVF,Udq]5z;7Z-c^_QئMkׯ/g\"F𪫮1cƈj|.=>])t=y0wrĝ[kK{#V%;w젥K:?SiUb9/㫯JIIsO]vQTzԇWǿ$r);/־so,t=?bШp GDr[2EWw;wԈ /+jdw֚檤mڴR;uDy[Gc9;v^_!~v4psuk;ѣyoE8O!by$6{\W4w6}#޻gx\Z71/^h,FpFymhh8Ҕtd^~e~ZxKSMwԥKܑw/I;K/q,)rЃбrD{?.:tK^6gbL;n=r[>/>r{?v픊]t?!B/f֔p5+>}޳ 1_Ϟ.P"vC9qcD@@@@@@@hb>J ya!>>uYZO}\r2ڻ' ư'wy Ҏt{3gnY g}}7sB w~o Z 撚RdOe31!}a׎~c 7;bШ?s!wcZ,7b=®ۤbtX^Vof#C~*;&2<0=}!R1D:tt>1DX w܎`s?@C!2亰`ڱp\aA@@@@@@@@hb`_`XG9(C?{͟!qMrb؃btt61DEu" Pܣh{L*%1?:$''{ ӟ<h+"pz(4e;?}ܫ`'?w_۪m|٧:o7 |9/s02mkxxc(1c=xJJJJKKEUђb*, {b_ Y"VFd ]sIV!u? =!;<2Ca0utR gIaqQ(,yܜZbw. %@Ôѣ)Ϩ\<<3O`8!b16ᶃUUUTUpߞ=CPb1o!fΤAÃ?yIQ%ӹ3mޜz_ndnJA ?xA',b4).CG?.Z.𴝺vXjN1Ԧ˚8W^)2Nz͔t_~Udf,XI.*2^~YH>:2~syoSҽRTEÆy|x{[?o7S" 1֗riOBOCG<ĐwmTd 1kUQDQ3fveO2?\,:yѦM݉L m=檫j,)ɫ?6VsyN"S_'1~w8qNCwSb}(};ږ*KHpNWdgӁMǟ?_v*5Z]VwY U;#=&'/ 14Hb(nb1 t1PQ-?#Ib/й Qߑ!`$F&+ϧ[oUD֐!C(&&͠>ٳ'u҅fΜJw 護ޢݻt=mo޼.`a#Czpji5mXFw9:PE˥Skջ緾\%̹\~}d.J8PTucSůs[Oa5jUkteo5->eYb/bu!EB|boA, 1+MuCaߞznyZjSQ7^أJ YZnUd˭Ha*cƌ4*.."#z?9r$PAAMUurԨQt|A S6ȕ+W <|0F*xમ E{˶}+\8EE /WiY2?_LsuCq?8qWSYC}gmʵ^+Ωw1r|ˎj[v}ʮg5~d׿JE }\Ck喫Dgv:ӵ3_}[=o7xRپ1bvNOw|&.6f)b)W%&VP_U? A/*bRM O%,)S޽]JHNql^z)o[nٳgSFFFIÆ#^pժ6EEtEGfqG@}Y%㥗NT ncȝ pu1t/{iֻ}+KM<|1%.qiM:tշz;>eoU eקVGv;7O9s訖<| wm6Ͽ n[ޟdgS#!WCɾ1t@Rޖ!RC\ԭD_;Xo>QصkW_B@ Xry^з2":z9mj?@StL ?Ӟ~8g{6U^5]{cdb=Jje{jVf[Gij҇^+II3tKzܞҥWʛoP?.1v|KߪʮOoqƏWIV҇WҨʂQy)JϸodˍzeMq^{uV?şK!bCRޖ] t>"%qΌy+1K Rbr,մ~zQbx!0P뷠;C  XJ c1aR!kbC;!9TBr=nmRSS驧2%Fm oՑw{_y?Xe1馛 Cd MqoƜK,|1qpCbxbl] "mCҖ8R:ѳyL!G, ^=ktcJOțo암뫖ʶl2;ľs[liPb*bCrl|:]Sܩ@SOQvc@ Æ*}N1-!~ C@ ̛A{/R1φqvdcHuOad|1=bUͶ%C!@\@cߺ<ɺ'gO:~}:f!PIp˸ h߾}Σ͛ܡۃN ?.mx|*wx<8 Fݥ{Z7͝1j}Yg.y l_$ǟIO2LqӪxĿ9¾sϥU=jB>KCįuiZ b bhc'1&NHEVaÆ Y 1L=ZLuyxx'w_] qZOl@f}xv1pmb<)z# |'こ%%< ӏ7?<(')UZneo5~ C 019b@=6k,(Đ"͜IEO^x(!4/ܫ>w9>yZނ%K([7)y=ypzƿl@([eſjR˥<̉;<_F5*b=\+|瞓_qID{t˖2@=])^weǯr3}oS~[ (vҹ<磏jϞxWm_v|,8}jb"ڴ1R> {o(g,QBD~h^|?eu!\@⒟/2Iu%˖Q€;zOd~s&1檫(ŧLW?GZ,KLUYne?dxyJ>He))"ɢ{wka#L&g+{vژ1.fK\L8ˎߌc\B_y/tWz?jߑ_?22Dlմz}$IqqB7˱'uSENxƙYn~Y/5!׎ @ ЂiϐZ|ypT%5JTuJ:camEƒߴd!&]&VpZ2Fo}h҄[gYgbs&dOD}q7ʎj^]>۴hÁS}[܎ſ#3?S{L|O^fW-OOwNsqW;\SWbs5T }E:;!fF_p%䞾Tӊ_Gyc3Zn~y[.u&F * 1CI }ahh(k׎j7`g(]_ϟKŖj?5)e7zrȪ~GI<`*ſ"?ԉJ ZY)a"߱7 +q8UٸJ\]!+jtq6X> hۥ۵Ưٵ}OegKv|ӗj\%vQBUelv\icRWF%CvB zÈڵ>qF7\i8t,ga<<ΏہpG0ٕܶ1y6\v! {&q.7<}"ut| J,eoff3uuX<(!'W;1tr2sVCr+\ombcШFyֵ Wݾx[Lˮ~I=8RN;m(wq?*F b ԱNꫢKFZv3q_/E⌃]b(,]*]^Wǯܗ8<6oxrt::{n#˸~OAZWoN}:"0qÁh?>g .ٻC_W-Ϻ6|絍x[bڶE8-}qŋX{<׶lKv}u.JDy[f]C1'kK.顇cxv9{>\s5^PP?x9f!w@;{j*/V[fEq5$31~Uo<{]w?_sqpܾMa.(%pi>$*5#Mǜ.=7mCY :~R.]0KEn(MޮYƕ{UJR_ ~"zufZ]zT]bk셃a5Ir5Eqk;Eؑ:k&r5I3\\;#kW{٢t ږ_5}ɮ/JmKJLK 1zʷE/AK,GM"nǏ'xW\Iu0B!ncəb3 PW/@>+B \ HYON]trk֬3fu]Gr m۶Dz2.;v,=zԣӭ*J B111Н'NUz0spRff&b@%Ns57 ,\ÆfDbbM S.^{ E,^osz0@ ~I:~+U njCiiiT\\EG|H9re,/1sЯb1 0tH$<.^ U0TWeڍ}J=J9`yѣW1>5SRRB=>*qtRKOpia7,!b1lb-C 98PE UY3kٱ_U J\JٳgOڽ{I]C!%CaH{[Bw1u>cF {E/%ӛ %˗/nu gСc!C!w1~CY[BHY1iV^-h)ᢤСC/_ z &1ԧC*ܗ͝;jٲ%s9.iȝ4nrҽ=WtI0U:YxSjYgny@u}vσ-C!0@P֖0fĐlqԾ}{!lgz_`ĈS$Fs-3vZ"ӝwb2zxO~>83`1<;禚qrSM{H!Ca#C3m H\cCOKU5kbü3)q OV!M ԅ7~[o'߷@*.ϯ!퓧+Xbu_ C&kDJ1&4|( 0gӟ}V `!\߱휰0!`|@ m?579@]_]hʕTO>#bMÊLnՊʏYY>!o,1?<%w];"8a߄x{,/io:t!\%,檫(ŧ{?\KA8 x<2~|ms Li|_We/]$}1߫+Ecv!7?pmM>@ - "z pŊs4gDFFŚ52NO/(myϙW823g%=914~Qb$sO7җ2r&@ Џm 7m4m b'~Ed@8qGFZV^.z;ɽY3m !˪Ka\(Ecu-ο/c.}u@jZư!KVߗPrat"^__}OsqFme˕sgL >@ &1hÙ;wq N=zZȰquKEzɽr5?pu&GlG^}Uӎvp/ڼYY?vxo)61x%Fr07_?_X6ZII3[=coR6 /mu^^I%"KXiTMuu|Ưؾ'KfoHl8]p!W-W0#vmb b8Ι3K-Z<ȓO>)J !jm =[x2_]!M{xC/;/\VtU -<|^AoUea^{ܦC @ }(1b1B b1B b1B b1B bS:{ھWǗqBy?0n@oCVC A#B Ac%gO:~=""H* CA A#WaիWSHHw*f^x %gwgEݺQ;י3^eu>zfV_"sD7Y#ƴjb u <6fΐB !k. +Tb2z4~3/bї_.S^3@m.(rxb(~cCU%%bC} beq1b bXbȃyr)D̙8hȼ'ONpI]NXa`QW]Qaʶ_]YIY&[PQ{={X sϥ?tY΃e\}`:*p~Ciirib?OU'O*J*.媐\u+ٖ[M%wS}ᅴrz|ҟ}V?sTU\l*}ʶݪeN@w-#/mپki׭#+cj\Y@ !~Ԯ];ڴiSp&.bM! Hs8Pi(aJ-MC/ಝ͚8:ﺋJ"'Gġ#4.NdLk!1L~*?r*237I<;c^=ҘJ;61}W q``I)ڼYġc2^~YlCΎo*}ʶ{bq\p:Qmϑ_? J2%To~-b@:-Ժuk={RbU%5JTtJey {Tׯ|~?I@ !r-CiC|Uԯ3(\7iy_7}VU1ݺe$d.J8PT3vf[3;S[o9eYE w^]߽M֪ZXb(۾(F.NJ?Y3睫O3o}f_\~C!A$KCc"塇qGyU~C) CH !}DQ+^r8:sNp ru^RUT?Eu2^U/b!fK6Syo]te)NzQֻ*pe{?y0F"+K|NF6~|":xcA;wPRWb(۾ Wi#ѯfҏ׊j#S][)]Q۾W\]F#"joWzz~dG~l b@$ t}E V[)駝+ (EƟ<>aL.5J|3,]_),\bv=r\ť\ra&(-=rr=tDa.o_OFGJ?V3 _O\k-ƏWRӽWRW3u9W%]?1b1 0B !b1C!b1C!b1C!b1C!b1C!b1 O J : b > \ K1L=Z σ˳gC1F ͜I 1OC1CE1lݺ55mڔڶmK{ӧ6 1@ PQ aӦMSΝiܸqQt(Quԥ*b>@ jt!bFFF矏* C!h b ڲe m߾[馛'@ !CPh°0֭5k֌ZhA]w޽b1B AC@C!!b1b1B PÂ|!CPgbx@KxqƎf;? cK^<᜘02mk{\uiXCu;!C CPb1D$1DjlI'֯ǹ5E:!^14L>DDDСCm۶ԴiSر#}A'fICP).x:I !\`yQv;\%$P.gEݺQ;3^ˎ6~Cf%z9byKK^1B A,mڴ_;~}M}F!ş~*K3,II}TV3*b 8/1,KL_.BHm#E[E eo b蠪C-@ !s=K/mUR~7s&%$RӪo&NtfRosTQϊEҟ{ f%wSBH}6AKc:w͛%{ؾI:9C/mf*\xZV7ihj:N۲K+*lCUct}o;S{1 Imi̋Y5>[M!b^0x ԩ8/R;v,#ڃE iU1LfUWQƋ/O*>/LIOT~%w?61;VMv!1/iU nj=_x~@ !CРİI&twВ%K ruӨQ*\Mɥ*^-˟č3JccEP[?6m.,2/ϼ.Cw'۟jdts96L{Պ=![xV?oqj?oI_w~ܟBnYB9c%jvl#~omkURM\OU ?_SvZJ!bT W.ѯbآE Zv˼׋Ćz39\e.1t!F9W_Hyv~m JvāE[#~xo.&tⲌVU&M̟{Moʘn.hme%=r/RegG]ߪ۶g:w"oE eקSaCΟC AኟU o&bҨF+\ʼnRE`7f"vp{]'~ u_bxS'::kUiܻf.˸ ^eFxNVS9?ď,p) g 92lgxa5}ǁc~eA]=?y۱}j;hUdgѣi5CS޿Ϩ]۷>dW;/a#Ss!J1 b(0eh1GS1O!hb1lbO>I11B*`2J8}b b1T:Ю]B a7s&%$fJ/x]<Mߟ[{@Z&,L s __>)?LѭZQ xݲ%}Kl1~r}H?_ue%eMD{2P:q¶O8>km;?/㍳lfTRdl83ն6o659!grM]wQi|3R{L|O^fG{-3x6m+2_.OsU~SW9F뗥OKKOSu$!_r|ktEv6h޶JC#۾<~\h]^weTЮiJ! MZ:$$-[9,ٵKxFվ\jUǿ @ln:WSEBboA,K gn6v,xhr^OmWWtUίeS{!_etZӤmO5~u}[=>CoG}_'-hBn<|rb1 Hpc5*DYT_1Y~Co\K5>YH(irLnCQ…UzN38 UY]Q! XQy۲r~ /I ] e+K_VQć#k ۨYT_׷zZ^FMoӏ,<B B1駟b:bh$Ry0EUOK/6$FFۍf wխN2UΙCGgyٌŁ..1~o.Vմ1,*_-:0tSmjο5Z,}a 14'_Yz*חbms>X.qu=.YICvƯog5e۷ QpRl f#K*?+ CP =S_^F9}5۵ђKヰxNv̺ IOT&9{<zcoӦ_[]AA͛h;szGWU;JtqSI?CYҗ]_czq?|tRӫ7Sҥ]Yr-_ڵCGGqzYUyY?1xb!P0+}|˝3q0# ~!!0H^7:~ow>1W#k4@ p颅CPbOtKD)iO=EU6h1b@ @ @ ! bu[:8ҢS8m[U5}1f}kb àCf={BC`.ۙG?KKY,ns&}a!fKפrU2}!hbm  9.":'O`C^Н|}8U<%occ t1EN믧}-Zax,8wɩtە>xuZ[=.o71$W* bb8S&pZN3פ$hy"@/)hҢX!h8bh4mFGHڹsi b+ W]^.`}6&1l|^] |R|Jcbp`2J8шa]ǟbXTNG^{ O1xbx9o2otrf0oLJ4H<~yVQϊ7ҟ{ >s%ӹs=z%޺3 xr.0#\}W˜;kr_Qf[ةׅ_ǎTcG@\GRۭeMlڔ%%)=W(,[&JS*"VW9au.JDcycѾyk4핗ׅFΟݿd^?v]L3׾gm$Ď CD W?,7gfuiɓʍ14Zr_~yɮ]TtV|Y=Ckڴ7_u>L~ToB߾T~ W,5\3ypSb-j}&B ]}?/ɖοGGi5 nQmPEAwC!A"͵)tocmp Ysy'3z1vf2\~:Y2?_Lsu5< ̍7ʒ t1;w S1~%GE &pIɃ g:S r{Sh{^k؆Q\ x1u%җ%[oV?X/\(ڢ@! =zB.)6Þ={B 52^zIa6pqdB5dXVVMm~$cJyI#"DjjC'E[ Aw`v|*C}БW_ 13%'~Y\x*vKj4_?_X8FM` >/ׇr>X>r)0p:K:TyӟZCo_Wb-}_f1o)* Wic=c~(F@ !g~z_{Xmۖ:,9L{lذb䴧Ux8w}܃Uv]tWR~+i5۵kX;8=$s;0WROwdP\:Km[V><XδrYҪҏ٪y_|AiO=U?\j˥g\ra&YµkE\EKz*ׇt{ydҥƛo׸r[~\_1ԅzK_l>uT]r >x,\/!!t「w`Sw1b!PX;Lqvsp?@ b^Xcb!B  b C!!b b1!0\[c=FڵUoߞ^{C_Ǚ&y<.y AF̙sUr䱨['=nْ{=kDT7Zn}8͛x<2{u5_T}_q&yS)p<ubz?1`.[,)qn#F~ъ+%KmF&M 1L=r?EƝ?{m*<!kr 7C </ubF*,"#.GPtt1;ԝ6fA}Z}Ń[*?|fSR?IIC~}aRORiL "/ -ām9bb"Cw;İUVb{kM\jbșy.J4Hdy8dOB<#y`.Ar$?ʒħ4OFBw.XW<~\ n}Uk^~}!3V?1`ГІ ja-G ]P6# r#"+E()aфU*^=Ż7-X@c}_Űdsׇ&}7%VSYRV?1`*?Lڱc-]CgyfpT%5JTuJ:coFG^(yZBu2|"z*I&NI=Nݫů'mKqq*v1]PEnׇrl ׽;m֬;︔ Z9bb诪۷oz.R:쳩SNӅ^h:a ##5k\UU%D1y \b%z G ]Pb ]QHH-_aT%5JTuJ:c1CРjURn_Jڵ z :B ! JU҈ڵ>qF v1!hbkUɓ'*x={b1C_(t7o!b1&vJZb1`Q b1B AC  C!B1DUR!F.J 1CUI bZ4<<+2l޼9uAi}v$hQe  C!Z{4qD(Zj 6LȠ@Ôѣ)Ϩ\!~d ~ C!Yt˖-ԬY3VQ̙8hCiNi|<\s QU C!>1WҩSR>}|^pb*ڴ'1LYK$0@ !Cи0,,BBBh>-SUIGUG]Θ!ɡSUI  C!hbCCC]vpB%ނ/u>9ae6 C!hbA]vC7nhzy7K +rs1'b] ЛM C1*zQі-HT!6V1!B  bW A  @Б?:ô$!:CtbN}c6oޜ:t ,ܾ}X>w\{e˖t9Pǎm۶A  C!hbؽ{w8q"EFFRTTZ &dtM4eZvXzjz;@ !CSزe 5k_p9b1 éSR>}jߵk\Fq9b1 aaaB˗/w?ƍ!/V+@ ACn?Jڵ z͊+@  ^ QbFDDP׮]EPM6!b1 E 'O,!(SkmFӧOܹST1>|8b1lbQ{ؼy3͙3G ]ѢE QJؾ}{z'E!b%Qa!bb1 81DUR1@ @ !C!@ !C!@ !C!4d1 QX͛7:1 o^뷫W1b1"ݻw'Rdd$EEEѪUhذaB۵ku֍^y!b1 I =-[xP;S|@ !CpԩԧONڵM6A  C!hb&._\L[ZnMgvb1B ACn_*J.\-h@ !C0""v*nܸz C!bNw:z}z!!ZJej֬Y/ڧ{pHQ@On겼&mDOSR?҉24'↚LXLDMރWT$Z5(-~E<[+#*/6'v&Լf3^{<7C1C36U>}8ŰuԴiSj۶-ݛkH%/ZhVXZjJ\RH7RYglN9*mC.ݼB`GGn91A8hv8x98>!F!!!\e6m5Iܹ37. ĐrIݪx3{9?f,='!9c5/O)QtvQڬFhvَh߈iBYU|zM JT#fUb͉!yfP_ȥϭ;>n>eO 1C 0>1Ԯ];Zpo#"" .w14F[tD!CZZqZָj~9rck5"| QBdm1̍і%y#ѤsjJ/R;Y+RG3bnuCy||,/-CPbhS!^׮]Eэ7J%;9Đz>}j_}EqhDogF8_/i.Vb}/DRK_[#~?]]ִxSe݀=2d9\ { *8>@ ]6 t0G[.^>sZ'ˈME%b8rE,ǿ**ʬ[ŭEy58X_o結uR?E ?;,Z$ǏSWʉ+WLCW*&ZQѲL1gGd} Ӂ\bw7 uBek7E^1MÓ_?gyC@ 1t.dݧP|rH"fKB䧟~M1ѷFk uDQglROPmYlӲcFkvAm4bF>kWf3ƨዃf f3T &Mtd9؏DNo$)G%ՑM]JLTH߯341RN QI"1C-#b8a1?C-#"!bb !b!b"! !b",000Pʗ/oe6mZɛ7޳кLDDTXQ~iyG$_|ҿ1D CH bXhQҥ̝;W6l gϖʕ+YJSO=%^nL461@ C:ʕ+ u?~!bBj=zHٲet̙C?~y${ҨQ#Yv-b"!D1 L2IXXyCɛo)SL12I~mUb"!$1חlٲIhh-pBS !b)D p¦%K+^S1ZE1D CHbح[7s E͛c_L22uT3")i5C1D !%<k/_niݺ̙P~gzj1D CH b/A C1D C1D C1D C1>@'_BjԈey/z׏"!b_n\.o/E`d^z޼q"I%R|ys/ôiJ޼y= ׬YvO(<|!l8i\Pa ë!^)ʕ+%M4N <*nܸ/Z0n}ϧKL=g;c}}=Yd̘Q:u$%>tP2,{Μӷ~a6O2EyS[D ټys*X?X?Ώc@@̙Sq۷m۷YfOSO=% q&L J2޹s};z)Vl_]%2jAgd^ok%kޖk|X_t4j&O>ݫL1BTbOc}ޓ ,X|XB 8#Ŋ<1>C.^Bu荤Cʖ-yA=1>?n6K4L{"-˗ ȪU$OWrUYGc/ m6lWb8eh⧏~~giѢq(hY1Lqb8;1CSAӚL2IXXXy[v*A oݺ#v[䯿6裏:]^Ek]ãGk+ u~<9~=ƃ:]>FZ؟|ɺuVo9;u:[ǩSW?mMC훊FkJj~B?۶m\r:n߾1@ CC_X~}f)ƘtR#3fHbrވie}LSSWF]'iSRmW1LcghYm+:mGyrB]myu|`)Y2Pҧf#s)q|&^0Y^Z^|E9o1D P #""p¦6pɒ%N]ԭ[7ݮ"PkTBBB.XޏC|F71]Q_Chڴy Y0ڬT/[vX^<&6 (:tVZI˖-cǎN3cXs b$v ڡAM-3}tɒ%GRP;S1|g$<< ҡ]NCwH洧OUF[~RHӯSkUL4ic=Z[5h?= ɉW̙kҬϟmrR]wbosmݺzV\"I$ݧPc7xCڷo7w7jæ5`\xHŋ6|&|1Jo΅o]+W?yҰ xT f[}# bQI"I}Ô~&~i?'+f=۶qm1@ CۺgqP7ep"1@ Cp˘1cg5\4h W\  ! b:0!8X}y)1# b瞓-kʽ{@1Co000Pʗ/oe6mZsp5k?SU&Yf5C_}'}50.@ 1ВEJ.]dܹa={T\Ȣ/SԮ]_~CW8{w҄C@ 1eSҕ+WJ4ittdŊqûw°0pa. @ 1WbأG)[POټyL+V 1&Z[1a b 1 L2IXXy OkbB͛ثT-S C@ 1jm`%[lj{ފǰf͚ycxY)%  bW10|tɒ%Hڧб=gcTR@ 10bح[7s E͛c/Q!Zj1,U߈JftRC@ CW Ԛ JJ駟G}Y,ZȯcK/J˾"bF%MX1Vt#3Ǝ^xb! U C@ 1D C@ 1Lmbxҥ$WRnB!3* b!bB!1D C@ CĐB!!bB*@)_>o޼枆k֬1WZ%u֕lٲUʕKڵk"BA CR-ZTtbٳ} Uu~ժU孷ޒpYvL2Eʔ)#]vE %Bb"pڳ2eLXyJ/?)JȂ( wX=,C-RBmJrJI&Θ1ɽKC@ !81kCH1k+İGRlY3)S&YhQ 1L>=b(!B%ɦ dͲk6/#0 `XXy\fMy$""B֭['SN5#|B!1D CHj1}$O!!BC1ԔB! !bB! !bB! !b6T !@ 1D C11@ CR9ܬ>C .]:ɗ/իmtQr):# ȣ]57!@ CE @ /.ݻwˆ dΜ9RfM)W ٲeÇʕ+%$$Dfj!@ ',9%ȕ[WCJ9dڮi|CA !$bxH4%]lIL*UJzmdҥCk(L|{4믻Һ|y>SI~uLlL ]m:ϧKL=~Lc{{2~ֱΨw=W,C@ SS>G !p|&7n3gJժUlٲ߲ph-X" O"rm6lm/,1BB6ʸqt6c]][W29r2 '+%SL!b:C-#bӾC0k+K,1?C~z3]V-Wat:ujy 4.]iM blynݑ{Cwoog}k;?1D CHb>RR%yw1R Ҧ5F3ч blZcxh911D !5K.1,Y+=zS_cx8ݾ}ץz^ooɄ=7n۸} 1D CHbXL0`pFI*UDQIy1bZʌN2*gbfcتpƍ2sLZ-[6ỶM!MJ1Ы={63/]aCg|R#*%K:ƙV-SF{27@ !.CN<ɨzP} åRJGJd"ϝ%GC"bКKMCOP!ĕ~{sÈi`J)SF `Y~I*UDF u4W2gŦdЀkfB ˹gsSkaB0bRbॗ01xeM6HH0գI߀^үOomaC$(p,cF4CHbhȵ[;z?#AF"BxSվZ>]|BCk%ʍ7޽{E?03֟#$qT 7mXG!7e]m.h|SN2b)^ ɞ]ݻrӡ֓kڳ2fIBHE?*۷n&BhU˼w5;o1F"PG߼ySn߾mFX4挌!$A];B!M!ޔy#! İ{W#:cn\.kV,CǘɫNE!I "Bbe  [O8+;zԴΛ=1$CO͇>׮^U)7;Bn޼c~&<%A d p;MO3B![iU+&7$t,:yB b`l\ ~}K`Kef4y㺑D`_~R͋"(*I~CB!s1ufrmԑ#/_>W^rCHb#-M9غY&#[6m/8]~F->&"d@w$D?!!^vio{rh;eˈ!x1}@Kʡ5gN+ˬrԉhEG_n$g1$B<Ct,ڞZP:Q0}?IFQt7MO3B!v/F-E^~Y>SGN8{41/C+C1+xa5u/!$AĐB\ /_L;<$X~tZ. =.'>m\/? q{-峝&* Y^$M aMU/1J&7<~L &S&sBI~O3+|F–IƮ|M !B! BMfL$7oHӄBbH!3*XVJӄBbH!B!1$BhJJ! BMI !Ã!B! B!FCQzSi8B! 3xz bK)ܳKN/۷o;wHJݻܻw␿]; >J3q\v\B!>+˄\|s)ٹc,;+y=e_nC믿E .1|Ppʄq&K1Զ7bR8qCۻ'y"&O"׭5 6/1;>,'!ӧOiܸ1lmkΜ9RD r 6|p?>c/K/7nKsrYhɡ;1B5ZWOg/Z<'O)V4kLΜ9>|Xׯ//Nslc'߸Sx߱c|g /H޼ybŊ2sLO+eRF sLz]lR.Xzk .,N/? ܹSԩ# ŋ:oG}ܭW_8q¼'/_?3S nsFzZc讐7i$TDžؖ^̞=^jjT>={iza[={H"2j(#ky6TКm ɶyJ+9r/;wweʕ9_:tVZyt̺m.Y${K1;wTVٹrV6ֶjTPbk>~o޼Yw.oUVݻw}򥨲׻wosx SP֪UKN\?նy]Μ9MQsh>ҚUZ  ēce*@Z!}1cphyz8+W.~Zu۷8222^bh6߿?1Rj/ڎ**MJm_{5s Vf7>MIO>[sj{,Pr5&ڧȾ0ZZ*Uy}ZK}Asi:6yضmi5x _Γmyj קB>^:OZٲe雧L~]cӧcZSMCRsrFjͬl_ 6f~!_ڼܹs*ڜx(p<wZpj@.|W}ܭOE(!z*VT6f[N*֧檹L[5:Ɛ>&QIc[[:hӸ{&e|R5cj}Z}:HlR ɶy޺@k[Ǝk$Ay.[,Mk&MxLlz#Va+V:>}#U͛hZ;6~駱\vU U5w})&dEdF ] |췯'v=Ѧqhbhvi}|@,P>i([JK([JVRui(ZY@co( ,}4$;ɗ??IK$v,iKR$IA֒{KҡWt) X: _K~͒`50Xz[gP" Ƞ!!2ؒ߇Ȑa!240R@jC$$8D!2jD䏑!F+1baȝ;_hME\wA[ivт7Zj_;9ҦtڜPk<ٖ7SNim8 ԂJw1XZ4ݞReC]Eu챳裞\71P,y mꨯӦ*'о>Z\TPY~(q{ZeTTY`}OtP$% -RX5a yP: 7Mт6;w%w{篿Lu)܏eܺuyܲ7֍r~n-}ݟ#ZnݺaۮuX>V!tWc)z;]~k.Ӽ}/t[xad-2jQ<됴M **w#+#yVGTnܸnr\~͖ڵǖ\'׮ȵ+WlOM\,mr9cUX-[6ZM\rSNfգG~Vj$Ws%wDCk M jo޴55wF -Rx>!f&׮Z^eU+EҮ^ ܕK^ buQF%c> V?nd&(SW@ C@ CRVj!.^@  ea#dJz k9ɄB!X /9"B!1D !B!!bB!BC1L}8wCJ*%/|rq3OX={H%22<޸q殺֙xmOГaÆIɒ%MM|`IlW=9=?,X8ӷo_ԩSҶm[zNsӧiٲe>:G8FB!Db9s&?o˦7ox+1ܴqyMJf͚Yތ~Ns:WG ν{ڵky}믶.]缭m 8  UVm۶I4ZnmAj!00M6ؤն}^z}vh-n |֔1tW޽{UV~}uz]uzQb#!Bbh'<1_ssqcgF U<~iyGMIcL<@ްaM 7nXgeK|rOZ H B .]jpj'bnyZ3}liA[kqik7b*{7lZL6nLתUK:vh9/B%K1ܻw'$o޼>CwPLY~y+Mgq^nݺhsH!rYx'bxI~}I6ʕhaϓC폦"}6iۦKb]B J]vu,?/PiHOE˛٧֤TX1ZWhP4Sڷoy9sh@uɓ'M_jBm.ג6+o1t<&ֲڟ'VCW?#!BHj}O j~e˚hƎëG6l߶5^brZgF )c2w#za>-ǷuZ%Oر#iB:j֬)RzuZj zzc-wT:>֚/oNMgcpMڼ1i9Jc$BI]b~yо 6_݉P3JLlMFU#*_4h ٲe?@͝Wz"4,}6l`صkjmCWEWh1Js1cȗ_~y{VhذmA矗R<8bn۞Dχֈk8Wn]^2ۏ|wǠUy+M1ԑnm}DwDB!Hɱa_'ߙbxenҤI#ÆY ŋN +W*6pNziq4HГW 'L oΝی:t(HkT4ZKgCoק:ȴ|2eʔh˯Y<^zylw2bn۞D%Eߛ1zHW业YeMSܸةЁtlvZhm}tw{!!Bᡃ{O fz /B Z[׳g;z۸cM3OˢE͞5S6o(Z&QG7-ՁhN8.-B HÆ_b̝=[w0w/cy~ǎmi[)Sr{ bv` 1jawTZի·-Zdϓ'+VL5k&gΜqYwL|cqo!X1\zn7ZzN$fD }XcP=i$TDžؖ^̞=[._˹ׯԨQ#*,䳶R@.PXE i!Hw / &|)H$w Y ik5HZu ݃%?v=C`hϽS@t, %Kk`Ϡ`;8D"~ACBd% !Bdh`Z"!!2<$DFQ#Bd% {^tIJ*%,?~ݭϛV+?@ 0@ʔ)# -Z,n:=f)]͛W>cٽ{mLOj;`Ү];)T-ZT .{6/(Æ sۖ6>gecc7n\301&b9|耜߲grPɁ}&5{mˮlٹ}-;meͶl۲l4ٺYd&z5L6mЬ5ٸ^d:jk5lYfOİM62tP9{т^zOKF~m Ȳu}@Y9rH/;w6lP1h'|]w}Zjɓ'ĉy8pTVM>lשS'Uy: צ3g4x1iٲe3P1 34D V 7mdj 'bnyi)"r*[l1d/"q]cX\9SjE4jW|Ӷ7nܐ|L k&Z[꼽MW}WcWedɒ2|p9~xz 6~bbXbEٷoǢW\15?UTBњ%mťP-gΜ&9r0o|0!_my-cvu^m֫Yٶm)-\f g@ x5w2*s BfڧW닋曦٧h-FgױmϞ=.ϋJ/j Q .4MKj a蘑a"1t}޽{!ڄC.6m.~e;v|!f?kҤIoPj x%/V\_ XN_OaϞ=1b{U}R1,^IH%b8av*bO1vb!Ν1Ӂj.^vyOl7!v}C?};#s΍u=*5:ҨuѣG{=x6u5Wom֌}4ݍ𩢦C%knW'x먤:m͘1 yIW\}F R^t1Q!b !@ҊÄ۷o!,H0!PA  و4pPPURx1I&d̘Q^y76Q0|tylb3OE 1G c|.,"W˒?_>4h,[,[DBeʼn**~,L 1p!B!mT ;y%r.kJB!BH<…>#GpPEvZ5SOI͚5L?Hޕ_YoJ$C )cF61L6TV2II>|REzܔTO?%O>TxM u>+3f0G !B!V Ϟ=V UTnR U"e˖MכfY'61uSG3ߛu?#aӥEfߢ޽zQS+R azIbd2}$)]TȥU 5?hfYTg B!1TaM FzH͝mkJ:gL\616%xޜY)U+3#lb83|$A8Ctɸ?F˟X2_'3e&S'O)i2ɓxƘCJ8t> !BRΘ2#1ԦY2g!KlHU wn[lI 1؋6!52T UùusΒbNkܽI*Ul0|g ^tiYxgrkBm\_ǏB!N~7R@i8gb5jT1 41>u*XPh>O>tIfLbcoIB%p3;HAL >,%JM6yT@fcǎI||V v>g_vkri=wCJ*%/|rq3W_5ǩ{ٳKddyqF3]-8WT<6l,YԼ~Ķq5ߓc?HA_}|Ϝ9#^x߿Wbx)i۶ٖF9u}jٲek: q>!BRR.]L@1&Zhnnp}-ÃUVU2glFՁe/bh3db™6me\7mbl"]d˖M{1wy;İYf7圽p޽vڱO.\^rdРAlq>8  UVm۶4Znm$@jD 00M6ؤն}^z}vsֵB >kJvjX޽zz)|lݺլRmY믿FwhtZqw>}}>!BRVńãpCǦc& u%K.5MB1tcֈlٲ~hβeLۙx>/QkxIx [>76ӵjՒ;J:u/B%K1ܻw'$o޼>CwPLY~֮zߴ־..;`׭[mqw>}}>!BC0?4M"=-o2#+VBٹsi>Do>Zϙ3 yW!BRy,ӧS'Cg*z\=Pi j}} w_4 m5k֔^y\Z5Xk==߱m{*B*Ziww 5dZC(1k u~qw>}}>!BRy,3æ[8bbxڰa`c׮]ҪU+}5jd N^i3FhkCݮu;? 6~?m_o1tmOow~muJ _z%ww OھOoΝ;Gcv%G ;wB!1S1&97{ &[o%sW^y r!k֤h޾sz 㨚*y7L|2e͛7׬Yc^<W1tmO#c/1|9;}?7on:qT:(^yAD?.XG%F%h"|w||B! j !!BbBCB!1$ B!H g#!!B!$UYFCĐB!JpCe-FCĐB! pRX>e=BƎN^ 0bSGSRk R!W^A CHb$_""a£;_)|s$@ j;VU/!qۉm:.l۶MxD%Ը;7!b(b8a#Eޮz]ɏJSΜ9Mra*k:}-c֦q^Bwwt⸼+t -\gѢEy[l5jt˦y6-=wx1{1tVNy>_/74.=AsjNmi%{C):۞ZAo|9ְi EC+Gp…iv'Oljf޽koo1M~`éCcx@z)ܳ+V1\~O?cCW,-Z0/5jd˚U2f UTHzϘ&<ղL:mb8eD)SO?-jְaժU,2RʕS`C/|.O[^cU ׭Y%2)y'GʟpTɒzJY|qN Ϟ=.s̞alrRI6̚.Z;ᗍæO!WfNwlɟ`\8!&=W@N] U XP=3BKI&S1ly=yeԈ6MڶiM }/VLƎ%ӦLҥKIJ0՗ef 2<8( ./^@ C):*ָ;~bx"?NfL: HV,Ylb#{vaECǦٳ?+UT1b)鲥Ί7MFk倭MIgLbCML.?͗ }%sL61|g,XшalMIgG̐CHb8cDP,C &[lr*W֔>V1\"]i;oб61?oԬQ݌[ѣlb8?y–?i[giԲ>^Ob8wX*a,BZl7Jp0RNꨤ-y} P1Y3wO;c=fuQ mc[3oE6Uu믿+M-U Vv*W.33kWV-[XYD 1tC;c1chYb̛7GF a:ZB9[^KVmlİCę`\./1 ӥq61>4,YdEU[!Z÷zK *(C9"dʤ 2xPnRß-]t1ba\Pkׯgb+P@mbXܛ'G5 Ț)iٲoQCu^AMSRAlEI>zfDSj_ݺusz"1CmnZVMɖ-|fV1|QRu哾}zӔCk"#? "!ba2ÎI<C@ =SZ U-Y$ ͑>LS?E 1D 'OOb8jI?D 1L%bؔT@  5ނ"l!bX CCpV8b@y"!!1TX w!S'۷D CHebhSd2vp$!$71TX "! !bar1iۦA 1S1裏w}#etY}1Hb8iDI&Grh/}-bS97)D 1L@9|睷y:"&f˖Mh$k֬~'! 7)̙brRY0w6baBˡJ!bɉ˗.cQK rRhӧN"\<NN?*cF&/1,;Kv&gNK[B641u.'Ė Ϛ½{v̰i/gL8^v[#.I9uX>@H&Ar9o/O#$UfHKyu-,eWz7rDie݈aB̰:V꒤?FqcI4~L<bI)1c!>Zf7+̞iE=&V1$B!B!Bbx_ W,B!BH2ݻB!BQ|. C!B!3!!B! !!B! !!B! B! gNb]gNB!!!܄#Sq9RU;{F-*+/:I !2?r G\5W>X;u`>m[)\<-[6irh͟7WxuL\9sNw *H˖?87kLy?,Yȿ/)_,YKKorq)T`֑\YRLi-oL4ɯCkn՚Iҥ$K̒.]:jڴI{v>Ŗ#FD[ŋZ\'4=fCDDxbg.uy+H߾}|1އ32%J4iHLTR2c4 {<8,=e];wH%G)bϽS{oI'ʶ[̗ /`κ̪+L:ƍ$0py_]hs!&rsfϖ_E/Z( ϓ7h_dPnyskDիVJN?C=$a3"?uv&M6_cʆLs~h藹愥a74527O?ԥKgɐ!C%^/׊67=wz1Lў\S~ݽϱE?3g|鏽cQb~ɝ۔U>s͛Xb~w?vWLy|ǍLSN$gܟg_,h|sz!e˖53bCF@ ǚ5kF[OKLsfQ۷kV证[lNubV7o,s525n$5f*1)/gy|?Fݝ moo$b@bԩS;Z-'bWR$l7{cؼiSC>N |A#//L2|$o޼mbkŒRk) 6ԓ њh@ xZ(Uۿooʕ?͛GEڲ3ftժw~Q-e?Sd_ո"dˈ^3m gu\;K6٣_|`i =Ax]kGG^kT>dɒ~ s\VMLk}5GB6Ͳ t6ne-ɦ5➘ǠMsMsXꯗz js݁ؖw=qy}Μ95>{~Yuf9gMis@a֭M\7uhw.=VQ_v  2@0A"sĠ$@H0Aэ+5n *ܚY3w۷y~c>s\eR_ܸ$vjLyرE2֥RGho˖}9{vE^wz՜a,>ҥK{W[E@U mѢE {R~xő'!kڵ7ycw\^2 +f"DLg?Z10BͯwفٹS m)#8Yy0Ο;g޽c_,i{PBY}K!5X1xTB2ԥ1)FӥԛI=8Sݛ$k+C5Á#_?oP'Hr3P1E>Ƃ߾u3*0tqib1gzK,iL~CMmˋ$F]bhSTh`<5w˼CC e4qzb|wAo:yT6"_Tڋ>6z.$n]M~јƼh.Cb.,^ɿ$5' k e6& "Rqx #c@, (M"Ӽs!JȮ?4u 9&Ǘ%+3ٙ,>=1l{m#`@{>YvK ާHۥW~b^=c(YkV6>+] 2.Qbqٲeַ{N{oS&&y)iL`cnN` B25n=*8M{}#ǰ.I\bґ/ e*Dzu50 Zn4'K3wnܤ!VK@j?) _cx/,d2^ݷїħp.]=y8]`(?;.YЃ5dB'CU423C) 2LxVi-S=bںlC` C #*kOfG`CO(0dV /5 jPC]YG*vۺQ[{YKO99t$z=x%5hXhTR9M{}#ﱊ.I88UJJC:\Kz-W fC2Hg*{4iyRI)/^zުUfex/,d2'tw?^ʆ1i×A I 9l X,ض r?lEW9,Ȱ!wX02+ 0y-*36cEF-C(Ohd.Cd-J}T&kbC & iB;*uڸ|82Ⱥkӆ&۵зF1|NЧ3ɺ qQ=Ԑ !;($P}7UtONbl4磎dJY2T nzx>MrCdȞrN :w:H@Od+OFO1i_ T 41>nl_ 嘅y\Z}\9|Ѝ50,A%epq ML[cv]ȶ 8n1aRpA͎"I'(| 60ؚ#=<<}LJ؁z 9rm};>峽ܹ,SOWZ "TZ%|EiNYC[@21 gw0Օ%w1dvPRB$]z<ڢ`- ȯ~U}J뀵ã}@`K ,Noa/+>k;D@kJ~}s᳍UtyhV(<)0T yݬ{sBY RaɐI6ǻn4#6sAI;{dK0s@m&9sd|*kk] 7Esǐ E)Ӄϯ%, i+]Q/$mܰT`sG7Ar gb,ں2G֓cZeq=!C&sA/`Ew'0䘔@P #DʬuP~td恡]q粌!n;0\~1PEX⓵׬1uoSm΍L$ȤE 3^ 9Ϫ9bnɞjjl`[(58{UB*c H<=-fR}͵.ptA3rݔ WV"9dI}1P+)-v~]Y'C6Ȧ$:ͪ:D:cp_$ۡRs׶/Pem9~1en颉L5ބő2D}v^Is #-lP|:oIRIp[f  B쳧0PS Γ[wu8:ƣg%EOipsRIA`P(vu\dSkĉ÷EA'kcBRI BH A9z(Cte Xdkte3hPEwc9N9:fyI%U( B)`(=Ǐ5V(F,*:)JP( BP(Q* BP( <*TP( BP(J%U( BP( * BP( b_In7IENDB`geany-1.23.1+dfsg/doc/images/pref_dialog_various.png0000644000175000017500000013445412146146075022634 0ustar hyperairhyperairPNG  IHDRzaֻTsBIT|dtEXtSoftwaregnome-screenshot>IDATxxׇOl M^EtP7A@iRBS"T@ ɒJB $:{ )ofl < )w-ΦKgG:s1o I?&@ D v]v;]ɋϟS|Sz HE={=zHs^hhH cҍT/|$r޽zÁFptKNNx|^\cHVWN|+W.*S }tD#d;5nԈ .L%K_vЉ޳x.D… s7|#>m-/s%???:{,35ޓ'O(q $+q<Jnݒ5kF/?eLaԼys*T5jԈ+eժU+#"Vr e{/M6#dʕ+AT@P3F[*o@jT`A*Q @=(M[l!WWW\rMt*]4uޝN:E+Ç[D1|?7SRL?qS{ e{iӦ={իtHѣ۷-xT@+;F/^<`wt1z,;_|͘1C M>yy͚5[>yyyʲ0H;<<ܠ<;lذ>C{]vmꫯ==7Z,]v2͛Kݕ=|p_+{ Y3 vG'zwnߢG@RzeVz-ZT2`:N;bcG#Q ÇSA}¡ {=:Ա/[Ǿ=?)@ O}:xݼqA.zc$;o m P'zQlcD@u2IDDT!z<(..3^̣= z= z= z=DiVj=Iyy]ܖ.5kP̙ޣŊQ~_SXNtґkD=S7|Pʔ)}p [̍:w6_ѳBخP`]@ԩS^$\F1|;aGvQ|Ȗ-5l zRƌG*nA(Y (7xOҋ䣏>J*9p^}׏~1Ҟ=xp.׸Q#4p1zѧNP>}O>,YP۶mV g O.*XV,w  ZϞ=(gΜ3SV-)"lNX8{I1}:k׶-e˖yʗ/͛uNtی5>O;f?gH>fvڅ-ۛ4<^cG{/$zK~ J &L/e[=6[˸C~NyFmρ3tgwtѶmӚ *׸QC*W,^wqt|=5|٠)S.[+A"u â\LDo iƓ@2Md>z:tЍ˓=hfYҮ>MnސnĈ$"g˗.RB mW%hJbIוV|e%Yc͛762j~8,Cn󲥍@&z OϺI,WLVM==SܹE"˫IFE/2"v"cx"E SÆ_Z=ۧw/3}]\i/9u72[NZ!z}gϞQӧz8bb^:{CeV~fs_bcCR=cћ B/_X'+ݽO^zUc]&M^۬_+z\'O zPѾ1?MxܽxB{Gwn'=vZAAg{=\蹯ZK`!]5h jEqL :~ܾ@efپ~*BB=i 5"BC^at ;3> zOxPDm@šD[܃ek={p0t MaMh%/8Џt ;R@fу.V E-礋W OlޥV+,zgO̟!z=EbN)13+=˩_cҥKG*UG\w"zceȐA>Ѝѽ;5kTUxK{v=/$lDpBSzuӌ/{G'O2"aj?kƏGƍKzE]~O-[f%KrssSU7p\!zΝu Aʕ͛zI{#TF/qL={t`or?kk%+ƍiN7mڔڴimgeʔInnxC\58H[Ns]qՋT}AONg3gN4.\<֯ME'|BG)k֬={vc]9<ᆬܹ?;w־.H)X=a߿c-rKRQNY֧wojbe @bJE)zuصk*Xdj?X d"S'Q>E,;}{t1cFc/V@Xd,eh=vm)[l;P|h9:_(Oܲ_uDXXкwA3g͛юN]"? š5)t:r8JD/BP.~)G-r L5jT;BdzuRN!{k?o5gI[;V^߇}ʑ#m}X7#z='Mf]s6E#nѺ"-~nBK/ѢK0"ݽ{ۮ5w_۩*TjF}ʕk#o]t=JqJFh 2zs~-rK'ɲƢYbZl)mL;2z=*VիVZ n!Em;BӶ? پ{3&:ceݙh}ϝ=#)buK]#0S 5:ZK>Z׮m[rqqǾ>$^\YKsae_?H9̉ުЛ| r~oJ\ y9G3i%z۷mukeW-^2V%iߞݴxBʞ=nJukJnw yo,wݲqh%/D[fޜ([֬)zܿo pߝ:vի+ ݬe+ ?TᨨZS 7ZSZr 4~_MݺuMe_?H9V6yz$q֌Y];~ %Fjl2%sf]94^2Ǿ@uH8>cv ϓ5rRbDѻ~*}Gz*ʕ+yyyk}" EDs)mDL)O8fn2ZciS'Ӟ"q cǿA,T1[ P.˖/su~F|eÆ խgrn֬t{ynCKΎ"zwҙJ,).XYz_dys)BzlDd'z,eKk԰!+[V\Nvr<[Eoatߒu_j׮EŊ?纅}J.ES{|?ܰ^zCw`y֭ ̿}'ǃsgx[K~ۗ#c!/.3vMgG=s7xMn2^g}G)K5jG+=]vmx2@Do|.]D3gΤ… "z,;wӥKHݹsG֭[7zTlYz,zѿaKs|s_vM+ay\~}={lwyڿ7}ŋ'OqlOŊCSLmRTTINᅦAD/E E zw޿_DB?7o^:un?e|uޝVX!o7od"##e٠AhzsRo\~׮]i͚5xV1BdPq}ڴiC .~~~TN֗/_RѢEExf֭4'zVS@ zw=ED/]t L%m7g .C *׽z{>'KZKgƍq߾}uzuݶƘ_Vlçnh4DskiKQZR#z,nat58H.AO^tt4,X<<4˗O{)*UJqUm۶ڷoM:r|k9+WNaÆ ryՄB.]ɓ'?ks\S{=[f"C޶-6u*guIA<%"<<\aƌQtiZ~A21zJ![nH6ldx51d*իDٖ[+c4`|]JIw0KuH""Ҿj_n]y3|͚504n߾ǷM!q;Dy65]./72:w9rPȥ][K'z3f^={L|S>}t]r8Ϝ\N"xr GϞ=uZY%K#~l}zShsvZ=s֭ZR),tTF j٢NxQ#GP@?=D₻oY! z۵,oَ3~?ƀ4YRD/2bi݊fJ9gN;hE0HS+t @ z)'zinK^w6G/_Q qO1OЃhM~|"DZE36=\fܞ뾓 MU,NwQl<>uw|5^tM^*'ÊF+y!z=@ z=@ z=уAD zjD/S^pDH>' G בs# ^ENǏAٳgnq M# }Doxzڕˤ>]|rMǎ gϞq% n=j8S6BG4}Cme;~85nX,hV=[sޔn@.zQlcѣG)**JVie%%\{8>c]Gϟӄh7 zI=ؓ'q='%JP:udɒԩS':n… lٲTxqSr(Tzu֭q;V*t֍n߾-1cPŊt4`xjR uޝ+F˗)Su\t:zxxyh,]+yJ$Z,Ճ?H;鯷p.ƏmCA z Dy[D97o9rD %e׮]ePB:Em6:s持8-[ʾ,=...-Y СC觟~GA믿RE֬\F\ݕgϞ-re4Hd/92z,חz3|уA%cr۹sdܹzgy;7oJɓ {.)RDa8YtW^p~.]2Wsu4'Jnjʓ'E޽{ThQi'sA z= z&z,#qq='=b'NX 6d2Uy;δ(P߿`(.G.ČK3h,Ku7VΝ;'X\!z=Do4 }D/Cw˗OiJN/]˖-k׮ION) wu=& =Ku/K\귇K6Un{ΪZ=sq,]=D@lVu2ARǨDm޼YM4`Ν;SݺuET8C*Clc!1b5wg"zt8+WZѳTw^_T)rss3z 6L&p=+I68|_FʕEj׮MzҕcLut"zz uQfϚѳTw^?}tܥKrLCu4m4MObbbTC/=z$vуTݻEi Z7lǏEƹN4ޞh7 z=Hm,Zj֬^򋞗t%f"yA"zKp-w#>}Z m==ύZQ#¢Ţ}VvC zNOV wM.\索%8HU-D@)zw(Su˂ֳgʙ3'eɒZjIa;ua;UZ>C٦S==ѻ{C[EwghZPjը]6:[U 8@V.ȩZ˔)ys];?̧lٲDSeiR6yz1Kl&3"zA~ԡ Ȟ֭C+9!pp\ڐ:DwN8˂N`y:2d@vB@@I2gL?M*Y=eޗ a-]7mD>o㧈޸mɓ(cƌ72@ HݷDխȈ0ڥ }i.zwH԰:ѫEMΟ;n@@h=@ =D@ ^ ^CEWEo݄A@8=Q}4Zɻу!d_9|*\G@?43-zZ7A۳gTmq M2@@ z=NJgʯ(y#FLLʕ+CG~^58Sg)>|HsQ|SуA/^xA#BpUj֬Y=[ s^ѻwխ[Wu"zS'FC z=^꓄&˗/Ӆ Ν;o4 s:/_R֭Mϟ 4a+ %]|!z"zO>ɓ'SթDԻwoz`pѣRJTbE9r"ժU>}Pe̙3_)W75j 6L7HM-iҤIgIC n+N*ՄK[ΤhϵB ?~Y&mٲ@J,IקRJQn 2V4f6umc+GRǎ܆cƌQ0׮֎ѳO(v -_xرcMn@ zI?/^ڴiC{۷oСCsK."X&~w{ܸqrQZ`*TH$B{{{ӓ'OԢEeY)SP۶m)**JuIꮿ_.]$ݛI͐Ç<… (<U>Zz8XJ{ڵktyڿ׀vv1-QV-ɼxHh\֞+K屠[N&Y('-̵zM-CX/6E?X}!=Wɓ8_YRxw {/<;|35߉=DΓxxHϞ=ux߄ d_tQ5!}|Yh2Eϟ,SΞʕ+Dۃ]v_H[:9vMkזT˳Y-ø֞+0¢Č`UsjxCSEO_w{I@@̉Bpd B lZ7lǏE?cZ~6YFC zfEWQmrD@ D*gO=XD@ D*&z1B z=@ z=-@ D@ Dу!уA z@@Ԉ{Stǂv=.wEUA=4Z<7zӁ}{'A zD/5~ 躅'zwcS'ʙ3'Ȟ:vhO{։>e9s..hpΝVB~eB&D#zڶZ_O"V/U˖:kӺլQ"B5kP˖-,0P:oZbD=~[~[ec)Ǜ4^[FYƒfNڵm#[0svY*mۏL=0^̉?Ez֭C+- =z K"l,b )=6E|4&'cqM2d]; zs>D#F==ײE Ǔ.Үn^fMe^PkV7F/s4mdH1mdLH3f=FC׮]sz={LՍW? DDE+nٲe9rP._g?mڴYjgN:*7hujD 8fO)BdDϜSO!z@R' z?~7n0p:|M51n[o>r y:uPHH[sut~ְsk?7(߸\kB? /K͹3ڦHѳhwwQ-h۶mt }tCr[`:t~'{ĈI\X$իo>jҤ@ղeKڵksqqZ˶X,+ӧO'NPTTN\zرc"5j0+6Ğ[s?~9"_ʔ)#ݕԮ]߿;ٳ=*_Ykbiڍ%yfy͎3USe5!6~<կ__c|,=DwMœ|Z:iӦt)<)zܷ豤/ }qriז2ŒmK0͛5lH>ȑ~`ٓdBYf?M׉^LS>mZ|Y=>^lwޡтysE~53AwysDXκwJ9s̙3SiG6蹯YEU|N~!ֹC{0[./^zMgϞ5Ǽ HMQ^=Zpׯv٭{d|7i|rԺUK7ٴ}-7ںpy,l2z={tJ+ҚU+I㵁VB[҉^"EM]mSիWYffHqWNSLXŋĈ^J3a.̙c52ůwOOO޽;P^v+R=ݻTR8p.xbZ|yixÆ [n\w%*\0ݹs')cDw˾{䫕CZ:tp?-]Lٳg7=V-on[ Q+nSukglkVX2e$cV-[h)[֬:˝Sj?=g5ΐ%W$8y䑮 K[E/0ϟŋ 9rv*bŊg}&b_pSP{ÇӤITix>Xdo~=DoD/22\ScElEMgxYȶ-fEoߨl2%Kfݱ}4fE/H[:+竑.a:kےR?.aQFC э9t)RD `zAn0[nuԩS\rTD FI*TS͚5i˖-uO>ɓ'KVX >ޖǜPukM~E;vԵǨQ<g={j\{[+O>]֛ϔ"yI&4o|XϜ9SEmڴ{۷ $Y4q5gMLڵkr.!D.]hÆ x{{KӧE"Mj>Kׯ_kwMՅ?t׬Y#yw(cCn_5Ǵ<՜ ^o@$=3JA n~^ FuU&X`Cͱ\"eJZOqٸ ׯ.X`SJ==?dzhٷbŊR&M-z ~) dv@u<>>Βk)}':%K~+\LDoNKEpBԠA}լY>#J>=^muݲT3e=V̉^``d}nUesQM61WUfmq8nܸyU{=y#f"yu֒7~nϜ9._LTbEϙ_[ůo~mϞM|ZϤd""" QrSJ>^^Jq-~ͼ)a) cxHJ&x Oߌ=<<䃟QoC􏩦MՅNxg1;444l=Xx g31g\/Y{D򆛛u5^kkh?8SoJZϤgXN)# z4h})|9ఌm߾]~2n4%g?~Onƌ@~c?(GR4FՀ5+]܏Jkmb.dF+y!z 4Q8lRjǏ!ROln8Zy/*w޵Ro߾}e'%w;sjѳ[=Drt˚Ф֮]O$®7~ޑԟ@~7!zoC%KRq/7oޔ1<zŊx"vM[$8mCI2z=^]v%@G<͊^.]:ыEٲeILEi%bR7%UJ.-RA?L EaÆQթ`TfML­[hʔ)~ j,<<\J(A+VÇݾ}ƌ#˹~ /Z=kܸqƎ+L>o}<<< XCСCB T|yAMr]ʟ?/c!!!%_h' zoTX)LKFϚ>y\+L"z,o;;uFXņ;vL$F,uԡ͛7zDe9qEEELY]-[]vIy,}1uڶm9s@xLeӌ 8ڷoO.\:t ⤶;}._\wիWi߾}ԤI:Ykผ1~D'X[ϝ)j=+zܭ۪U+y\>$b.kc7KA-[Vd~`CCC9c_x D͉%w!Kw˾{"yQ-s[BٳguݲiޞK1zϔX)ݶ[o%>}zZVd ~ u}Œ"z ]-˜qְuRuk_~T^= 쑏>Jw1ݓ ,-[eoODOQl ~=v0dY%Y@ڵkђ S豌p+k۶-UTI/3mȒ;u$]<1`Qrra]SbإKTq'Q O$eY?w7,a_^T,h-7~x߽lM@arg Ϫ5[nEKFڠJ}x4;EN:! iv2ƙS5kV nSTIZbY[n--8#=ɢDzucdbXhDbݺu-nP gѧOJ^zus"zAի\x6lbEi&Ǔ',^gf˖:vh/3X , $8_ 9snZiO%z ߺu_2d~j 4gBʖ)uk/7vL2 ՈƋnߺWZ5FFF䊠@u ʜ933#z>]OVۻg7.]Jn}ZDo_͘H4nHD=unSosC 8уAA z=@ zv_D@ S^pD@ DZ!qA z@ H6!]L* D@ =?duHÇup C!eCغu+š!@={Lնд)hD/{$wYʝ;w#QݺuxԻwoʕ+v/"3uj#>)DAR7xG/^Sz4eu DEohD]!z(zqq躵cɓѻ|2]pܹs:RiXW4K_JdE0}t䂮auѣGSJbŊ4rH qE%WWWY&*Tj׮MG;Rɒ%cƌ_C[ *Pe-[2e1J(!/_;I&I9|Ȑ!C璘̚5\\\ :t(7.uRDS~}*Uu #k^O>ɓ'Kۊ>eSNzN)BFr zl73'z(z1B@NJ 6{J&hҥfEsK."#=~̲r],jҭg={6]vΟ?O׭ ÇӥKh̙Tpawmۖd]NW}.ŋ%x .>>+FJr球eEoڈӦMyܾ}@0z *9'OӧE6f z=g;.DիW"|7u?P޼y .)`_1#%UF#FXhLKy ,lHl]X.\(N:&Nqw!!!VEk|'NH) b.XOr7^oIPlI [C̖"o>`"ԉ-cm@ z40FOJŋ7h t-=TBYn wsx;>իW)22RƤ"znnn̺ud?O"q,1ό3,Mk֬ci,B۷oW}.Ҏ|_?nK{I5Uď'~(իGԠAyp&P g#jSF#&Mдi2x|KQplBҥgU"?ME/8xlHiyĉr2e˖fE/֜)_!4cfŁc2΋ y&eAR+zVZ%@ %z<7'm,XX2eD}MYf?d-oӹWT@~zwPbHޜft3.ء=ϗO[F*X-Y=8ՓraPVjn7od}ZN8Z˲dZ^keܹs!b[|Y%?-Yvd Yu[xqӧT^])"5jԐm۶ǫք7xC}NC0 i:{C8+=I?ɪ5M6E{ҼysDoƮ5F===|woCPoݺU7jР۷OMkڴCӢ7e%NR!TO8' 1cIeuE־hԓ y iV-t}[MnC9Cmo`U63vݮ^\}Q]{s#avd&z>1V=`0 ]XK|ԍ%K?%ǩtA~iunӦ_2W_~!O<ԪU`0 Fc0Oз.<-4Gѣ1wZk2v&_68E-sSX 1-'tk׮6e-:{*ݺu˝;)z E/cDAb(z=%999W̖e27ϦQ]rEԩ=e%zcFc Eȩ2^TT\pA)zn OV?x@6lr=ṡB~ ` E0P[ҹsg)UTRE&N(Ç˫G,_ܸӧERLyey ̸qtT>___U){'zZqM)Zچeb%CjԨU}tbFru ?3]1cv~=1ydiڴٴ޽{W}u|ubuJٲem۶[+a=4q m۶<{zzZ]`P,EE˃bjԩS{H*Yf)(!P!uA@}9rjirVB I||zB [/VC!Ĭf͚O~IFԾ%$$ UVhݺQ@[Nnݺ%ΝO?4ͺѣqr 5e˖jM? t钮_xQ/;wdɒr4dZ=cD׳gta[p9aj$A#z.^=- :իW{Tn_iA%nkڵŋ2c u]) R' 6 4~w5ٳixihr6?bŊQKc`ΝRre' sU7m$k׶*Զ1;$DvWpܢ… +I~TZ`P%z7RrYMc\PхٱcGBp,n???UA!4iZ͛Z*HM0I3wb;!6YzL_14싳=LCk2ADM-#z˖-]t)Զ#C+3Wư/z6|ALAKm߼IE/ohAl"ETŏ -:{챹ntob<c|]ݵk4kg#zCˠe^9+zE.Zt4)DNl`??haԺqm:=3Wư-z?D {X EϮ'>@Ҹ4- 4--zZ @[:-xK!>ut#_ / |=Gf#FHo}H߱>q>2p #_&4cL9_:W? 3칾9|ex}BCh,^+K ,]dgX5t_b9@A0~K,n9yA@>@2YӺ-A2}R^=oh}n@c`/]^0~2vX*W\l]hme,44TvP_+'ŁʣkM]7ָR6sӀْfAsYv$2q AڨLAł s˃axւG3ة wryȝ{ڴr_kgwmZ_MA+%8 U08B1pp G!UVUc4hfݨ1-$$8mڴiƖ#WE㿬u B4`0\lZR%%Ti`JEܰV!O uZf=)\Y/ʐ<g*uA,/Y3JmAn߾n=֭Fn|-$An2p/n^7i\_Uqqu{SnXׇsR㟣wUߵ7

$%&떢G!P-z?[x+W׵ki޼N;K/Z/&?^mzJ#/<3VnbSNꫯ/c._2J=Q TӴDԩ][}YɗUڥ EB!CpA z+VPq' "g*z+/˙ oR;>+W ;fKQJ v8~(?9r䰱p@yzDPBҾ};%z%]QO6fpkyOn==Jw﮺X-r Zj֢wa?))Walv3FJrL,R2DE (z+zW\:uꨜN2E]/GʼB˞.[Q|yu5=w+ڲe8q\ ͛1z%E5F}1z%J.;KpplۺEze&z'Mmcg1 q=BLDӆs􄄇S҉klÆ U>gΜ:Ӄy#}Eo=z;j_xl;%z1m6FtvUbuf)Yzs…xBDsϩe˖Q]9njդ]vܕ*UѣG+WN*T 8 M4ҥKK*Uo߾y 2l05"#tLW_}e|e)RچeaիWWԨQCmۦ ҙ2V|EÏ=97gϞRbE5Xnܥw1vX% Ӿk߿c`kֺnLڵL2ҲeKAk|y!) Vy-|||T.===GE/[Z*Yfq0?^GE &MRbG=n8UfϞ=WHCHݺue׮]jN@pBCCSNɛoZoiVZjIrrr*4TtݻN5[F///iР۷O}iӦꇇ>{97:QvfѢE8]z'OT?Ξ=ũV_51 kxD/+zʗEQ09o1G ~4\(zP(z=pYEiVqbAt=+A@Emkݟ̙3G>}|woǎjZW!]>k)TMʘZQB???}V36!}r}rħ~j8٧+WwyǪlچ1ݫEzc|l{آ|8m„ iZ=nCgˈ t/ ұcGr`kƼZtOL=Zkhփ(Hb֭u/5Q1\3^FE=r!UiDfB޴g;d@a0njT[üBѣQϼyx"3wBrHѣݏu98]=N0wB Af=IѣY .G;wـBƢ+ HZy-V(z=B!wǯF}}>@Ҹ4- 4--zZ @[:-xK!>ut#_ / |=Gf#FHo}H߱>q>2p #_&4cL9_:W? 3칾9|ex}B__YW/%.UU6,7 J#B(z*zP!EG#B(z=Cc0 }Gѣ1 AѣQ(z `P(z=`0V$ɚÉxYy0^V쏓{.ˢݗwg)E\Q(z=`0r E3`0l,zKIЩrn9Eg`0=E`dQ }e&&Q(z #'ݻ;z`P(z/_lo׮]S.h>Wgʘek:{*ݺu˝;)z EGq}INNDOo^)#E/Dʕ+RN)S(3r`P(z=FF&AQQQrILLtj~NPN4lP~̙=1=Ear~뭷sRT)RL8Q.˗+ˍ˟>}ZZh!eʔ_]lwPɌ7NMG壁Ui{ҫ߭7oޔEmXv1(QB<<22RU T7!_}]? ^C wB4hԬYSdo'5R`&#.*TKlJʋyHPϞ=uͷ%IGƍˉ'Լ-[/^Kllz)Y?~={t);Kz~ b+S{!LG+WNV\i}Dz~:*w]^VZ̛8SFWx.b=[Mc0(z6E/"Eg_0:;1к3bZՠA4Fi!!!iӦM3$*zfh!H3p֕G*UƹA`y:tq СqۣeP\E@\1mڵ6f+/Δ20a+09`0=QgΜQmW__|Y)a)Rŋ>}H25jԐm۶>lUy={+JBv׭[3rdY{رcUn:믿ކ[,Svm)SlҬeКk)TDza҅e }={O?pRNUW\)U) G7cݻW&ޖeIJJR-8@K&Z=yΜ=pJq|l=B(z=]ɱMcLPۦMzA m{ٲe?3Ղ8m4RJđ9;F~[ի Ժh}pU#U{۷)ŶH4X%$$$MiG螷Ky#Gѣ$zˇV‚ Xb{Z+d]3fHݻ<\MWezӇu%Z.eGuWcL^ttk mݺUmkȑf`3iElcL~8*ֽ]fMi֬\چ5Cw7{SlYyӼ%[lQ-| 6bF\<<64 {h=BѣQ2T06qBv4wdk[飏>Jn>|8m„ iZ=֥HG p0VZUIƾaqn@L3}vuG0Mp.DKpTƴK̅mXA!Tzb}oݺqˡ8fycǎXY]bܹsG^FEGs;R2iv2ÌaƏ[y#Gѣ蹟y-ȄBEpC-Ɣ;wN]ݪT!B#9X0-xذsH@!EBQ(z=B!GѣQ!EG!q`0 #EGc0 GѣQ Q(z `0(z=`0 1 {_'W `0 EزiP l(҅ǀ`P(z;w7osy{e_&cG` E"_|+ؿԩSGJ*%:uq:qmAѣQ(z!.]$qz2zhq[}EoaLAѣQ(zY(ʕ?~ uvx3/<=^{2ӃIc0(z=QD 5jHѢEVZrA{cȑKW^JÆ {e:Ӻ4qDy7hh֪Ak&UTȵk׌}5Jn.]Zua DTޒΝ;O1|pU+uQ^0QW +WB uرCM>`=(3^/Zve̘1Xp&z'7-Z2eʨ}>^T| Fyw?G]n]9pڟ{ B޽UVbhݺXb5j$Gߑ `z%2k,%lGyѓWW[6o,'OT+V̮HڎQAp&z' SL˗/KDD.E`P(z=7((Hu":1gZ/WDOO^Uׯ+qqO`":=[qv?{/W\l'LXoŊ&mfN<M1=E-iCjժpcEnց 1N6m40Zw.L,ۼysZq>eJTw4 X-1ZW"w{7O+(/7n,YRC^~P|7xƖYێ?n@;t` hxmV "nؾ}S z琭pI`P(z=?!ʰ!n`Q[4Gѣ1 Q(z `0(z`0 G(z `P(z=`0=E`0 EGc0 Aѣ*I BHGѣB!=EG!P(z=B!P(z=B!PEB!=B#BEG#B(z=EBQ(zY@TT˗Oxr@;s5޽[>S)U4iD6mļBѣQ(z$cHLL3gHL`޽RhQ>}=zTL" m۶1?P(z%zO'NHxx8Or4mTFa6m'0?P(z=WxqӧT^])"5j0k)@eJZժUvIɒ%RJ2zhrI LJ.-kז2eH˖-ZdRJJ.^h_X12dZ/H믿9rDONNVZɨQtWllxzzʛom۶3zdIoGz3bj*???ly8)*$)TM߳gϟ_}XYBѣQl*iH ݪ{~[Y2~x &MRH=JK㺽Ao>ndl_f̘!NR]zO$G~שSGӂ T9<^cԮ]$,,Lȓ͏<[Ζ?ƍ'{k@HHʑEFFr(!=EOVT-Έ6… fk*ikc0 HAJTbEEz?X>"qqqj*v˟+qXf9Ggʋh$Bj%rrY%!=EOYVΈD_\kFzDOz.\LC 3GT…UoFs?W̱sΔ1]mӦj1kZʹeht=C!=Ef!tCPq,XPUV111jik}ՃB0݌+WV-Mz? wCS\ɏ3UCk\9+z-3gTb|絊q]9+JB(z=^DcЪ1q;vPLzDݵ 5lPuj˶o^CZ0}Æ EO&ʕ+ءcǎҡC:GqFJi*#Yq6?KgUvōJX>'~`$nɋ7@xɓ'ӦMSһ~VP(zݛ]={T+Zsg)8p\|l9UZUUdjRH0.Zw!z1|qaA,dŠѯ(Yq6?KWuذaRD ?ڍfe˪ōk׮LnԨ7ܹ$!=EBQ(zB!B(zG!B!=EG!P(z=!BѣQ!+EP1 >AѣQ Q(z=`0(z=`0%zQ)z=`0Qb.GS(z `0(z`0 G(z `0(z`0 EGiw5ɗ/DGGg/uԑRJIN#<<\囑;~FIҥE/0) EGѣ!W.G7n]tI>\{$''8v+VL%,,L~)P:[^)SdQ9WfPA#9LLe"((H8#zZty2Bomr.ZZ*WlWزBו8=GLyh߿=FD||qll`0(z=nѳܝ=kkשּ^BB1Z.]E^y])3sΔFoǎȑ#3е^Hui1`P(z=E-LsA ,*[nuF+zhMtRgr虖>:+zZ`JDp H3Q۵k0=E/}1chUG]MZtE=hmݻw;=ђ?nHܨpu%=8[gr*}tˇ̯XB<Û}<^e*S})&Q(zCA .G7`U"z*URc4i" :Tn޼i\c0Zjj+ݺus(zgf]>7n8)Yڞv〽u9+>ΖǙܻko-/n)W_ܘ}v^3(f͚qÇGѣ_1 AѣQ `PE`0 EP `dѻ|)Gc0 U7aQxF1 E.3Iޕwȝ;ɵr55 ɒr EGc0 #޷Ǫ;o˭7 q#/([~ZGc0 UͻK=^.=wB!d,Eoq=EBɝ7^JMVXaKfz,OѣQ!&z)FܩTREPTmӆGѣB!9I&}7LmۡC)VmZQ(z=B!$'Ds=t۶o^yiӦ1z=!Doo%)))׮^ys1x3EG!@ћ2[]=!ERtSw1"\=GIE!dcћ:iڱ)۴aL6"E_樨(ɗ/y˖-RfM)Ym6OرcxB1޽[>S)U4iD6mļ E2s49{6DnݺD/%9Y$%)ɻ.C%,>)ANR(z !ͰO:! {o+%e6m(J:BϝGyD.EG̑ÇeԨyꢣ'O9,?%!>,/J?ҥslQtM+ԫ)RlYp'1!)! ZR-js9sWfƌ-}Q\B+fwyR\Yy'dr%)1۔=+Ϲή5B(zyLxK|Ҵ 6Tމnjq[[r+^^ҬiS1s`iM7N3-믥M)GscѸQlW|;~1۲y_RuZk^|J|\ y~jTP5ٳvZ 88?Ν:Ilݲ8E駟(D1c+^jѳ5B @."[3+WV[Ͳ5o:ٱ} :-ƏWx!BØEEHUmz.]d횟%LW]<~:Ν=pYmb >uRu~ TG|$Ϥ^zʍ+*Nt`&H=AYtMCkyyzƍTٿ[9rtl}қkB#9@0vG<\0bc.yu8z(U"aolޡCoToy6zӻQqq-{>˲qwL0]rukm=otڌUX;}NiK,V]gX2~8G牻9w}oۦZW_) u帬^x&:ks3z?g'ׄGr[T$/ٯI\,0ZjiZ0t=t K B~M41<,g!CXx5{m{i*G7`֑^69Gk0]ew帚li1q;cy#e!iZڱX7tUN{{CWA,㝞cY^qS[q!x|/0_H M/Q"|hYtM'Ɨ`~B?kLene h=B֍)mpgn˖-DƁ![n:Prжeif.P 9L3\!.hnVWnG>՝xM֍0 x3;dYvm}6t}e7}q<&뇮U8@+ݺ)[ߩ`͚$sB(z$ٱu3Eڸ1< 眣XCEd ;mY@ Ӷm՝exBHƞ'휳Em1x1Ɩ`18 RtDEFlHt@tpy]'ys:0 $!N2 Vnv,E/Ȟ?Ċʊɪ<ʚU?ɺWE_SeMIbR JKx͜k/sy k| 2i?~P!2יkSc\-zc2FfϘƃQ'0Vb]ko\{5DouuvfPc\!$D=:Do4?\g?ѻ"8~ZGqJxuμ\kw{Y:}`E/;"KR!lve3/ 2gK3gȭ[#NT!u嚢1$e͝=3SNGyD 2by!$^f\{rذa~]N\߾}[F-o< /HeΝYZ'3g]~]*%J\ *$=zXLȕ鴰0'}n;G~{W Tu'yIIIB̹W֭+Ŋ{eu=\{ݕkEժUTRtR9wʺu묬q\bu,)͛77ސr%""B#|)RDɞiy/1EGaW+ȁ(zm///%׮]6uQ^ &ȫ*fܹ#5k֔]=H"i޼Nf3x>}۵kL޺z)ҥZg:ȍ72b=GqJyݾ}u޽oI릣#FHf̶dժU^w`qFtY^~e?)^/BMG/ZveDZ>LuZGfFʕ+ˬYۺu?Qg)zVZ),op$zfoXѻuf=LwyGzIǎ~1 W^SN1S!Uyԩõ4Q{3Z'|Rm`,u||*{\\V^-V]C Qю>ܝ?^6,YYy5jԐ{ʥKDΕ:23E;Y"HO?ʉyW\Qy1mDc (`,=C3T_Nwdٳ[Ҁy'NWa_Kg߾_׬Y^z%uiۚvuR]veb%Eڛ|E{9uM54**R@[֩릳/gR#"Ϋ7!!>ˮKѪ챱1?uAAAVswAyG?asijD/ ׻bm^||iX\ɪU+d-Ih:io޸Vǎ:wlV?{벜 ;.(zݢkO~z mٲSMge?.U-Qx=axi,+h![fj7-_k;q$g |h 8tH ӧY=Bsk(rf^2ew릣֮ŠgҴIyWd]ㆋSi U9X֡ 4Ptw \IL9gD!EYf]M>x_u|kbp7^w@N6]5~[V\?3X,/_>c]gY5i!%;nXWȵeFkؘҿ?u2/&,ks#{LYQ$F =GqJõu… ԘpM\V' IBR s2V~\H$%J#dۉl#8)zu;Ȅ ŵ77sYIIwH\"z 9‰ CYfNB,:nr] >#+TP`Te5r^A1`꺌D p%)SP!N2יkScG?gūfm:=Bku(zIW:p =Nqq2{4!)^:rޙsYr'}_Oe^?-S'?\H"=Bxͼk/sy>t&FfG8˜'ϩM%&oGd9rI5q<1RTχ09|  1XBko]{uȅxٰ/X'rt/]$Qn'4 s/!0'cgU6".Ƨ_@B\SU=fN^Ξ![3* MO?.Uϊ$0D^`F we3'IIIx6V6 V-R~X3{F<(#lp'gmKw:.qr%))cDO_,ёr1"\pp +/BSko]{5-QAjn(p7ӱt"$i#B!9!BEB!P!BEB!P!BEB!P!BrB!4}iIENDB`geany-1.23.1+dfsg/doc/images/pref_dialog_edit_completions.png0000644000175000017500000015145712146146075024507 0ustar hyperairhyperairPNG  IHDRzaֻTsBIT|dtEXtSoftwaregnome-screenshot>IDATx|M5Z{oʯF֮RJMծVW^i!$2$ ĈIH j7ussgr^o99yx  mDz_ЬYd0ׯ__y哗  $OFx/]wJf~d4kXxݹ/~F߻}HSL><|"yO%\/_%u2>>>"G0^]=&&jߦkJ-Pk(2 -3}Rfw^/H7gdd$LGǏO'K&wߨq=HS֭Z􄿖4\\\諯)T cccn.-YX)Sj|)͘1]o!T^= F{nFXފ HkXc(?:{Ǔ5Xd|k/_4pӧOMǯ}x=o# I2Fѻw! z.zw===);N~>hU L[|¹E%}# ?E7oDSSzP*Q(Z%*E\"D2W/ ט+2sKi?SI?}Rtq:}R0:uBpQ:rD8~Lv pHC>>X+op><)s#Q zVRX:扞jz(6Ⱦ#4t};1mG9JYsҊ)tAȓ'!z=`cUZ}< C7-'$9<ޤe>Z:AH;9n'hfw4H'fo 1 72 ^f9ec˶4- ґ9gh/0d`sB?襱q>x dppYx(4(?ed#: !zi,z~> .g>oN 4ڞ_D޼Cv50-z֮~Br~YP֧? v3&-Rp@ #ea}gO q&/Rװ@ z7ΝCYXE<~#hr,u CA׵S.~ޞ(4iу|݈i+|5  ]EIfzrrQ|(Oʕ釁(x -z#D/Z̀pl, 3\~fZ0D#z~Ir墟E۷ns^uJnEi 1"ϐ"z( 37z9={#1q4e{!zds۸rI~>6E/RYPgt&}{y-d`ѻwUDfhxGŊSv1ETVAn,W,;T|yZJ#x,h{E*6mZcۧ7(P}]o׎ *HL2x&zԲE!Mn(4`-zOeJ<7U\7 :uжm[MkmgbnݦY+ܲ50Y@~m۬=,qk7͝+x{)*88I J"z]^<([l"y?|*TP6uw.'}DU>tˉa5-pihlXSskam8=rMQcf ƎUҝFK/EE_FH?s+6f5 vtiQ?Ҳ5  fOwLMoޮ;O0Doc۽3DoTz5ʯ\}|7pӈ/1{裏>J\&"Vq<u>iUg93E<~lҥKmbc_~TD jѧO~#a'rQ֭e7"] ˗kʝ;7WK*"zJڈédɒ_ݕu [~}{M7'L$OL!銞gډvt*'6)ՖO.koJMHϟ>U^GGI" nу4i"3_5uMN8ϟG'O8QR"Nd{Y#TVM7X#G}{%쫯^zj4hX1Bq"}rJjժф vt\۽{u+9[\c'؍z]H\=ĵhќ{=u/ϗB.vߵ _o5ukЁ{ecVnիW''G{E"ԭ\̨]ZD~%m%|yҔɓU/-DO{&.A}^O^QʓW 1͓Laar_dQ?W=&ur\9e,%957-]n]ʛ=٦{n7/E,)duzc9:t*Y2I등XyZzt˛[pv,c].,q47ߺLH{^EֶٳӑÇ5ʺ{wDҍ2'dY;9,zpȻ8ݫc"M6IAw<;.Pu\ٲԻW/:aTbbbiϋyfigujΝ>ڡ};_ ב#S͓l`\9k@='\̙=jԨ!]3|ө4|Pyb[AUI7ԣ{w*Qiӯ?H]L|CСr,  l&]uC/]H'nRu֡\ 8r*e.;}0uYw;>ni `67-+Wahq;ܰ`yƳ &F;̓qxD5O^UNg8LTsmЁS֭N./PE/ E!ww7gφqy [xKc>tLnX\\ppnA34LCF_יʃ~FPxqjղ%hbn+Q6m ^C+luqa/Z,"z 4âvmF7iN>QV,[*Oj6/oۜDav榅[ҸEX.k&F;˞'(:G"q0'7Vu|i&Sq5']XȢ" -|\(>[ol(Bt'Q] ۻwq=Mxrݩqq*׷ -|)OЎo̟G!ȍk1:w$75W6WK0xp3|%:FwkUU~5FoM{S7L9ЍeT^]ڿ/HzK.K˜E ѣ*Mֆ'د`M=֬eG;Ʈ+nY"~Q˯6u O>i7TTc5Ma/z[7C2%MOROI Lޭ+(ΓOޖ}5q'tAfi3e[ʑʗ//cJ*%a*M~p>-Y`N*e΢gI.w^.Rv++zjת|ZEe>Fq"^=<` b@;@wEZ.zn\G=lQ>уууA3G]S-zhoLb 'OjU# zoJG}h5+]4ӛ@lPg]e˖|}u K{ZUrM=zt;C+VE/[*k޹g_TX1ʟ??"R˙3'ۇ (@^$we>n^PBʖ)CK/Ԉ=*URQC5=EP|V-)hN2YUxy溁Kݺu *lпsD~Աc>*aڢ}}-ce a' 䧟~BΫh@[Ӣ׫TOiڵkQ۶߸;zD)nTZU p6mh֭orW\٢}bo(uU z,zwtnQdWޅ+W.<#ϕTp$os[}u}}%ٳ,vݲq+GI?x*TKP9$:ڼysH0pzynʔ~K5j XC6{q3&z&UI-R)|x6xX>&;]۶u4);r8TZ{=$,vrڔDs;Jظd sEߦiOCDT;OxoJ&zw?J,Ylt;P`-J҃Y㯾>LQ֯_ϟG ,(c;v@׮&G>kטK/P>}Tɒ"M4cG%+ҳg5l(*el巭vYMԽ{7*[sR}vY[e˖Ș9<׬iSe3D;,u89K 5LT9mh{xܟ++'O7Zd=Mldt;!ގegҥsfN&m,RիW,챐Ab]۶ԥK-^e+gޡ5kDc(;(Q\~D sG޸,fE?/O S駑r 8qčE_UdɒMD/ Qd Jާoif_ZX2TZJ"mZ+w,z<1[.TxqE~s&ߘ}٠ܹqhYp|D*U$ܫŭfj71/%mFYejhyϕ+eUNFnu4_LpYkֱ~FD'R$z֮N :D[Ōm-m,3۔eڐD-mto޸nRW8edD/%b'j?qуLwS+zÎZnKi +y[o%-^yM&|'V=?YשS$۔/_^VZJ?%26A4s i%V^@شx)p AEYl:'Q+kO&̝3[yE՞8RV>}zqw8w ڣنEҵkWeUuh^?o1bfuA/h/$_ֵ;пȲxI/O, M_ie\SuYƦFY|%eǪʕS&tiEKɓ֭K['gq"{E ˺H׷%<~E}> J׬CS/}x2:rk e=@@ zo\2;`}۶e3DlQX z=уAL/> L(z~=lRE z=8r;h֪ |r \v3ݩH{j=Un=ٞ:bO:οSWncX{s=oOS o @ρ~@@CNvaShT4j0z:Át g9„َ4q#MH)LHS;T8?i̅4k#Qؑ-q ,u˜hr'Zd-[DVD+^Ia9r5hZJɌww |~K(nEo"y'dUԏ$|~￙" ssY"yDS}gk_iSM\%AyF^k9҅ONf=nՁe].Fџ Y%^'i͞4MXZ{ mӖ\:]{%kK#k,aDx.36e49΁t=ȢD/Éf/?gL?ϱn< \vRYs=[GұqܿeS ^ԭ,ʥ8ZqnEӘuV%@^DEEQ dɒdT.G+wވjSB)W\TZu8hbOa 5s͊pp6k3%=qoDƺn ރ~TT)ZrjfڔIrmi`OhKhswp<8:qYZCGOǟ|nK-$O:u —S?y,ڥը_r>)`>k7IfN[JXL3>=襹ynDq= E?UZUl쒍3$z_Gz㎆hƜ?vzJt&Ldeof{e˖MzmC9sK&/)-Q,@a/Nk\p"u7({tȩdaHuvuؙI|WtSߔQ{<:g|ۅ+df~KnwSF  {fw狼9і=&222M7ڠ#\oO%Kiٱf:=s1J}+@,{hzt4݊1KܿOQ4q,}YL#zN/ћ1m̨U?,{m۶;Wk1k6xPB"z[bTpU56x#o+M`da,Gܲm~:[oхȘTj#yN<@&w nU=vU DOWxO\\\ʹz\ِ#\O͚~e=v"-Z&Mp&QVi;np=B;S>7;ǟF/ >|9@\4N_88']34a$T)Y:~&u˯ Bsz/˦?`ISGt˃s6 z"3ݻ{ƍGe˖M]u~K.MTD *Vݛn^ֈ-׌.\k[N)Tf͘JsfN&EoĨ_ErMESRTi6rKԫ@ 㖱J?-['IϠ!#(wѻ/ hiCuwֈޱGmZ鱏N]¢7gX 3^)] u^8NYR*zge]8ݎM}ѳPN*w1*91g) ldZ7V̢7F8=^E/:*RybFLM1z:u1z׮5׫W$c z E@\d,ng&ޢˌo{JwfjyJYSgBT}<)sbn^OD*ڳ5#J5VJQ*J\ yprI\(\a.].3JU.]8!"gN%!I-NЙS*Im c*GD1BQ&Tñ#!fi8zPHocysqq:uPtt/88XZt"b~=[ʖ-K_6h@?r8j֬I}ѬgQUD:wHD!V.bncw7 ݻ-ZTZ +VHnn4,Y"ɾc,.rNq-Iť{qz*D,}!nN'9X\DXwF7VB&Mk׮&۳Tn]I{52n8ժUt<7.iJ*i--S.'OClD^ժU.ٸ=KDoGvzw([lhk4oޜ}ssO{JjDϚNIר~5oAnׇ֩C}=E!8ej zoj9wZ9~þFW ޿WXt2*z%Ku ,)z=ߘ襴v@-*z۷SHԨQCZ ,&z^C6kD[y[LN`y7vV{!ze$˗/͘cn҄WNNkv1~ٍKΫDN,/J=rfE/>.y2>aC}ըFBSݩD;WMֈ^/ ȑC {,æn\mc~6_z%. @gds}rvv5}*DA2qkOTT5h@f#Y$zI 븱cm9v i>}]jժeyVƗ ނ@׭!{կ_J*E+WOҴ)5+ÇQ B +*lQ@;J.7֌XV˗#+r<}rэ/ֽ̛Dcn܄ـMd'b$7rHi[t,sKe[sDʾ%TX1ڽk'Zzd˖MԔ-6aE7eAcysqq:uPttH]ppuEN+zmCРA,rqY]n-4} 5,v7Gk([,}m+c`TpaZzLxMŊuܪ-ʕyJ!_ضΝ'i F+W-XtRG}5˙ϟ?OXRWLnҮ[Su'6 6TtM^3xOK27\mw!ѳ}c]kڴt^v-I+׫WOZ`|GndAfؽ{7jܸRW M4]&g9v(M`'? H)^5~uoo:yB8rԤSu=խ[oW. Fƶ5'!3?g􉈱8LԖUjhI=0EҺb[.)=SՕpv--sSyHuTVƏt<)=mT٫Zt%gݎ M]rJ.MKg쭘$-iY?JCJ s̖}=: b z|A2>L"tqqqI+ix\٘͒YsnX*UAcix 5a֭2G_yy}eڝㅸ҇7,$;n͛7իk20<@3'0v>QVͣ.ƗZ3U_y9b,=[+Q:Ʋ3DϜ<- V6m /3-ETRr]:l"j*q#@􉞇zt kW5HOKHx{ߣϥlX}< ]EdG z=ؚq'!z=dYD6(z~>uAIDʥ Ǐ z=dѻveXAуAуAу@ z!z^"zY~˖.q\~}ž>OfK豤8)xnr!;ӱ#B3ToI&˗/q=v .B]YU= }߿OΔ@OYAݻaDEk.ThQ*R0uԑ҈{'e]ѢEޡC{ =totڵk{'r(zZgE 4%KRPPE븱c|&v=:J~4lU2o׎|Q<(riZ#zߵmCգQJ*ѐh%̛֮Ym]DJ9էRJʕ+ӧ4m$͊{aԨaCPZgFYJ2K!zK7c˞=;m+븥otxmu,iD[ڷNDϖMd'b$7rH)K2MQ5G߻[N8NŊݻvZ6>/YI2KU;s8\!z`Kmt07hgSE_v  0C-:u ]55lRX\\\N:-R,-y]tS?択߇B 2זfX{IXԷO*QHd޽z'.&+WKZ:kj_>~ٲeo[ѻ+cnjS,SW=N\Oѣ;ݎ5*2woӰaCEynݺ)<P9˗OпO.ɶN%WEV*ϟ6m\W4:OPP.\Hyydcq˖-[-~V"l,bESZXT;m1oӁA6+z,vkזqy.k׮%i3WzI ̗{$ek޽5nX+W&MP׮]5={~Ou֥ەd.$"cǛ7w;J&hʔɔ3gNI5)V  5k#SzuL8F$lj?]XƏt<(y9W"j\\iQU< a`yW> w.k2F']0 XO;ׯo_*^8TM5>cd-_qZڐK7=ZڈތieFak۶ޙ ]cqiӚV,_dݑá2VM:N.ASvK뭷^0z[Z ڳ[X85\;:yd -u,^L~8;.S˖dc W(iJDOM=FyW> DKn/z[|Eԟ:Ma֌4g4 lTxVf-f͚iPʕgL~k3jO'OgE]|<3Sǰqw]Mpx*Mwxɏvy dޞ[X~۶ic2 O`ⲭZ mܘ2ml(,\,n C8}yW> Do-z u<}{4\@=pܽʿݵ ѳ5YR֬qfGA zD h8уA-;>RK8уAYEr AEb A1Eʕ )sJgNA zX]Du=xӆiUJ@FESZu=ؘ蹺G z=ؚq'!zi zn=@lQ7ž>Of`]==>W~hM2q/_lYX@?~gdꓐ@OtM^Ўt@:!z6 zZgӧ^}{Ǝ͒XF-\}ۛ_V8у캵DMDYq>5lH*TbiΆ5jd)K}zKGt;.֨܉MÆ  uk&ll?}p-J9r䠊+[DoٚaԵkW2]˙3tٛsF!姮2r/SLPsKq|<oΝ'\2l1gSHM=4V-ꆱ|sDg^z҂ޠ=pRr戞ݻQƍrUhҤI{[.nN.^H3zysPر4a,0p ?"ΆcsGYYXr8^J*̳t=Kꡩa*hW]1c~M6+W,Ow@H%@1RW\ҥK&T^8ʞ=;hօ:$e#.6VGDM@ie }&*U|tù;[Wp ˳98YRu7h}oo֭Sǎ"!攵crٽ"ǭ]%]W~ʖ-}ґzhSͩ *ѻ )/b%.z۷nժٴx,ћ0nI[Ew9բ-Nh}?Lxi^ =^w\p~XO g}&]y])իׯ_Oze{iTY:&zPΜ>EŋS˖-,%gLpL#5R3Vͩ)m9@, -77ukmJlQћ1m̨55g6iI9*cAƭ evK 뭷^)z[Z ڳ[ԸE N*j˚19γ9;C+Wtӭ[>L*̟?.\N_6h`vY=%o&Ec9ף*zґzh[Rͩ択v@D)4kKҋQCvtB)];tRԬiSʓ')R J}zZ̚1]#z}֥s' {wwmEeŋD̛/%豜-ZD=4ޅjժ)-E4w!C/C\IDx 7N>1b9OZ;u$"5 @ޖǮq}V˖x5k9HM=4V-ꆩ|sYM~a ժY|۽3_:+7ZUxɿM)/dүۙS'E85o}GԶMk溁nAJZ8>6c-zzO? ˃j׮Em۶ш^ߗ7+7{E 3mSlov4UY3Ҝ(oQ}-ٍf͚i3g&E~hk3jO"^RD6&z[|}= z&z~63: z(z z=@ zY]b_'3s˿ a قEl%. E/0_ E g'!!fM bxu( Bw."\W ?sRyE[<},S:uhRwp%ϗ> VZfeVk)Eu=xӆiUJw׭%7m$z]zEKtAr*WLjղ;~jԨxʗ/O#F WXac뢧>ܻ{G}DTX1ݻRקOo*XףGwk0Ms'6 6J,!quM4Q )_|̀e$ ewlcyc&>dϝ3[}X:uUcr)51cL2IfHzL'wԿ_?|Nl1xgFʕtqWlXeҷ߶.p| !҃rٲe<ǗU1vhgTZoҋ/&svSUúy}3ϊ6_}!碇)zi_06^[n%n͊ΟEW>G)WOy#ΣD*dh˄*TZjҫWO{Qzc!jޯ+[CJQ=hߤIڈheT}\dDʀs3=+U(K/ۿw^+W.߶bF l,⋁esBPPU^hV祗s?oI\ ?o) FUs%F=?oԨg_Bѣ'>a$mqKn$G!=^=Ԅ!P2M0^豠&|~!$㉞E.EpV) _ JHcViCC$AU+-ێǂ!^BуL+WV>dyS!aڛ,y۱m EB!=Gу=sz&*t)z-)I[CXuK! )zqq݊dyf*z9C r"T޽zL7v:f!z_ y:u^RqrVuay֋(Y̞9*ztP+f7삳[etlYJҥeVC$CvRp!c`쳒;#:BޤB!$իnEV"O)g1|ԨY-[,/P[޶Do:V=ņl fHD z͚T5gLټilB 3hwLR]dƴe6ҥKYEǂ|Κ1MV\!}|j'z.`/_*3-BR77tAGv#8p(=Pћ1}{BF0ߏٳ^ԣ<՝ډ$M?Ug=^mGk,i=,7-1) z[w[\^jBh_zE>m Ej];d/w2:*JE%$X>HD"#",.S p&*pӑ zZ~>=eDtIۣA =}R:c ;-]m0Լ9]ޒ urp7y-](ɢYC&MRvKO?Yjk!$5imG$@p011%2DϘ} O2矩C p [<}򄵍^ 'ʢ $hny&3{][th5)R街k5yf.=ZFڮ4~ڴA&O(-zKu&6z~N~LqY)B!ڱGI7յ/DfbA mfAvٺ_= zJU&/\WΟEEKŵ7l Qv8zëgn-k2"q=̀ j,XHDzݾۦ)\X /U>a'zkhXlY(VBR|'zGܹtyLt̛;^rNv"Z37o"/[Zܭ[WKaSL[nmy.xǮ;n:;߹܈uA+m"/{uvӧiތcpq\mJl]貏g:\CG}"d+9IǮOJwP>Hr3q=p98=wkv?Oן3gNj/ \,Uʆs8 Μ9SS/zme񯩓'V6U]ѻxgС*wǏ m,d٭,9b**3mԬYS6m(gτ !kժ)۷mm^[Wc[9c@rd>tN`F^ڴi-OJZ88?AKe8)SGzLt o&:\CG<=D/)3n_|ߍ%?@-C Vq2"ޞ>ggl U ˗/oGD.)wIiΜ9AnR*zei?S&VN H"ˏQ!]ѳ 3RkNs=Qf# N4q5 )hNvmUSvJ78(Ⱥ,h^]H7ꫯʄ P0mH$ m\'3s yz̈{f;ax7x|6!zZe{i2SE￿{E{"lYb,;K̙I-TvFn-\@~ikmJ\탨 uhw2$z'N;JѢEqF^ zewkم<=Tծ]K_ "6GD N>e=0+z<fDS=3uv><˿lw,1Mr1NFb |LLLމޯ;nVhUi^O?a6\)TAldf On6?FŶ5Fi$UٹQ"rbm,YX+h˅6a(ث>YemݢU~Ou=O΁*QO=vx7g9maqvͶJgܢ7zvo(=f:!W~&ic{W=]e~ʨC)T{2w<@;|S`*5VӺ_OaF<}h7NhkΪNw&F}>g/o?FQ%V21%E,3^bt4jȫgR{R|+z|:l=/_}SҨaDN@mܹs:fHKw2$%2D P6oܠÆY&LG{,7>EfS|(z3gVR0(zIΔѻy#PV6mX/>/ۮGޒG#K/(AKU7Sѻmlٸ~NW#1w:eE$;crAѣ11e(ѻ.[;KEG!=&= @ѣBE)-޵k'`KߏQ!$gm:iڱ%2D^y3d:4EG!Igs2l =}J &&kWZ挜 =m%dO[9~=tHZb'>=Un0RLemji>)v*=EBI1/FI>Odj ('S&*ӦӔ9fsefTZ[` \ ^yE{߂BBO06m*U؉mm=Bqݻw 012NkD3|,͉m-“XgWUݮ Xd-!B3DoeE/.OEs>b 9$?} D96[ҥK,SF̞7vvoU8-[H#)SZfNf=D;vh/ ;EB!YEXT+7K/m/m[dmNE;w( jZD]DQ}2s4ٸ~xMɿ/=kYRC#BELg9szUlE3^oHQu|dʔkуUK/c@ s9s攅YnW/B17-~#l !)\+&&*mLK}"zWI[F%EVe[;oB2DG=;euKzݚsgϚM/KӢ=Z,Yo!$g߳k .QQSIR|NQ$DFDX<&ܧ@2ܳ@Xhz:Q{0; ޻Ge-[% Tv}>GI3c w 8C_01hdH/2 /_xafHI+VT̛!d޻mHR ~Z*E.o8k/_f#уÂyu4#ziy %J֬Y)zt)zhG*&&&&߉;w8]-΢襔}1)]gB(zLLiWÔf۷Oʕ+!CD/`DgHуml޸}+yLׄ Do}YuCC޽Vtr4 _]aZOukVY$/2CޏS& ٲfvY8s8!$sDfbI )PJf _rcȈpӢgoKKsR!=&+zsR~}:u={,7ÿfΘJѣBE)=}7%>-cccdtE$׮^/B}Yɞ=xdڀ/TI>cT>|~9+=ztOOH?~ԨQC/.gϞuZ߿_5k&?۲m6LLvwxihEzRB9c=rX="K/iANk]w9b|ܢM~̜LIa_}@f͚%-[+WCIٲe3gΈ,YRҝF޽eY|/z z}?L*U=SCu.#fהCRsL(z(`Jy1bݲJӦMY31ىxDEm \EKۢWD Y|mЍc:H"E}vUJ*%M&<׷|GZ&Mh=V9C.OJmd`xSj4رc,ݙDR[~Wuk[l_(ǎQ́6l׎]g%"Qhj^zbhĊB]FYʱK.=+VoawN(E;4lrw =|:nj YfM蹻/z~GRR F\噽n3^Zϑ'm[XBA%88%;ݺyCb,e@Ǻ2ruVΦq 6IwR9 fEdHKd&&_ލl޸A.Ç xMXnl|.zK{tfE;+q?|3011F0:BTDMˣ>e&z4ICGѣ~0 &>1S7Sѻmlٸ~i_uAѣQ5kVkյh35!=& zUhr(z=B11rUI =!P҂]fq t(EB(z&ȮY"31HU7>x@̞!D$gq97)EDoUz=ge=BH\ݽC $OiĔwUӜ3 xq+ǏAW`VP.Պ^X)(QW\t"OEX֧AvF#`u"q,@}2s4ٸ~xM)]U~~,Z0Oּ8de=B!sClΜ9dEY 4cڏMUgTݽS߯m5NEo֪ͪeKILVnwqU)zBypzR 3=`+z4O2CƎNT,yer!$sC{w>bbFw2.߾m))z,ל5kVm߇(!QS!Kb#,x1G-!>ukΝ=k6=3͋5jժ`\ٳkJݬ3͝3KEoڏStH;wyȐ/G#q,:K9`)\$6&ƧDGGb"#IxLOe-w8zG/µoN/*// 6x T:ul/<}RHaˇ:iK/H#1;ġ/|4`2$/[˙1q 4!$upT׆_Gyf~=!$IЎULLLL?#wq<&:Z͝[ X/1=!ĔCSٲo>)Wu\DU>ukVYNIѣBҹ /n|(zݻwJpp>"#(z=BI>;LL>u>i$ P TXnlNѣBE)-cܹԯ__Nb}ˍ3z-z,EB(zLL)*zߔ[׶.ӽ=xE/)㺸t7l^ ˗zBNO=;x`? ==iQ@]vOJ UVۿ4kLqye۶m,ٙD0Ybb}/z z= ?q?Lѣ=p0b#r9ޟa_}@8 ?;vL>,SCr#:tHʖ-۝9sFdɒgLL6w]-{V勢EW3gN9#GKw^RN?&G<;g(zO3cX~1ۘowޑ#Fm7p@iڴ)Kw&&;ѻ#oӧB,/Gѳ} ۿ/X}Yءu9Fαtt hS_d.ߺgɑ#4lP~ڹC֩#yΝuyfvΘ>M*UJ4yMCUt}壏>.I'ډ_r%[m#C貎{QXQ=7"WqܩLju7]"ݺu{[|.x}]\;a*o͵;XtIy<}&ܛ*zΞuZHݾ}[N>-,m۶Z a\0޽! ˗xGRVMپmrݺ=ٳT} ٴq޿ѣj˛qggѬ.zOtZH"y*U .XGFFrGy.qlD̝94vw#v 6mGD93 znQcYvmu\ꫯʄ 5ƒGuE}Y-?_+3g zD( )oDv]vJL7Yu^^*۷oWFDϨE*^ebb[kWDX>Efi=1E/}"_| ^*`.X O?unt- խm:u(EƍitX*ڵkoqG<3a <5"}XKadO9=ZN:Jӱԛ.ψf5D31]<^b>7c;?Eﲌ1ܥ =nma\2eXzv舁XKZ~*Ft~9* Q-[62yFx^{VFoqQsյ̠ uTY*YDz,YDyl#CxF4?_E=Zb좩InT;3WHzo,oƱ~nD)ze="{x::tcbbыuKD&Dѣ%cavK(׮ u}>Ǐ5kjU]7ސfMeڦmX^E mйh7T9+z5:gBm`l۲E ~2 UzzD<'o=Zכ#k4j_tHe͚U*U(K/[oFEf\za*THʕ.]  {6mף>$QF=w[CU)qIbŊ*؉'*֕.]Z{:m{~GWCl^{ʫ ?d^y<׭sћ1c*nx5h h0`r c͛Kpp0Kv&&Cc6^{Xn|3[p߃QҬ5P;wn*:`ؽ{ [bד'z'zĔLwDGF(7n6Ç xM :Tc JN=^J1glVE*`4$m޸GDfba􂨈p+6ױ^Qxof=^_Q~{񀢩hzc|oz=Iۢ7Sѻmlٸ~6_uaVR=^c=Y]`rYZ#tE6.?P Eɝ]Wyshg3#zQ(zBcbzГ(z=B11ѻvDLsyQ=UF};B HݲԫJEo5ڠG!^} kvLL>=x,9gȟvD"'g'zyʸ?$Z pwB`.ύwȰ!$)-XW]jq3r&PLyGC+0+FXXgfDն֫Lڊs7"}%c>ߍ~}zK=!DհƍQ&N+SLTM3)sf͐%"/ژgw=YEo¸*uBNXEMz&vmym@?mȑ]>xGV+-[% Vs ڳ*zvͪV[:'z-j{ .$-[B5wޑ3_:;UG$1ի*zNPћ2yu&jڏSDo$Y_mIu Qу _Y~޼ѩ5kԪUSsÂLG"ׯ|̙5G!TE=1&DoE:'h.{;C6mtլ3gU+WXnW/e43Wxqiެn !Do>i?N\9sabV=`x)'ZQ۸ޔm޴A_C уa3#zk[oio:/ɬ)zBIG'w"hh6}ڏRHaY0Af*GԪְS^$,SL5D/[R~}h~vnB#Snh[GBRVLLJ0`-[*THVVX b`\}=ZFFo ټ:x`쾍̞9]ڷkk'z+3gLdW`О=BHk3z${^fAٳY"XiVϛbձc3c]^.j/_|Ҫ;RhQD/xn퐁 wi)XEUH8(QB%2g kK޼yt}ree.ѳٵCRDGGEIlLO&I9EEF$apDo[p= qBCOv=_@BRLL>0̂˗-^ۙ1(z=BHᨮ |%2Di3 " |&z%6&G#sC;"T1111Nܹsh7woEoݚUɋQ!=&&$t̖}Ir:D zQ!$I7󾬺eb!Jw]+AaImGEFP(z|w/,|&z| ((H]׿x6=!P҂:ΝJe)x9c*EG˖.11eTѻ'o߲vyll̘c uѻw]&L/?ۛ#GyJ֭k'%mgrx6xe 5smI@yG^kL!7oZ W_Kե_~r-6gϞŋ;6߿_5ko-۶mcϔD0Ybb}/zת|QҮuM֩QT)i5,RW>#HTO8N++WG}TF]ء+VTվ};? vwxb~κ|޼-h7sCz#FX5c=fw>㘸… <ʈr,]c]&u֖.{싼gwϞ=s:c{Oq,s);u{+T 1h{ݤtҚTEݳ Ӄ蝳H4oҤI h6a0-Ƕg۴ !zm)S'OߐRwEi=-@!Æ+dO UԌeՓSX FCX?ٳg 2X=D 9?ymڴW^yE.^8h^]Or"ڵU Hlѳ](" fͪ"gO#: Q>D=eAf~کUGb9utRޒ_о2wCϥk׮>BP eĔD￿{E{Iѣy Ty,Qº Uk|5L: e3C ]X׶U(č%zh#ةcG)Z4nH@=DSz-xksu̅ hTĨb],*]cMɻI8uv]1ܥM4rkKllBmΝRJ}9h׮]v۠#c=SF_oUKhpE/*lP=dOȚիE YYdC5Ֆ}%vWHQJl٬U{ƶX#7m[h6Wo=!P(z"zSL*ۓ!'._y%D﫯ie}?L4b!&NG}_l7lm,T\Ig ҵvPCޫWO2y|@]&>l+VT)ٳخSǎҸqDfcһL݈n'[%KF_ܩ<,}GA6#zٳgWAڰ 6@xȫ<}gw{O!=^ER%K\!BB oUuR((#/P-Q 5id_s%ŋMІ3Ms2d|؎Lɻm&DB$ 8vvv=z%f6fly6?Jm=v]BEdу̡9rhFҥmО>T[*̍Xs} [D ժg*ˮ 2e$ǎ|c28k5*F;1W2b^ɻM]#:zM9tPEN-TIΎa&f'׈6 ꙽Ǯ {BQ$z0!GUlh߄j}`UG٠A)TPBֈT{O?V.駵-K/il^c #GжW8 mPpjZ}f͛5;wvp茂cU\mo$n(ѣ|"o !Y=3Lޝo3yvw͎DZʕ+'c _b}3BDtb=ys݊<{zlk|-[k.xs !GKC$X{.]Fx~(4[nb[ؾM @v,QB„{(!c޴O¶8~ѢEt=ك4?2T FXE.ԶXzf~{ʳkvi±pW^yk3s_)*)Ϟ'CA8G=vx{ !GKq#BѣQEBEPEBEP1\y/!PEB!=EB!=!BEG!EG!B!GR]K,"B(z$-`G[J߿/P qu7BQ\(ݻ)ȯRRI˖-~yz)  }"Bѣ=D̤;w`s{Nvܑ~9+=ztɱ/3<#ƍu?vnjBE>d_s3kNiذ.]Z 9!իWOVsGkz@yG%&:cGHBET`Jb֬9FΰSw/_^Ryw[n-Ç !EϹ 1)zH˗.I…e%KȑCz! gΜҹS'=^٥B N͛7׮:,[$A5s̙RMϋ*uH޼yu;wvz\m犒%Kʬ3nϥAA#Bѣ襬LX+Sm,/;o~}j$#Zj샶tjՔ۶9^[Wڶ}ϺuM.qء/_TDoС*w8﶑ʕ+>/п:"J\mؘhݽ>G)Q8!P Vk˖E A~q=B a1 [ "2ev?3-U^ݱ]m *v[~lٲBE/~j`ĥDo}Uu 駟֪PC Is&zNLPjJaVl9ǤSǎRhQiܸlڸ]m eľQn#r!EϹ}3|5I5 5edN$zyjsY̊=[˗\Xm/&6A#Bѣ9=[w!+'U6 vmnO=x&:J**09Dcr!T-z'5u B(z$dVJ(!+/J&Gҳg)Xɓ~͚{iRN“7o^\=:tx7uT=T_xvpw^La @nװaCR_B[2C{@UX׽z>% `FpW,OP edD!7z3ߤIځ]gt@ub TB4"z֬T3:oʨ%0`)WjX A'W=[Z'C'lרQQ7n_DPmKrZv gE HDо*RD۴imʵ=7Au+ /_/Y*ݹq^6F ޡjS5Ѧp2@.I!=D/>>a$mqKK4DsmbJZ B!GҒ#̙-ժUpA?6EF^BEPR/[ @)ړO&XeL&B(z$0v:,!BѣB!GB!G(zB!B(z=!B(z=B!EB!=EB!=DjlD_2Mde_ B!GRAVKxɺ5B!=EQ:ܽwS_eK|2?xBERCLs)ѻw]&L/?,XPr!OT"ݺuM3_˗ThBNOQ:x` )=B4Tu 2H/cyꩧo$ٺg9zr/=ɐRzdCrlC!GR 4!7IJ'˟?[6M9 ;q9|H~9{&UKBH=ePbR̈^ vyyޯȻ﶑0*XQz U趑T!P(_\֭YgLu62ԁ Q#K`jUfЮH"q`v ZYYU@mNPEOVW.>!Z@ء(^ܣ術FK,Ŋ+J7pz B iڵkIrt_ۙ+SоupiZk{Pcșټ㼹rmN@/_>*UL9P!$}~"E/#^||H9LHq#bСedK%PRq 4BE/Ȟz*BS0 H'BQ!B(z=B!P(z=B!PEB!=B#BEP!BѣB!P(zBQ2]KCq!B(z$>ҿ'gn*><BEvCw]eC)zwssaBQ2!Zg&ݹsǔ݈.&^ ,(9r'TnݺDlڸQ>$G}Qz.jՔ۶꺗<3F_DGɌܞڴi-\p^WjcDS>+W$S';8^PY[-ZMl]*b.zū؋zi J "xU $aȚ"{Nf'j!vId$d<9gf{~眉'>}{p zWveAװnΜewl=u!iժ=;v4Az=D{ >z,.]]O=f}vr:??![訨Qfg^gGOpGkAR{s8AϩX&N ={:D z[{ +Jkr.+i/_|n9ge=ϝ=#F]c 64\ArЛ:Z+gz_{Vfysgk]Fz@#ȡ[oޔwߑoRp>MRS$2,Y~gasr}=ޟߙh)iO޻Z z5;v[dԩ> zΞS'OHjJr z*A締ŠԼsۖ-#Gnݺʍ7(=l1֠ΠwuI>w!Aĺ^A~Kҽ{7eذa~sw{FZI-m\zUan񦍖_l.ӨzO53 zH/7~ay駽 zڛ dz:+Q{P|_ZZG9?-\,[y zzyZO 'LX9ysٷwG ^۽kp _CZn-QQU"#4Ͳ\ۧk/.*:=J{кtv}qڷo'GuZG+^VֳW^MУ1z KA4ps[.=q4gx6$'y+Jܭsy=^A6cG)]v,{>F @#UzSٜQk kz:czPkVv\_[oaG#sX|zigNTYk׮:xklsyg/1m۶&4lA*JK xRZRb.l5pTsyK˭jU+)<9tt89nG2 a_=nfZ79ߩS'Y`A'x\$""w[lu{Ǝc׀'Q,YV-յVQČ,򬬧f}> 7'<@#ɎP?u2NӦΈ0AOioVk鹆㛠7l^_}Rىh{RZ޸YԺc(.A@mo\{c6֍/U˗QOXj%AWAm/\ARy5k z|BkLde=FR՚P]T&SjzA/66V+5@1AA1:p&Fޢswc|}HXXG&. zοy=s/G@Ыۥѣ ]v#G|'N4ZzЛ6mtMӫMx 8P^xZD]'4ޥFx1cƘFJ‡nv]աCy]wo{().o:=փ?^=kզ?&ڷ{rie~ͶX?Ş{[Âƽ.wqdg{|hyqQaz֬iz[]m D5IEA]weG?w{S5W1qAYB?ʄ[Vmǟo<+xq$""hٺes|X`Ac,Y&Yi3Uo*ϓ xfef̌+[-]b4][Ǘ?[֭ 8l{Uk }\Fk>s]d=&ma3׫jNs裏]wЭ[$%9ɼ GUA4 ޚvO~"k꡵CΧV[faa;`#@& mog!'-fe_ѣ_4Gk׶q|CuΟ0a9NdG=7d^to*ss+D)Xzh{͛[mt5qyAMOݵXt?N63&m?kК۴:Dۿ_?ٴqy>k֜'Kt޽j_Wsuo %:i3ÆUmC}k ľ[Nkle֚HZj֬ʵ/٦`l#/ˆ^gAOx]uz)IC͵9 z zo{uj ziԬAΕlg|lٸn9u\W(_rs=ցudlY_O%P>h^5<9r(YB9{*OxCwzԔdJINX/ə' vb< \KWv ?g~+Tbem^:++K32.)$&W|y9:`q0^/#7;*Wg1̝=S͟[#B]n*ٴ~uILT_Hc2:0ϗ3=R:ǚě-ě"dn%]_bZ $JA~o+d˅32xh{RZÉDEc9|,pS: @A=@hAI`FZIENDB`geany-1.23.1+dfsg/doc/images/pref_dialog_gen_misc.png0000644000175000017500000012370712146146075022727 0ustar hyperairhyperairPNG  IHDRzaֻTsBIT|dtEXtSoftwaregnome-screenshot>YIDATxxׇ -Ao?^RHF qn$8 sL7l> ;vνwwޜ{~m.^ ̣={vSTT^x^xᕴ^p{&v$ɓ'+zO Kz͟o {{C!$}vEژ<ϟ$ν{?B$4ٳ {4 +5k֤| S~JoxTL5k&ޠ/該'_-[F:t޽{_ 瓿?]p% E4 WTRDD,7WZOe6mJ1}WtIN:oLa4w c997i҄N?&V^E 4bEg}FG۴i#5K*V.]v킶x/h*zΝ[ȑ#ey2VWXϏN8AʕΝ;Sxx8Ӈ*UD={>@o߾Ee˖5yLq{u)Sرcek׮fN<)DFFZ<'|BE1s1c|ڵkӿ+|u 堠>91p~/Ծ}{y?,תU+- 8@\ޣ{C1"O_H ٮJׯeyou2"Gv0_]ۖ_:]ZztO B=.'bfjT2?ٝ :T9^JǏ{n2=kz%K.]ЁtQ98N~tQjr?s4ѻA=J͚53u...T~}%KJ[J1xulpTR%6m^~}VZ~zcF5EܹMaa◹} ;BVӳt0p?Q/^XMzӧh8'=|D H=@D@D@D >ݨ j1؁Z*|;āŁZu6 m9BquR<ʁv 8Pc#8Αz#4ޑz+H}Mt4p# R<ّLq_MuitG0zQDg9~MR<׉Dsh¬N4{Qm3[L8Ki2gZwgZL L +irgZ™V+t&U.+)׋΅,z8օf?F .ӸE~?7ͼ_W1xIRx2Ѽ|B/ѼxI/|Ëe!3Λ0zuzP˘' / /+.^7gϜ"Outw;-D 麍x$0Wn=ur;MZ/Q[P (8((IvƇsRB+HDoZDܽOSC وƩhтkGhdggG9sN;74˔)#cO*^8OJ*E6j}0v|kp4rMYfDk׮7o^J&~}ޕS&GG^i,z> \y "u*#Qreu#1|>uIkw_V/w"=H6R^i۶mD%vڴo^:v(5_t颉P)"iF:}4ѝJ,ޠAVZ{n:r䰌 ܹ&z|)q0M\]]i]t19b"ow҅/SMQ\kw{QG}DF̜֩3_\ͺwҩsW7 9lu]REOwү z3#zҥ`M8 7FCXX2eD7ӍcD E#ZmH>J*#ʔ1իW r9tb˗dǏǟ]s >hu]R/D;4BzW|ym\=wPŜ;zXֱ ?cxk&R1K.]8gݻQ u۷ jUb K\e3vR[}rԩs7m= ^Um~w˛ԥٲQKڶ WP>H%kVj7t=v]~rL9$Rh/>ln]N](OQ4Trzmk=d}tDR;@n-g/ݔ2ɗ??ɛO~R6\,zjܾI9n($5y](Otiw]y*,d K!N7;ÔER1Ȟ=;R9K\eD)m@`;X~Wf#A[v,؅<&c37ne //.SEސCE־Tz D)uYsTFM ܲCҬE=8_겹uN+\$_KW&Y47xS"mKԝ:Pz (%^Ժm;lE/^܉==eFJ/_.Z,*1z"k\UE2F۽!{^xuG%R7_>jU 4iJJW%IeirRezUP10| : ~msoɺC'olFW;D z XV KSO$vڶ?[:>hgYqS3\Zg}zM,Mg<'/&Z"ٸ/DJ|YA]mbzY2ҦM+ݜ^v yk׵ e||s-3I n-ܒ֝u?K2o߼}e.EKDD-tDw\7Ncku~o+ٳgӢB/o3|o7xrs舞ZG,zߕL<זme)??F.lśᗍLr՝ ᗵ7iJ~VpC't7m;Gg(FތynR)uuq=fwkyhmkn}:v^^jmKP)q)~l.Z !z?OuCYx,-9;.FK׉cGu^:e2"xޗ7TZ G<7l޺=S0g*zuâwz$]u_ Ֆmz nOJ!ڶaUv;Oʙ+n۞.߼'ێH]{"$>)MM6׎Q}BCD֬^% cxJ-ZoVZu=q~3d;-[V c-v'u=w]q$0"zor-D F^b=z'Q*UR"2/s% <tLptt&''gKYWp .+ET~wD/d$z*t%s&ݾu#ʍktSUr ]Wz(i1+̥ eyspQ2r\ƙS'5K5/1>nGsDoҀḲ.ǣU#SG!0_*0! ƢϛKi@k]V Z {R3i($V_/p6ʞ=;}mKEk>}zѽ̑d,={6I#ǎ-׺w+W.裏H´houݚ=î۽wF+NZdѸeHN%̂ys)WΜ .z\~!!18~ҤITe͚*W Rxw$z~KW%67_ Slٴt|=e,˝m`6 -z܍ܰa۾[YRy'?^a(zE.mڴ4e= SE/xy- &-D3CY3}s ^~23gծSa'cTH.T qw[O^[1wT^=-x9ޭ,Yp9|& ?]tH#GsAu|1խ+1͚*m梶y~'|BsfϢǏڔ_=e@LExy2f%}ըUP\VwѦyFf*=gG&z|/K}{vjc9|ʕߗ.QOiy .z\Weʔy>[=-g^ ==d1s[ҝ>me/_=}*cԱE4Xbm޴IֵnՊΟ;+ѽE3^'/<&%#y||gipqW)Sf@=?oOK"g֫2gO6fhO+VԶ=XfL.c *Q8ĠscI[x1͞5Sߧ4۷ou(i(QN"dɋz-UT_ԩ#˫WUcmܸ1ɓ2zK|EwѲpʰE>y|"Ϻ ;yB_vUo<~#[g ;s]ǂǢi, $zz23dH/{X4 >tPdsY6;t bhK=~ q"z| z=$GcAуAE/@-"_=腟9EnkTq;DH׺d  zHPn@2.+(DMX@?Kw/2zmT|D/ו'Uƍ.O|5>@@] K˗d#Zr%EEEь zzy~,cy)D/G̽]Fu!;;;ڵk.(SL5kVJ.UT6m܈] 4pw݇ρgeI|tҔ9sfjKzHR#^25'z?ڵkSiٲe b?__ׯ]SP٥'}R0\4j=+VL$6_}@D$Eo1rgϞAI$oѢȆ<{e_[DqNZAR$ B|[|/UTt$y==у%Icysqq5j|H^vDԗ-}rӧeG6ϝ7o^J&\eu2cxlqq٦ԓ8}./~?g췮R5w޸hw\\ D@ zIVXW.5jD1]r%FO'qMZ5iY^=9Nq6ؿV*_ԱcjРD ƐNo(N dɒfӓӧǥz=3u\reit):zpYl9 xϟ;+˼/wʕK^2ezÝuM6mD aƪ-MdD\ә3m.㼲<7e km|ݼKы6mWo;+zmk:L6-nA=O"z!B Eٲ)}}R_W{PW%zcG y!2=߄MիlmsP3omEionn>&&*5?~&2w91+;K׮]K_ӦNn_N?K,Zք%6ein8/|&[T6\TJ;pkmZOR~؈v}͝]!2^<~4cd=`8UmL˗O꯿MM(3j^˖-MUg*zd QcmsڹC/u}fF?~u=rSM,MLFs8e`i K;.\^F_ԩ[ bSǨC\*zmД'#p]-[T4r=aqݦՓmq-zw=ы۾uM]w6^LgE=yC"##c,pe=}V9Neߔɓ}7o&n]o$,z987vhAf݉XQ<NX),_AWNqYEw_虋l\"VEkբ͚j 66oOVYg ~?ԞK HExGXΟ=#z5Ô豔L5o Z׭wYRE3Yv& >n&zn9Yb+z[6o>x@=0ICMA@=O=6iq*z,baD#:MAD/Ңys*S4u]#>g'o,Č!"Z,{4ZU߻gkݷ1Aы&?v:o'3xV[5d&س̠T.EBҷ-[ȃ@Mo`P.+!zHRV=ßCAыy{!z=$3 C zA zA zAމ{Փnq zD.z\W~>4z/V7zׯAq%Y{EEEь z@r-"_/zz.{-\jԨAs_,PPD+zk]ÍX\W-qD|ctG}fp@{˳ыNbWJ) QDu#z:E_zDqUG=|kJ:޿}2L>=ۻ'ƍe7ml_j0?-ZfJM~#mU=^%uTlڶu[:[7{nT@~ʗ/uEi͖^ݺ-[6+@?if޼y)M4Txqr[1ֺÔt)R5kJ3gk9bG/Z]4y{]絴\0\C c BolM:5&cƌԳG9?J]mguYAOFA zoqUi.\&O E}YY>y8+Vr%f L2n" |Κ5kҖ͛|N;?שSG*WQ;P vzYhذa1|1Gәӧ19\]Оݻcr3͐!|,cMV,uϞ5>Dcǎz (RZj];I=9m`РTBcG^,e0mx^0O(89 G8zdX!Δ)T)..6ݮzZ> ۰3vDDիWDoaEO#cƌB jV,w}ڵ$J0mTndeɒE#z||ڴi-F#lAQ^3L^gvޝO|D +URE'[ѳkmRmh]f鼖+Y,LYOJZlԖ|n[>sh@hJ^2iS&ʌZ=/uq< ʞ=|X!;6u꘽ɨjScb˺CĩoA1?P>4sҥK|=eeKʘ)fJ a8_܅fL#7;cDl~s,G}D^&lK ǰRvÐ֩-m̡]y)D/?/'ÕyfÂ]D9G qrY=jӊensF7KT|91z7c[D9{?dx}Zh??_cf :=q=Xӧȳ<#GZduh~lȣC'd/z^"pOOC1m͜>|o",\<&gqwuڏp8$$X[7nX27j&óxLNB,^n &zݱmɈ ԶMkʓ;7իWV\@ =O!z~>qm`u2ۨ#D/[l4mdclؐʗ/ON}f1~=V.wd?Qy 48ي޽ȈI\կWO}ԩcG*P ?KJ(N}^k IFV-Ywr]xXeM_'q%Y{EEEь zDTDuz^/^%z> P5(w2ӹBԿ?|@3i^xkRN䑍Iw zɠћb?_iח*UDK/;cG˗.⃧pTU\bKqZCZFZwn߂%ћ8~.H5˙3'Cۘ*za'OбGh/ķ)nKgSG7n,]~C>Xd["YfN:4Py҅lgW@СhC֕ 9Ϗ={f}]\V GwMi>Txqr[1Qo"EPfM)s̔/_>9bGʉqE͕;C c ".dIx2fH={RJQ``cՕJԩl2mOmL=ޯ\={vjԨQ詥7@ z,zׯ]Νb…iIoݰEGq#K=wщD2dH/5KX+GyV=k&9|Ǝ#?EAdQC<\}2| h5.y$z~"wؽ[7Dvp?1Ux0ck׮L zx= זWZinlW'ptoE`8jujuYnZci-">|{<wi2 ˀ#Ù2esɚhkRT޹0=Om۷INZʟ4)z^%zcG -z*O?1cFSc-zugb9sٟSC=w74葞mX WWRt۩R!7ay6q,Gsey= ^2F]Hw 꽹ڹC92FͼA~6ߠnӓzQ>˖.o3u6|X+GyEW9Z*裏d*Oq)zueMlRmcD? EoKD/?/'Õ^+<o„S}xp66nI7˝sBCB>ٴMƏ( \<=6hyoFxrVǥYf}nQ.[7oM5M'p L{_h :8/ewS\峖TZuuck@<^SVpY%] S~dČih)cUFE˗1G<{_.>ebڴihѢ2ێo7WB {w#mn]{c8XLj٢ȑCų" mi1٣<78u<0W\2࿠]k0>FO9ͳ>ZN߾}d]VZ.>@DE%鈂7p@™awǓF*F_oz5>@ V/Y,)E nm,B>nSq%Y{EEEь zIwgVך5.Զm[0 W*UDCCQ$=TJ,"־];ʛ7/ɝoۆD򾭲.o<[޺u+dQ֭իQ,Y$]N39G^xaۻGuȑRҥ)sԴ7I˿ji[|GK*s&s۷ue@B޽{FZ}y :u>͛kmTV- ޷G]5o̢,YM7*ۼhɲћb?_]iПխKmSaTr8bŊz3Ip>|6.śU=l ٳSĝۉ>b7^q1ʐ!~D\ԩicm+8R}=[o %͜)^r7q]Ǒ<{e_=cl cG)_|cTRSć;.#:QD}&o嫯)',xw=D#zw,pRxݎm[XTcu͜m mZKWozui d)z:E_zEjԨ!K{zc4 oͰqg,ݻuDvEig-'gΜF֬Y9uqG"Ecۿ]̖-H={۬jeR|yj߾ҧO/ind1 .Լq~ ,y0ܮ]0eӡC3yj=>B ъΉ>b7g)[ۂ-(R5kTn#s-ҕw-oKmNeQԸqcܬxW;w.hDō7чS=/豰er2ۨ#(mڴwDOsݻvMD!Q$u؁4hBÆ cmXKsf͚ef寢s1nF_\Y3z49}9L۶n1/J& ?wVO8.]rnZUʔ)#]&ߏNTڹW 4*V p 㹋VRO|Lz亭ՃSس{WMYJֶ`u1{L:r;FՋ~$Ulז'G*hg5,zI_x^fdO`x^V1zMi"c􂔿2תw=s${JQ#ir'M8AAGr!_<΢wnጼАYQ5]S+YK+2"Bޟ9sZ 痣',|VPxi4axlڸQֵmFn?b(PyGdʔIn]3f\W Gx5ѳX@9 KTMIǖ`u˛a_HYlWoyis)]tYы=֊_y䑿F9{oDg~mK&ȓ'7k*z},"W}clY/%JЂ%ۮW^Y=~[,z0L-unt糖G=XM$'G?~FCP]G{ԩo =TX=M哥ȭ-~F0|Kb[WcK[Lգq\#7kR'ޏM2Qfy3t-٢EsZdIu<=C 1nܝ]FDOR|aou [y[KO|̡طY]щׯRxw7N/c&㣏>"/O X~ϳE S#DIakcfNO:[ӓؖ6,\/5=޻?/'Õ-@o +rvrԖճGy|wKS]K<&c9>ߥ9'$y{ʇE/KN3 ch3MӧPEP&MLn3f<2jJ8Eɳf`e7 DcZ zQ,[$E D]D"_,L'|D;#=T\9 znw!]@ę豤'ϟrN[}Gb۾u *TjԈ2eDyQ]){3gN1m&z2v߷mY2gm)eI|r墏>.Lћ;{[ c9C'ʛ7e˖5kJvnDo UVdBy0߅{nTN&4lؐ><.<reʚ5+ȑvC،9vlsw[O^[ʛգ`8,ӠAI7o޼Զm[Hnx"}+U$5XJϽ%ꦊ^}Dի+X3gL9hӺ5˗O=~Xrdai"z{wQ~eb+@= IJ/N͝o]ׯ]v,b.qZ@Z= <,r1Ń=RI z=@ z=@A,EoKDd&zgN)NAD}+y{W  AECoEDLֺO z=$7.ϟA zA݋tu ywݮ%#~ʸAٯ_H΢z)D/ _/_WTT͘: {D/G^xaۻ>5r0&a.]@@YDXnm)Օ^ݺK[%?Qу%Rћ8~.H{ǎR|hm=D/E^KR5}~}wVEo_cT*/O۷זܾEӧna^ڵ ͛ҤICŋ'e1oDne~-[6{4yS hР;wnʚ5t֕r)tԑFFX7Rd=סC3vEw>L=2Dh-*6FTSI:5-[m݂/Y%^[p RtLsΑwqvcI.^8/qYY>y8+VrEܗu..L2ZWڳ{8~FJz9ϙӧ״6lH/[&˕+KcF9lVLb'ӧ˾Oii˫zrg'sOUVA3Wcjժ)[^=0w>f͚efp&M4IDZr% IX<֚=𗿡Un9i,ziRl "z|=DȑC$KJ]B w]7qi4Ai/Q۴qkۦ O4y^>ԕ"0_BE=Z̙vzS)"2ʢdl͓.i;0U&12Ϙ1Hqw[/#:!3gNݷo/J _RDeDO$gMΞ9SH۞];zJ5̪Y;O￷*z+;K׮]>DӦND,YĐ?\]J*EGM#m4 [NݻSoHؚ'sg)pdׅ1'sg3U2fK>޴iӚPcJ0nR豠ը^7k&B[۶8UE/%tN2Qfy3t-٢EsZdIu_f2#t8 :clG#x+$s{܄,gț=cǞȑ#;nՊ+BŒ7d T޼sd*z<(OJQlYn/DLuݲ`twMbhrgMX~(#bjۦ5.\ҥMKŊ%'5Hb7'FZ蹺jUR,)O<Ԧu=~6^ԓ'/%O?+[= "~[xOP{X,xGFbEŋixLק1lзD'p*P  i=kt.YXꕅu͓9YW~ϑCАh0Ko޼U\Y&pc|F~T|91zC ޽{Ee"O,S&cUV|}h{EXBJDK= N۶@rEۖ-LgZb9mݲڶm#^.%:@/[bV}?m S$;*Z&z gGÆ=ӏChr΄_/8'IF̘6fNBJ-KO&MLn㙰_}ˣGςe7n   2X'Gt֍ i~hԨ&wI,YE'OdZ^ (9u%OBK&[C9!!O'<%zыx=7b{fY|詸4nɓ&?\4w16~5~e*zV,ݺ9 ы\dvcWVb#M+ m۶m䫩SrW 83g0ݠy<=['SkƣYEog_d,hTv'z͑믿ވ?En=5=V1$|/_Mt[#zAǎ*S{ῘBrdI|r̜1a֭NxGRf-Hr駟r;Fϝ)>ь V|#'NHN>kZ&~k:ސ7^_Nؘ%οFu GB O2]h>ykVjׯ_O:v z:yBbWљ:Ν ڵk 0tF L7=i"z:ݤRŊR\9i֬n ~c#z|A :[-?vffd^} z&z:MR }˼|#zQ+|#z[6˗-qcGK2ed[C=?4&ʼB)e&iܸyI~)'1kwm:u$7!zuu !z!z.zi)K'дr`ыE iZwy+Æa_(Ȣ">EOG/2^EO_v.uX`AQoTc@ ۢ/)"!s%qN#v^=mߕ+W|=Om_߁+rPc̃<5b`ޟc]D/-!QȜY%b49u?߂"z[2ݑ =Ҽy,-/WZ:5J969شuNO-y-KB- .TJIʉ!zsçO?e"z@(z/,]RS!CFݠϧ^UHr[nsqgeNձkcZ)R4jPV\a?vXdI׷ԩSG/.ח>O;WRbE̟Μ>%}z*U*KJ-:@/#zOc\I\+b%qnZⰽkժ],qp=z5anq{W8w砟_~y;Fzgq(7ND/33j}glSЖֺ>(&ch˗q%zboo{RX12yyƞYm0Omߢz[p 7Ȓň@>GK3 zlK< U9\x<\9tY6i"MZE?cq)1fʋnuH/|'XK u<_ae˖ɓ&9sNf;Zö^'T\Ȟ=jE^a1KY_u60#d%>6:d2ַO3S߶TZնv_Wnf6lP| 碳Bu,~Ge8=o1Ț~߷ޫҥKK$ *%J;}2RB#t/ -ƻ@$zY[t +9zN71&WD H|湀C=cVt}8HG @As*z](nIZh.qEoŊo(DwbbM vEDϭhnXi߮ԨQws#z'aUVX.M4q= zRnH.Kظ!h]Kc>&zы.zB*z8 ]Rxo/@7|ˮ[ݦ[RVMܰjז3Yv0iYnuu$5k԰죨Ԯ]K}5&zاw/Xþ=ˢ^襥vMxi۶:FOkX]_ƥ~}HYVMES^={ȴeqg,X&z{?2cWD2Dϗ%KsFEOd "֮E ͫ=8kys>TTsfۺn"!zPpD/z񂐈ǫ"zKb̲^tT?իkW#zP@E/ra=\詬'MD// l޴Ȗ?tzFtۢЯg/ۿ>]*U(˕f͚[KKM_:+@?w-Z4_Ult W }CZ_@ *k eM"eddȌ3$33SF0уp|Kr W$AبHIM9[(EOmoee1RL fD9Tu8qBڴi#UV5k$zڍöY2]SC+/sa~< ?#AOOg|7;(|ir)!ŊuaoˏiN.^([jժɔ)Sʕ+w~s7q4o{Y*U^zZQ<]ϹysQyrRrey䑎ש./uOkekla)ܭ-[=_|ӾTlݺΑ|`Z {oUrˬ۸:]ۆJoA{@ٗs =Avm|9ҢE [W~#^tD/[g 7̌Z?'|L\ ]Oe_dY_Hݺu]:֮bŊY I9{?ݍTG۶nq;|"zgwcnϳvj֢ m6:[SWVT\QOގH| bswξ1T͟޶߷NDѸN<4hE>]GdIb?A}IZ~}4_ge^ t_zՒI.+{=RlY4qv8#ÆmqcMmuJ{#+\eEnXdO4/--CҤIcS8)SH{".rnDUL]ּoe[v{ff ծ\?d*CMz:wlDrY|Ot~o71yMg_w(?=mooct_wد'Mr8hZj :FO3_t)zKL΍ dά1s1KY_u60#d%>6ګiwif}R3zdN'|h!]R:#qyu-ѿ^!| Yh:vE/BWgGX*iZL>3崀 TUL<=ֹ]\+(~ a Le3zT;Ig۶jUH{;-y=h:C@Ei{}ki:I'WkZuhGwp- K-zqQM]E/3RY }K|cX@PEontLD/k>cӢK, ]?|C ǬhW}Pk}D@>&&&ڴiwzZGl ]3=D ͟nCNG=@=D=DD@=@|s%zo1ؼ'Mы2 ~,^@,]vXZHHtr9%ztt]~^9o)DOeK,!1n'~iZEoe]Vѳvn~{Eδ6aq)z1QKl] ϕ뮻eտ#(Gn݉ŋ-bڴN2E\"G~<'z{HsU,bڵk!>s;yˏ#yN+7c !آ&~VNLv۟F,zы\6W\)X͛d2}чҤIc)S\"k{0#v/_v &%oeۼ(z]E2[l;=s<~no鐗c_De)z C.zZ]9)zQk.Zߧ*n΢([xx{rlnÆ %K.F)z֯HsժU~lΧ^2uen,yㅇC@ YgH"ҨQCYrE@QRS/0K6]lz?nbZޖ{;%KJ}N:Rxq_/:=~?Ctv\j9djn43meӻTRY*U$z,;SO9\_M5%=WO[ew9@?y i֬D̞%73R7}׹"zfN77)0/ ze,wo^={nj{衇ncǎ9S7n$aCJDq]XZHj=ӣ_jf߻wnqt]˖--yn:x&zyQ7ױnsqޞ4E<;o>'o z!= b Q'>Է :<+Sۧ,w}i˯6{ͯԶm;VkԨwXXXq{5kJϞ=L!k]F_ gmYXbn7lXo9NjJiLJ4arܗssRtv5KH[Ƨ[YڹT e 6eb)m?f><ߔ9#;eߗWV7<%7=^W]vAǏgmڴ1r]f_ٽ"}r#M i TffW{}VrzZ|97o 7wV@E۹yKCW1Ӗ']]o~LWܥv>ph9n0@/i}}ɧMDע7̌Z?'|L\ ]OBs_dY_Hݺu];ƴj7W3 zݗqtlnm7n>(˹*z1 T9qήZL5׭ X4t3-=/5|׻i?FLϩ5kTb|N7T-r[ͧ&@بH3˼tARSSz%\4W&z:lٲ2iD3vH8twmǍo-3n5OӡC3zIb3˾RбF:\Ju@EϗsViI i9y$mtvsҴIYoG|97Oi.f;u2c]:VN|3Ϙ ڝd縡=oiH>'o:Wa/zKcla2‰#GQK|lW4q;l6ѣ*:𡅳vl%8.իq 6'xq_}uy~GU"zG+[|F[Yz=:Sǖjy;7_*M"z*z;v (n9k~u=2eȧ|}~^nv}{y䑎7{L)^i D/=BPEO?1R&zݻu{a^瞓[oմ֪UK~1&z%JOʕ+'7tˮۭ7INJ ~}iIظ&zmLEGEeVћ77Bn曥b ҹs'D 襥U17eD#zZW|yћ!Z4ݹJ֭L*zՕ,_gci zf>cOћ?o.]ZvYEo7n'ch7k"E$jb[mTBLѫZ<ԓF'zыD~*Y]^=k<^eIr[n1fn2Doog0詀鲕˿IbӳϚno+ӧ}D~(E HXPIp>ۙǺ`eƔg,y47&@ȅ!Aӱo_MR*U(g9 J˸MWI~Ju]آdiӖ9=]h|g|֯.O O<.-Z%Je/lg͛`e`#EO\ *ySeZ%zʣt4c6_k1zt!w}HsPV\akAe2lB/zxiKؒŶmtn]mS'79\ukg-m]Ŕ)fi_#ǎzد:H6ndTn^^lTEyƝiw 2-YϘ1e72|{fRJIժU>_۶;+sRDn7D7mӿO?f#q.⥟}jҤͼ7qM;r;dȑQ=D/7vYdѱtm۴1Ϛ5uu߳<#&NǍW^y9>uQdI2%#Yomk>SO @ۛ5@@DOMEM'r軃5mjُsfB~G[t&ΰl**i5uݻukY4ժз2f@kׯq zVB Ͻ@&z:NfF(VǴhk> ފ8#_^C4?ōPEo_R8qN#v^XX̚.3A@ EB!z!z zE/-5}@gTgf^@ [lt W }ü_@ ҩ]q/##Cf̘!2^!c-8у|(zZ߉'M6RjUYfOGa,uO7k %'O&]hcPiРy>xy)S׭;ѻxnZU&SL+Wߑ~ЈޱG$lgoi޼9M4-4MBڵk+l{=@ ߉{| 8дM0-y-&ˍ(ٽKv]:]wlݲXGT{d#u6l0-y]t1bgL۰~~ks}k?6; !z9&z*vsbqmɱcZ)z*1aCJDqj :>kժ]|=ӾJRΞ-7]we*\GݻvnTݻIvK׮]]^s-[˗ˡ*@Z5*_*m""f˺kdFJ(nNv¢ߏ5]QK<^v9їSVQ)Wyu z^^FLmXXXq{5kJϞ=Lh]Fb)-XS[QT~\SڹT)RlNH-Kش,Vy;Ԕ󽤤~u:ݷL띫z.J_v.ZH_+i}I?[ذtK{#w5S?E~kOi,u}%c#+WGhZtʒً/}ʊ.UaeJ=omFF ={B!-Zu7__q}g4t]OO^vCB.z#̨S{']ĵOЦ~E_~ԭ[LqcHbŌX%BȄ53cŝ xڷ믿 jsqa~-EϗDO@K[tjvOWo\U4׭{Bvً?LѳO`]'Lx.9]jjW^dDO#-[V&MhiwǙIÆmqceˌ:aB'4$2Ɖ'ӱV@Bu?<)ӟdĉoe Gm7q4o޼Tǎ 糽_Svm#3gN2% ~s╟D!'M~``gk{0DO[[&zʕKrk|:ٺesia̭V-W*y̗kޞݻdǏ𡃅ur -f?_D6]qqr1#=YpG:mӻTRY*U$zS'mn_1]¥K-?vt WZňfncnQӻw/˹v~sJM9+/<@jժe],ԺNǏЧ[b弿%KJ}N:Rxq_/߰~s""E.|"^Ca[2G~C+ &z#̨u.\ڷ h-_o6rUZ+[kC ׬t5k s~Im[xEo=֚qcHbŌXoq.%t/oWX+SY+ܣ6ed<;ݗrNc-"zWusfMJLt2/](xW^dD3X_*xp-,uӧN[wɌv&6#OI|"/XaO[;Az=?:t M4%MwWʖ-+'MrƟX+z+,[f*:}v`x:wl&,7'vθ/|1XEOk XCsK@)LP+rH1>aAҘ%Fଯ:npb2vU)XuX˲ݫRJIm*T0r3쟒ﮀ 7 ʓO<¶:6q9?oV:H[t}+z:h^+;+EO\jwpvZjVOoVUs\/_D0T=f[9|t_MZ|y3>mܥq |P+rHQ_D=uڒc\Sui"?7|ov@ D ;o7?7…>]@ z ݥƫ|m1c z [+i}#>Wo7}v͚ɑÇ z!z!z z!z!z z!z!z,^"- WX- z!z$z?!z8ыgDgDDCD=@D=DCC=@D=@D@=@=D=@D=@C=D=DD=@D=@=DDCD=@D=DCC=@D=@D@=@=D=@ _!z z+ z;q C SɈ z9|C b;DD=@D=@=DDCD=@D=DCC=@D=w DD=XCޜY3=D a1s@A=;DD=@D=@=DDCD=@D=DCC=@D=@D@=@=D=@D=@C=D=DD=@D=@=DDCD=@D=DbY^AU˗!zV~W;D=DCC=@D=@=D=DCC=@årT2E/5,"y9s eKJ-R ZBKX&Bi;,YU;t`D.',w HͰdq9qAO/;vX:X`8zCPH8tpIrIr iq;t"zy@kUDWMȜY3dp(D.+K͇BF !,q -5܍]K-]P5Gq\$keKma5ХYpхn܃!zyE {w2o6] ЍY]B݅Mkq-]( z zׯ|[n z@E\J>-gO?I9sZΥ%P\Ks&dٴ紬 niIsF,8MRϜ&gL>~0ӏeimK=M>Cٛse/ΙXlK:#1kʨi啱^inlwƫ$zi)mՔr?G^*쓯,[6mԔ3T`ޜ+{uzTHʿ&IґX_]M4d_RΜ2p<@d9|J Bٛse/ιXoJZd_]eq.5UG̖cGSW({s%9kcݏ!fdJ|J6 i<iɼp pJ |=ޜ){uZ'X3=Nfȸ+/z+A ѣ mKs.GG[T6>ћ'$Jn'ѣ͙X\UX5ћ433v"zsGٛsGsN|%׈ukW̚_GX\k,荞Kdˬ_#z屲X\ Iuz?uYD^/n DX뜋5҂-zS&~#7#t 5ˉw۶m׿z^P'#F{G/.˗-[ʪUrN E*zo})Æ zIbŤf͚2`9sF&J 䣏>*(wZN,W T %֌`lj/ zLꫯJvN:rڵ-JXPy?QerYduR(ŗX뻮r-Wr]wIƍ%::Z9"W/Rvm#{[EwjjIOor3]!zy˾Ufr#zA8P^z,x+7w.}]ԩ1f͚eZs UkԨ!۷TTInF[DEE֕*UJ^|E\}%oWԖ%m?8:2'b?Q;d„ .}7r7s=nݺ)o&z\9"zϔw}`o^z12m>xڵˌ̏@^P}UzZ#(Zn޾,֮%JHZZmvM6-E/NII1~Y-\P6olt~mkUT>lZׯoy[kɓ'D.:2'E/\nպϛطYEOU^!ƹ.z8U23/ h0WNOdANE_ζ~ERbE}YwlMuŐ_yK,=WBU^p^ʖ-kD-CO8nZ,wCĉ#G755%PdsgΜ;ֺnϞ=.ciFlUH ϲ@ȜU2.zָZrCe#]6o\drΤOKs^)3h0u%m/eZ2,_~ϢʲwNleh.Un^nZ#[Z*Bbisȝwr/gk=RhQ"u ̉Xxɸz~|.-5?:.]pqcJɒ%drdћT a2T(`nauݻvz۶z5͸!tKE/e2yòm[H%$M_;z}zM#͚5\-{C_ S']x=2<#Cֻ*_ >TRNn͚Gh Zv|gͲej #zqq&>_ݡs.ݡCiҤ,\,0隝:2'bmK9R:s.5E?n⡱Ѵhۦpacy5qW΍k0בv^~\_gz 涭[}Zw1E38xb©j]?t[fHǎaE7d&C}]s2yLtJ |P&|P66t/\nz[,VldAr e5S}vAh[j% 7/]%Vj=ˬhݺٮ!:2'bm/z9QS믙1ſɑÇlsҢE y?kʍkH=f0/s4nݒ+NE<^nZ,6m s/ޅ, u66YgLes\YDPz+7-WOfD兲 s/V5mlp6%57{ I;*k@ڲ9!W}=SB \ms}2jA/ѣ }Ks.VKe+gnWD/)?'BvnO(=s9z9W뜋ٜղy>b 6of/oJ<};zVnI,w3_>'cLc?HLƛ> Lmsfϒsμ9-a?v |7^b3NKKmHڽEJu'[,o~ޞ+Ns;~ X!oM;+҂#z&HbI>.ǎ2;ڌpt %{9V뜉ʉD%9cƘ鄂PٰL@k5~$o zPE *=@*IENDB`geany-1.23.1+dfsg/doc/images/pref_dialog_tools.png0000644000175000017500000010762212146146075022301 0ustar hyperairhyperairPNG  IHDRzaֻTbKGDGIDATx\WׇS5=jbM4F$ް{QDTziE(J)"\.n)wfg<{3O=U.7y<.LLPHH0]v@ 5+BC!+..;w͛TZz nݺEW֭ "$ sQTq:\r~=ÁP{ݻwPKϻ^r :P-ZmҔ?̌Jwaޣ>6n܀ ޭ7DUL\\\hΝ4d~ĉgE'1֭[ϏRRR[(z7nܠkPDRW*sG1uT~}]xt(hȈ! y,C6=ݻw31bԥ gтpM8uJ}4r @ =kJdD4o<~ݺu0n׮yzz/'|B#FD?}TTT$nίyEʤ?X<ːM¶zjZhx?rHڽAΞ=+ո>ޖԩSsQY#W$T-mXv_% M>yw}G哇&d(**JW*Onnn2[Q~,^\Wcy}ab\ $+*EQDHt]In2wxmCU#d6OEQ~z޽{YYYtO:.?Jۋ*`Yp/ǿ(qP(ROJJL]X<\)>.23(+32/SK.r*ɸt.H \[\H\dN\`R3$%I;+'\qg(Cbeg9E12N ΜqbN8.8}RF 昜ǣ䜈f"?!/@ Bq? 쬌ӻ]+ PCA \ASTX(yR$zu=7C zA z=8 z=Bs@ׯ@ zW|DDDуΊ^I:Eʂ#կ_^~%iqDSO=E^n=@TތӨ^z4s ؿOȝ5 2\!zZ0ڴQ&||pyK"^;fNve>G==/W}DӃ'_VYD˂,zz_~&1I6zI4vj޼95hЀM'%g9 o /@ZmHj֬4}ٳEEs԰aCzW׷Ojܸ?7|L?UU-B=ޕ+z=.W'DoW_JbN6} 1q= ;-=/\u[IzE;g6Ggl8>?on%ega-wѧm )Dբ Mh)V?ڑr FN/9|HoԨCK^6~.]| 0@ǝ;KC޺/ov z(z,~rc*gؗ$jʓǏ ,,vQ&D$h[nO ;+ LQƍDScmCb:?_'z,pu9L [V^-DE֯7g/i?DjjժhզM/?,zQa4lPjٲu[E{=J\&M zv'^6nX/}dmb' ]mL6VjׁFrۏRiZnM[Ӛի),#ǝ4fϚE:^޽%)+.\@b.ѫ&#ЪG즍 ׫"S!jt;N5mڔ6o6סCڷOi<=ζqXE(z!Gdi>O?MǣU{e!z=^^zƎC>1Wq %LZjI5!CHkzѴiԤIzT.[SuQԲe j޼9i [iy8jHÆ x.Yfsωqe'_< }GxP^fXhuԉׯ/ݸc5yO>4h@ݺu04ھU@v۸a=}Jڶ- X96mhpqUBǎ(1͏;ӈÕk::{FT3TTB]t~II8Exk+K΢c諯'YxG|bĈPz//&2zVrǟOi (!>N:$NK\v!A*{ryןOԍ7‚||G\/ѫZ{UlڹR&z|AuǛRږjtj+O׌h׶]vЁH$%tj>uiZUe?ǟeXT {mrsraa@ @YV&_M*nq6L$ y6"CCIM&5gW"B0*ھ!U;e/yxnZZlؿ_ п?X\oUU]뺝]Ҷm&5K.7zLXe?/.C]uVt)"n9Emmy93$$k]ǭ󝾏Am۱ҊH^ =WG= zlgei.x^~ecgTpRuB=>10jT>0pk_YKLL8:_|!>Q^W+?ˌ=ZhA]d$t=IsB+lDF_]G:u]FT|NUwve)kWe8Ze貼WYSO۾uR~]xd1TUtV1m;V\ZYS\ue?'Nh腅v>՛4zH G bK&D_y(WU|a_>+Eme?qUvLV\mUϣn?YydeDO.zA<=>xy* 3>}mmٳf)}&U뭋mڸATlv!JIZdjTmmۍ4g̟/ډvSSiΙ#?Ru2Q}E}]̍ӹ*/[iʴ 0@~_T䇚]}QxmۥAacq:~,,v~5V}Uݪ=Ū#r.U,s֟1ٲ7jуǶYvwr㬙xL VK2U4nҠ~}y9^-wCg+/zS=yp' c[y=6KNJ޹Y4u1t=:n[z :.$N&za!ⵗއD/2fͅLm͒'M zajՊ;u 7emڴ_~¢Ǝ'n߯+QƍD=~;=1d ѫeoO] zG=6=@js!zxl!,у>/qGmD=D=D=D уVA?!_=j%&đŝ;#@-=7'Grwc=?/w}C-2ze`C%% z=6*7C zA z!U=j豌\^у6^"D=DS<[- $A ān HTA~G;[216rL Ŝq%Ȥ|HnT{M*TU'%y+R#W\ru#+zntJM1d"z,nar :@m۶wmY%@ "DU\uKs%/Oݒc`;xBU2+_u[/ enoZA uOfmJ7c!N8w_._ K7뭔wWnlP6!zQ4?jִ)5iҘCr{iHjذ!+=!:'zh&[]폣U+7fhi=LVjك:v@a!G黎E3{K8׆ z@H=@N QےJhJBiђ4wXr=QE|=%O{[d62EN8.D6V*WuQB d"ƛ +_4[}cI*Plݺs"#rޢ2!zDݍs(ۙ,4$}`*9i-į|C&O& JZP0u8s D͚5zQo-Zac襗^-[$6,zQԻWOjԨ5m҄  `xܜli^ KZ\/Eo=3UxΈ&*Y]*zݓi$dYb]Ct|qGQ7|h3t3JiD_׺-T*+z;w[DL4,Bݽ[u]y9gʲ(5ZnVYIeEёK+.zuz#2SIvH%Z; SH:-/ѽ{eQw#/5Q^̦)!1]I5a ;?M5.u\Mp<ϴ=~D7eʟԪUK2dst4CjҤ kz-Ľ7oNΥ?Cn75Ulΰ3{=qǏi 2Úquq(zȟLBt?BdZ3*[x# Zi޾K.EG&quL^JYBe DJ(?SaѶ.!5yLnJW|nJe_Ⱦ.╗;g:}*YkEM]M%{C,ןW,_DWoÑ4U]lcvMiyg=% '7}p/De{7)XJ.Ǭ ')92}(?e2%5*Eo2GQФID/~DpZѳԿzy@^=Céb#b;w#+_3wNM7Щ'hѢ)""VX.$SNrw,5ڴi#踛BR!(AuR7wi['X1U{yWoF"2 n*]eXVүbTIVbS$ _Ųcrk^6ǩJM$șu0$zXdT~p@quoūTp0i;l@d"'++bodz|ޖ%H^6p4L.hbQJ=_ʌHe^,*˟EW/K'#()"%+S)z.w 26|D/kFO7yZѳ2ߥ%I^&D^p%OvEd4eʗw)tiO:R =U7OҧǙtN(WgѻvX1d4qeOlDOwKHW+"j:{mW~GG/Dl]d?!c S[1uQS54˺ʙww* /W_|3u1 Lκ.l궕.X"3 neq':#3P` D=V^FaTxǃltO z-ՊlK_/yK7P.zJ\%11^-YYYԳw1ϘT]D"1ӵDUc /;=vˋމѕkUΒ҇dr,ŞDOu|ܾoOHFcWVDT_~\˭R\Wsy\%7?L!/K=њT5JoXJJ=D~?+۩ij>sM13SP*=^;}#2|,[{+Ϟ5Ki 33umJ8Z+5Y*w`I`o½<9e!z:EOuх=BV&z\]+{vTtPFO*a-#$beD2/-2zNd,bHۈ3 zD툤攟]K($/=3ʊJŗFPnb'*+0%VγW$oe81'i4a3o^={>+ZD3fL{7n,:jު| ^ݻwpmJoݕw6`>|ə"YgnOw2H lU=m Mn{-aX`k'aY: #4kxe2vn7տBLdU [mBuYBwnѕO%kI)Q)t'>CSNBgO3ҋS*Xd!_g r'o;xzِug,%&jN..N;[MVeޱ}T~B z*z6{i=C HܺH)%{O&Bk&z8K+Wͥ0:F .;> ?=}H>~%QM޾mO&eT%&đŝ;#.=^=# QI:n;Qʽ`e%#K‚<<,ӊۖ||{ ;i4Κ 77srqANNq͚5fC~+-#/'Dɑ]i 9Y=уx2Xr>\9:؉ V?Uڂ~#1hPr&T\ƕ*ynуIJYY R>dgkHx{yNfmEFܿѫ-@ DL*3-u> 񒣜?;u^L.GVBWXN/"EGE@j-?U3 2E-虙6zd,$,-Lse+љʈޔ?' QsgEEѰCe /PQn]sIZӶƨŢw8!D;܌PyҢw2p翇8>~ǎ^.'z'OӤbԠA5[lCסCZr%ܰO*E  ҩ(!] 6I^~PYAo׍L4,Bݽ[u]y9gʲ)e:F:$z `gźd iǟ_~brQKMcD9)7GJnLWRMXDƎOS l?#W<-3mDÏϝ8a4i I&W6<+3F%z,7o\̛&mܰ[r>mۖ,  ND/VZҸc8eʟbxFhȐ!~uˋ6ѻ"?;\M׶UrOUVQvtV˗//BkhhHEEEjܹs?UgϦb1bY_~z2{7)XJ.Ǭ ')92}(?e2%5*Eo$zFIɑ^0gkm у+Bp6o?(/7Gi֭q;'>tҥ1?\NIIN:/xK%sp>HيO>.X@ qtI <(_Tر="čo3bp8wUh+/z‚.]e-sl>}(&&F3h 9sr9M&P:0C( cccoI'ggg߄P"bqN/euithϢvҥHIƒ̕UBѻqJ>J5'{)3,Xܻ{ROu]4{4-.D$}$G~Cwˮ:޵kŒ]!C-7~@efWBjC=]t4Mܹbb/7'G ȼHNkֈ*VW_U::flѢkw: '$ī}&>EoúzL1\KKK8['7oaa\6oތ5@T0rl7ʎg ‹=dS~R_kVn,mDzU,~!.@ O4I\%11^-YYYԳw1ϘT]TU~B z5_<қoq~Z)ǯ}Yy] #dUJ?|u]nǷ{!iu=SQQ۸n^DS<\Sƭ|,xA|FYFO*|+v|\@ #\8n AAJ*L@Y&zNEC豼:}3G:3uW;uXJ=SK s3Ӝ2f94Xb\s:ϜIoN iĨ4z9YdA[%4aMcMsMYaA+-hU4c͔Ƃ欵,hĂ,iĢx%-hI$oFRbfKZclIk%mZ&i%IZіV̊L$;Lb.+inEVdiiEV6VVv6Vd/`kEv֕EPP=/^7zwiUZ%^:ۏqի4Æ ټˇ_vvSSi7m u9[h}`z] W-sx1!ֱ"m%zcǎ_U/3| &)<_dck v3!I.r .1mEZl+.7p릪at7q(NS^Vȇ+ *!ŪݧmtPDqEiӦ{r4,f<dd|ŋDNCWFnݨaÆD.q|'6kS;qS:V׭>EU믿? 14>}:u;_cn qTn.^(s6gn1J$kAɑDV/=kJ|2cRi_Ԗw>6ѻzHddL5I):a:&8DQQdT>Mn{-aX`k'aY: #4kxep;M#z׹63dw$LSi6%O(uʂw[Ȍ=5ԕe%&s> Kƃz7$Jp]/׋5e+V,vMzHIQ1!+c70~cыÙ@ jqܹFW.o ?%DӝZPJ O9 )?H/O`ٓal||)0ȝ}VeCVםRH9H889l5YEKVZ/{mp J^716.z9uuуedxZTļX~: ߂*??ɦ: ߂ΞnM ],{ ?MjD~MDZ`DϙE% ieYf%mf8ef:>zէn{llxSu'N7LA>@r.|}ДɓQTP@O ];).6V<53m2=&Ѣ$k|B%'!Ξ9#vx4dA z p*1Q Ks8Z89ړ _P|2gg^D:uDv˳wfNڲ|E5Sxed S >zDh ΍$/;BCj)VݞBVU=@$s'z994fjٲ%5oޜFIYr㆐cF)(zaa!Թs'_>jՊƍ @=C86lO:ڵ+ 2D.zÆ wwN*I?X}ǴpJHӧNQPA_ ŭVFɼ,[|^y:q611Hx1ycQbXA~Z{뭷@nk+E@v% ]D{ݞ=sl=nӭ`kC1"zcVyD/!>^ giޕ<1x'^D/OxXBBZы;Kcƌ-ZЯJ zLr3(2"T &0_:-+y G)}Q''eXYƯr~D駟V>>KW xŌ^s6P&z'OW6n@/ՒG]ɥZ|,ֳ&M肴_s{et!3#2._Pg48]3y,y}S甤I֥V8`hw %Fo1 ]*qQjYY ft mڴ째sd};իWOXiBף{vh4O%;ב&\O,ю]klj25[A&x!-\2YeEE=բW\EŅ:wD 4_~>#24JqBQ#\*v&)(e8eJNsZ +SI¶V2L6HOӮX5f у -ZHtl,yѣFQuFV-[C :,CѥSQBH#%m,nRYѳܹCL}e¤Ad72<9UOқMѫ颷o$y/R#uig=[LI(/ɉJsfSn⏔ܘVן:~F&8xZg &>dqWE3f4-gM3&MkL)SVZRFhȐ!r5R Jy9g ?w!%E}s͚5_HYnݚVZEڵ?Pi˗ڶmKTTT4ߜ9s8o~~ g\L޽u~,%G}@cЅ蓔OY>2R~fzGQФID/~DpZѳԏ:GCzӴmE^ =~~e!k:0sܖc"+c4bp,)';JȠl\Ix8$^b|׭[7/k t+lyʕԧOI D3gTӓnH%] @ >)̸TV0͢YtNt2");X2J^"z|W%cGR)zf|=+]=7(XJfXPK s3Ӝ2f94Xb\s:ϜIoN iĨ4z9YdA[%4aMcMsMYaA+-hU4c͔Ƃ欵,hĂ,iĢx%-hI$oFRbfKZclIk%mZ&i%IZіV̊L$;Lb.+inEVdiiEV6 Z[K8Zuq $*^aBєy+v^zIH^ 7Wj֬BCDuqaAWu(z#& R. ?jڴi#+((g}vg{'R@T]ܻ{ROu]4{4-.D$}$G~Cwˮ:'npCN'>ZFoā*֯rK(;+2#]<3e_ i3S)MƥtYTe^ ",$ fIIJwVNX%ΞQ 8Mg(rbcd9-Ŝq\ph19'G9D9~,BP' Uc9&z 6AKLLxDoúJ/իLj^UU_}<,++ ga˱(;{1 /x͛NI}DZŕ:V:,c ހA$WILW _#z!3ʲѓ`#@!z5K6mmĜɤ-L*_9L/$۸nqz9R!ѓIW窋>}}] D DD>q!y'Z>T"#EӞ6zEc޼yԾ}{!{Fi=cүJaaa"×DVK: K^gaHhN?KѵBc?خT|i&vC:\;jEo񂹜As2f@& |9Ɠ GA> KXX 44llNѫa\e\-*$m믿 С͛;rs^3M8x 裏<*'r xzݪ=-[K!=zIwbr+'ٰaݖc@T]GIׂ#[^zה6etҬ t!M!i-EoϡM^-Y=S GRAw>"q QԱCDx^ w"7InNƈ%-͚=^i|'MWCEyDNWыxƳ=jD@TmܹFW.o ?%DӝZPJ O9 )?H/O`ٓal||)0ȝ}VeCVםRH9H889l5YEKVZ/{mSW7Ajm5$*j  zQ ֍DN.{5ǔ^;7S_Zj.@7 8pU?p!߉Is$_?G-nu Oo{0q(-S[eW,$DWSEDq-%;;'nplggC : Cmg#Q- ddwIX%yzZ5y{ےc/a' Y޽fN..;i;9:nY̙HׯtedC z=]E/44Td𸺶K.doo/C gj=G;{FX[P߾ouz$ A{D˸D,z@TZrs\)++Sh/ZP@O ];).6VrLiY4z49@qIx٩є+,,Л豤7ZhN 6~}P$S,yoN?wF/25mڔ'94h@5֮^z/ҠĸW_y%K7nL7$SB6oPu6-BXF F͚5Crsrt^}Uj& z@- ?OORïe4W .=8+gk[Jޕ+z _}E>:H;8`\x˖3OY|hY /й3Bx&MvԫgE2\}4QZ.MSFo}{iۓ}ԫWOiZMxkKPKɲwfNڲ|*Ӈ)J Uѵ+*)vAT,(BH4Z@$RCB ug$LI~wf&'ɛ̝SX/s^dD%LBT KL3]1zAsͮX=zKzVU^]lYoN((4la=;CmAǸl#zmHQ+WCo116DڭMe?FOOʊ:V==QCoL+BrޚhkioYdH Y$'MC eoϤF~*B\XYzwv7ȓ;:l5k&olu;oeG1i֮][Jҹ4izbɽ{n#lִ6vubVK׮][[\veҺU+7{vzZ]\ zs BU,$=@--=BGB#@EdE-4Ez^bB$k ;BU(Khp_/8 5"C7vݲET SNz0l$ݻw[o\~ҤIyge%^o҄b^ 7|ΤIfrmI͚5妛n1'sR[jժ%ڵ1cG~Xׯ/ 4.;[߯K>yu]Rn]ꪫ䡇?g:tGyDիgC/nO3Nz޼?9}WBOwjۻi4LlBK??XX[Xpӭ}||8pL:U~T^Shh[5\#O>Wߧwo247~K^yBOWedigy@z%Ы8CILL(q%OCII&nw;Ƽ(-j 7tԫWWyaN՗x[WUoR|fCOcyf uڥ\{ryҲE a=ݒzҸq<˲wRNmiԨt*^eeezkͬxҘ*dސW"dI7+4ׯ5/e ==;TO"ޏ+-tz?lok|z{ҵkh5sb,ϙ.ӧzv^Y3eɢ+N;ICO=Cː߯,Ae}LBTЛ!^zx6.d mbCO6/aފe-bKz! mz+?za!f+?$ =""֑/Wp ]zؑ:v4􃿯L7&O'~>޲}fz! =4lo*dɉEpYѫYWX͛`aWt\2ƚ~S&M,4l'blY/}(ի_fv[zyiG$zZݿen]]zn۹}xΘ.?Cٳ[l>斍% = 'x\nIe?FOw^/?,_Nsu'k`[j%cnjf-Γb>_cc`07cT? <3Juǖ232$hnZzμn+k׮-ˬx׺ c.$Fw>t,`HMM1W\qs<)8\YCOw~[gްH-=8}`0 5 = Bw-z^Dhd<#W\l"n^z2!=ԡ"CozzĆ r3/}RYBo)ŘuwmVd'#P] 2 ne=xBoblͺe73dfvʴkݢ,'.1 u#az^v:Ξ=[` -\ 5GΑp_ dɑ#Kzs =B`09!o6dKȱyLqBz>wy%e#^ޔO>_៿'k-/pǎ?/B`0#z}Iz݊Fr8~udgw.[7 "ߍ@g~+ߋdǷ2m72uW2y2qH3n v&_q{5/ڬW %22gM =Ю.6W?wW-ee7jpB`0<4ؒ6[5ȊH跏P)myN&9!#~o(G+w~}χ*p\zQ#M|z/|výgIaz\}/_cRSH_f͚^_V-ӻխ/26y]4o.޽o[t1̑;0-n۸qc˵E3M{]Bz9.l,stYLGBoߞ= [URe-;:^R螷%qUrC/F)^I|E;[-qIlz>^ $ N;g|Ҿ}{xաCy饗ĊƒLܮLp n{md1=ګ?tvۭ.SL{tse%!V@ְ/G?< Q˖ɞ,lo+h:GB/1>3`q;{Lo{PR>?sG !QҒY1G7Z;zgΜ)0^}C-z^h͚9lrmѳ^Q؋/XbcbV6MUjݺRZ")aԭ]yJ閷I!NOCVD:"Վ}3$n =(Iٿd$_zɹ&NeUs/O>p}yu{ nbgNI*JMMgƼO> \v.F-IBAos\Yn1*V+}K.t4t Ts1s{[ oXeip}կY޼ic{6g̍ݷ_z QqxW'9&on-t]םzzn˯smdįd˻>x-ϲЫoU6mӦN5adzM4Q.YbӵKsm֣kP?fl#M@ݷ63zH7磏z"^!6%-3֮]&>| m2!\z9֕/ߡ?kT_0Yt]ڵŪ+/ݼM6}cƌ8p\qr5טY?7r :o-ҠAپm=thqͿUPgd7gzذaCsrE̿_[Yѳn =(DqMewtsUdOt I%x C;(tz: snճy,*X6n\iQb$&Y!? |y~&Fzlǚ`00vH~'6nE_3Zo{DN~Y֓G1N =Jƞ͸q_Kx\Y"X}%4X-!^Y XyZi/h%h̳̝7;ݘ0q98Џ=m$z?+aVBЃkBo¸͕J ۙDI3VV54~9iҥ!fbZ>_YFK͓%Kse@Yd\`D,H c a_~<Cw4M&=TЛH1 F= ÑЛmv161=z c  gIhHxmn cj12٢Gc0 C/##O+H|._2 ]hdS'M =z (8w|Br$_N4ex:yB'9zݧOVGէ)g:zac. =*ަQWpF_s:uVӽKҢu2X׷l)>^&Əg:yynuݺv뮽ZFuiٲxyzCO8z4n(ϲ=8 U{7xt[ԖޞP>2vh .}==ݕ)}[/QVoϙ2 -C?Ç*LZjVHح ܡVv]! KjJzp]As244jժ%snCCz\ul[%/ڝzaA. ^^4(2V 1i^¼vJBT %:҄%\"SL"WBoú5~/Ll$T.aÆ&q}HBCOg׬YS]ӳn_}eiҤ4__ڴiCB*^m^`T^^U φ -Zzj^DhyE 14VA/["ߏԫWO U#׊CoiE/^]Zn%D*kB#Gz#z#=BTЋZi#@ Ą8k ;BU(Khp_/8 5"C7vݲET SNzjϜ9Mz#=PIvz7/G*z'z =Bz=B#H)>h\tE6u[B/2<|o]3C/"t/‚\z $TS@+.426[vۭR^=8rJz!]zqWX Pk^9Oj :F6mڈٲau^%fz9ݼ$L>^u勑#U^C7onN|c'%Tz)k6gvI4il75j?DBKz#z!FzޢP+R=Bz=BN =,BU0=B\衷8#@ ő&=BTKL(qv#=PBo~Iloz\C/24l}c-[@ @?o9u$Gz̙ӄ=Bd׭GzLzDz#=@z =Bo.8+^]CErEz+ӐKe yBO^z2aRk=@Gnt דyBol_QǮ[7^v1ޤ M%ݻ3O?u --ZWf yo_ԩ]]bkҸQ#Ν;Ĭudž.^Xhzs:uHƍk.ZKeBo)&tk] c<7m ["~\!y8zd*+X.?,_V`=ܳҶfwj׮IGCZ[oeK"EBnyiygM͛(u֕BϺݼ)D-..d zK`А6 4GByLT rIy̜!WԪegҋ{yӦw+eK QK`ۖ/[P-.;ݾ>x{yz ^|n+7OҤIc3;OiU^]o59)DVZ[.0[t˜޿`BCv2Cg =@ݺvoI5jd-w[a7l{7Kz=i[vЩ==C_o/OT@ʾ={pٳ'z$Aiv''HrBiI^EEfOP͝#A~@pX@"tQD-,Yd"wkzU@Be kW+4Ν;J]B=:2%=%ERSS$3#:%ƺ}^=s}4+K~N])zJbٕ* <:-2RSeۖ2[&-{z&퓕+W?.-[4г?##|?<NzBhY˾Mt4mT֯_O9c6ʼn'*sхz~4kL8_Uz!۷oڵo *Xz 0+)k.jYjՒ>}׫WOz)Nrf+׽QQQҶm[| y)nY#G.]g6[k몹k%""[4i"]vnZBCC]qү_?s-I?~ Hݲ[t}YϑzJwyL<.]*u1ї?4wnB]P\ ;s[B((?Cy%&&ޡCy׋!teΝ 'Ts康W^'=]qGPptźf͚eMwyyy{9sמVϟ/f~j=אӸۻwt7Wڵk'WÇ ]v8wZj/19sm \[ۼt_zz{o9 K/T_l熞LK{IܶuK%%&կeMW,z[rR˿k:k Báuoס/حD͒ޯ-Q|#ݻT^W͵n!0(1r=wK|;}<}V^.2K鎹05s?݂q2a[a8q<9nhU[\>܎sry~r+dnݲ2W?Q䲶lTWZi{8-Cp<\㹦O͛6J5%=-#_װaC%m.au\$1>pץee̩ =% ={:h\:xnz Z{W:4kNy{]5wic^F@֬^%&MKȊQ&"## 4(s]=}[ocǎrm`ٳ;|_鎹^ <旙.;0sߋzyg駟2]_:Љa =L \I'sMw~߿98F˭/TC~byɎya7dGK̐iS&Y?D{xpb;y<܆ *?Oכ_кXmd}ʹֹ9ny]ڶyӯnݺX=Yy{fFct ݻۿvRؘrؙlPЫ֛]>TuoUz+Onwe0_eȨ+N]!Dǟ:idW֛Y&Io7/RֽUy7׶KB*:72_Y(zJz{]e7׹C*G/pv襛(=B@Cu׽̵zYW9=$'_NZZL8Pcu/s^\>Ls&DŽȚN#2/_vnj^P>G:z}^}s"VJD bw$RziicxΘ&?!_>z鐒WL?|ݳۥ-q%/;m3#)$X{ݷe7 ?KxsI\x>,r=?KnJHYv.=5_ĚIڟ^Si)7oxɔ >L?VO1@^%!`l p- Xo\gdsb7[tkVœ2rZdF~0'J(mNLYY =Knr߷t3gDǺm^=sq[bvcWӏ*Awy%=TB=z zD %eIENDB`geany-1.23.1+dfsg/doc/images/pref_dialog_interface_interface.png0000644000175000017500000012255212146146075025120 0ustar hyperairhyperairPNG  IHDRzaֻTsBIT|dtEXtSoftwaregnome-screenshot>IDATxxׇE;JUHGҤ H/J7L@@BzBOB:wBB@z9'̰YHsg;ٗs… >>0Zd / /+u;kCz9=y?~RpO>ibC'~Kژ<qGq ?f/t @Ab@A=JZPBB…J*4x uۻg7TlYX"͝; /D'@r͛iժUԹsgY߿3}]cE.]gϞ@W=zD1 YQE_O<Yn֬x\ 2PͩL2ӡz꽶}P` =R>Lbn弾iӦt"丬[n-5nԈJ*E_|;VMշmVjwTtiϨG7ɂ&zl}1J$']pvAcƌYfXa~_Z5ruu%OOO:qU\uFΝP)::Zy~D E*U2OKq,lӧO &r=hz{-8KY@@Ppp,߿?A}Oprr2Ob=?ׯO:uݓ0syڶmձdb{7JHj4ыOhHVtL^+˓?&QMN $G; >$+j}J %Uheߊ/_^"`se`bcc z@AaV%FHp &}œ.(2cy(̢O.ik9IA,#8)O8ޢn'u>D/YN4gqZkQb )Egp@_ڎe>hP`9Nhrw̪>㋯LOKۼўb!z.zVr/.urQHyk@N6 {%zDCY:aE0B譻4~܇ ß7~Szmp=+4E_1q7vKwX; 6Nkh2W H\T>,z>n@ zDV??/^{B(0*EE?{+ǯ"{j޼C@n/DJzyQ;O%aiZވ+\_k EsvK z'XKDONa}8 ݌+^_ E?~GѻxŢdzZVZS:)W\Ili ԯ/E|@n.N"zZٳ^dt\%}Eiqm=R4ċ^m;D^Eoa5kV9rm-rgf5u܉6oJ7`5=>}"p6^lڭ{I=?#hRW`)O"z=@͛6R,Y-UnSOa{j^#]1)Amv/@%4po}zB QܹMtD)U8*QRJR̙LҴn&x,h=zt *碖-[P`>MX8{Ayٳk׶Mʗ//}GTD Zx;a#zO<XnyHwc5GK\§Iдyd(1^)sgOn[H=$"k)bL;|ɘiӧw/ڰ~N?whOKD%/kfFF֚GA[h6MΟG] D%荜nMϞ>Ǐ ,zoGSxT^Бe8t }QۛT4`Px-<4EOwhG:ƚN+vj8x۔.Sm L^d(9-kVrsuQD`m7ϟ/*n]8Q DN*"?MOXl)˗/yL۳KtKv=S8AD/ݺ@x(A)x[7@g ng#"iߛ>ΪU`hcؾIGEMc$g;ϝ9IN }>X4Y]\#=@=wg$>Ld0k&z~Fktsh|R2ΕKuK޸6TGqq^{t3Crl٨[TLYʜ9 +_y:+u}Ͳ;ATHʓ'/3pM%#w9sJou21{wڝ (He$a~Vϥ`*YÏ(fEmgS#v$-rl8qTؾTV۷'Q%Ĵ#mH?{u<^Vf9̜;s*Y]\#=@=ElJMB?DS~]F'c=rvIe˕󶼍noPojn٦^ԩ/ n{1=?L4Q+ ol_}x[TX ?=Do iGbېϟC7wqCQX6r!oOc)6[Q2e1z?|D"׭d?ckܘTB6V"uV.7)z֮QZEnk D/WΜ4eD%MgCOыXr޸Ka5D~]޶Oҫ2mtvD3;͔@A+Wxctmʘ1"_Βsදu#<<ܐ`.ЩTZu2x;3Z ~ג-[H߫w&),=9sBҠ~}:Yt\Kcf,~_jC xOdZwW>kՒmtlz?\3^5.)6&k,2v8Uf=@='\kըQCS`~ѐT=ݻQѢEeBDXk.THaٿ\Ԥw&E8gyvm/ֿDԯ7m*z1ޕ;2VMyˌ-3GNMkTj{vmL>Ȝ~=jߎ6$x.//Bѣ^[.nՒԮMAuP-꽤 7xf٦Vom6`p[~W.h5^mdɒrcmYN3EloWP(C#x| F3՝7m4y&e˖X3ZGSmwQpRhEo"NJ<E/RltR+aZٹa]ݺMX}ht]nsUy/z,9n{GDD-U/uOwyrrf_א#n.ھnRךy[4O'\L&A1a>Kd/sǵ伸sfˣt36mP8;^.",9Cv3K\#Sc>SmߢH.p=&z-,zȤxq:`ts|%Y^imW"c7i>I;F5VM.僆HM~+Ӻ Nt9:ys2ǽh5CA⿄ݴV-[Rc=?3^`BdxxUۍF!yUo.^sǵ}.%boѾ0#VUVgKۚ;^#ӷ6腼y&UXT۷lڀ/@=)ȈdKU{(] kj_e~e6h(e*Z89{lGRim~r-k(?G'o>Kw*\ͱSm@ʛ/I^^|ܻwVnлxi7nHckmE;}IpՊ >צ۶CF|ٳS!z/ѻp}I&zKaÆpDE|e 2Ç@K{C\>׷/+WdB~)sp(, > 2-Jy.]ae˖F秜9sv\/у ,H2ee˒fM"#"hȐTT)ٯyfJܕNuCst=DOw]IrÇӎtyӧUPlDoaTvmǎѷ~KݻwDkl93g=z$ADo 総NИѣ)k,t]nݺQZwv.P\|Do!Tv-ڷw9|mP!zwK:s̔/_>Iϝ z,m@'Nh)HzՔ豜q$%/uy1ESDO7uzs ʘ1#={m{-[6k> G޷_o/XD ѯ*UHkVjqF= ^)߉PL _K骼9l .5+9,}Akg޷թS[#0p[DHwڦ*z,WE݉|Y)1,ÇJjsժNjw y^pYw"xѥKg9Mm$hrjդOTq݆׽zbER9qWuf͚U*)p~ G,9ΑD(ɓիK{vJPGr3KAwl8#cZl)Q8ooDzh۵sH=|wM8?R*Y$fum^?xzzH彋^Pر#}GҖ +/=<.c8pu%6Eǯ6W!z=cD|mx=ogaeӧN-zDCh֘=xԩCŊUVѓ'Oh,ESu4WN+/=wQc+-{w{ DD6Dorܸ7l0-[L97E֜͛*jI:y;ܿDnE^RaaarرD~Izyy҃FEO%cƌTREڹW&Mճ')R *D=ztW0Y7w_ru:u-,YPs P\-BcPBDFИѣD YQw$%uvYǯ%=>Fʕ(wԤICnW)SLTlYrܼY[)aÆJ;gΜC{scYc!)S ]v-A Jݺ"ł4mTM~teYN] tҙ5j#Wƍk"Ǒ12_tiʗ/^~UXQ[C?n=s=I,uwsM z<ְvZo)aCiq4OFWg ֓߾t"e֬Y3FgϚ%;sHg*3ۉT٫TlǏڸ=KDOnɒTnN]kg4uO2dߝHIGԨ3iҤ۶uuhߞLlJ,Iݻw3VfiE nyIlD8J\{NTUHuy{Ĥ=Gw"z1U=wy{y(z/?\9]cBCC_ cXT?~W4&ze,F#`ȈR֬S6=rfΘ!N/GI.;V+Z53|28oIc`8yt "G"x.[F!Yx]til<.Eq};Dw;H`E + M]`k˖ ޯHD;*XϟڵmCA5 ={te$Ϙ`ND/8ПZj)-??u"S9A6E/֭*z?у"у <DDD^xu}- ]|D/_cOw7zY7J< 5'D/=_WgOWtt4QLL ͞1_hש^zThQڻwE}-]ʟ?I*UhAK4t4v]~o\Dm ';{\/;^KP:uXbj*z M2?u4WN+/=wQc+Ӎ/ѻybQgN5j(usr@nΎqڰv5H"RM8^-... 6L"y˖-eMQ5'z[^Fק';u?vTw"z?H,7noD^RaaarرD~Izyy҃FC%cƌTREڹW&Mճ')R *D=ztW0Y7w_ru:u-,YPs P\-B#Ǐ6['Z.Y$Ssʞ=טѣi"^Hq+WܹsS&MDL1Rio.5`7*5s_C1=]͚5e\KI2eڵk |^P%JдS{k2,w'OP׮]DmtL5RBƍ5XL.]'KUd*VHDqtM2y9k,"j|W{9ta0a,ۗӔ)q4!}lIJ=H')G z\^J$e;~Y"z*,wK,uȄk F@?eȐ!~w"%w 8X[$ewhQ Y3gҤI%ʷmV)оs\D}w2߳Lror+Z,Beh];EPYF-icRvBK'DŽ&zapTSŕ: n(>2"BTaYږmPשS["l3g̠aÆ~9r0(7*WjU[K뷤C͊6P;mt74(z, qqt,zl]dddgJ;>x W6׎-~GpdӪQ%^yO^`x uq}y7vVyjTv-mR1xyY10ZfyT2ڵm+%o*zU'gp s1Od`*U̙7o&'sN~_dI={vc"Ȝ^ݨ;.Zܹ9ϖ-ݛʖ-+Px:{u=g!: Ȅ%>}8uk.SуccYkҤ )S] g]n~`6uj9QEYN]PʕmtL5RBƍ5|̦x,K_Fᴢ*+VT>ϑ剏2zIrwsM 4pjժE۷+ gNs4axY׷/)/"XڵkѾ{d_y= '\D>~8:{4;z$d'VLՅ@ z)@^J$e;~Y"z*,?K,uȄk~S w'R|AAR.5j`|y?kL4iDm*eڷi2t^,m}{ GFDg$Z=K2/0ر8#b 4z,~4%ZU޽N0UD z zϟ?O {Lhhk7a GƏGŕ:}qdszU4BTXV[N9c 6Tˑ#Qr4$4bQ4-L^]f4SJ1:uՋ .L͚5䛊 zEEo2V}jL\unbéQf`qTJ7?Cm6s-<5i-NT^=3(4cxÇ4ۊ^py"K E7y#?tFum1y3THf_g<|@"##,?SpesעO'ǂiUpSSzу gd!z=Atbi@*+[.z, qq=R]z1qAуAуAу@ zY z.D}1/[$uyA{WǒtTyE: =s EO7uwYrn!z@)"|ҮEEEkۦ ի[<SzuenՒԮM~B:EL^i}Ε֭]KDEF鐓`,Zggor ~v -;._@qh;^r\ƌi2{w7-uEXҌ^ѢEl-SGJ0#5k֤$my)+/f];kxE5j0MJ 2<%růǏӄ Zj2~6~DxSJ.-~L궛zYvn;:?w7Ke,HբwS= 2$x{҇3=Wg豰jp21?{ӜGMܹ~?h+EhXF)p2~X={m{ޟm7%(pqzs_x^~1z<1zڶ5oTx^۶m1zR>uS%o1dF"{S'O,YiZt]e"ٓ)L =+4L۞Ӽ 4+Zڧkuۯ{-Ǒ;Vl٨OTlY*T oRXx)O<1i^: >\PESŋo%wK;wV>d/9s3ڟo{?Ҷ&.Tpa}[F.}>CC j*U;|Mgccj[|@ԥK=aۺu+,P ?u*z&аA}M*+WNʔ)+W,^fS0NCmֿ zуYQ3^'2Հ)SԻW/I5kT"1o"zK_xKNdh2jk OO<~~>{џ{עvS/Kۮ{S֬Y6`YrD DE" Kâ( ZNeΜY׍~voɱޅlPyVܮۍ?bd/-]<_ҜoxDDs3ԟ)ޯo_I}QZݾGHH-^=C2nNM+9Nժ͝C۶n܊%bЯ2u6eNb^pܕ/Y4O"WTZ(?KXH]x=? ϰuqbR gRIvsgZ א'pte͞5+Q\=^=w_DK|0Ppws 9~,cGe}J[J=@n-S=w7t#zK2cIk*\ɓڵmCb۵×/F7iB| (PD={ܹsS޼yie͚:AȞڴn%eJx壏>J(A˖,[0okK豜u+,XrE?Ԝ٥{(GTP9A:D/**2D_W_"`wR:u4&O(G &,Y^^4)stD[8D<ϫQ-LޢiFIsXLEztF5W ʼnjZj^r./wrU֯Ym@=Nf˖<:Աi5ϟ?詩ۣHm=z8~ynҶNE7Y߷G4*z,sYfۻ{Zx!˛WEPkEX@=wg$@r =NيmjP8e{v0*z-UPܹc{JY=/O7I 6_VXA D)DRoo+z${qM8"r1͘6DMMM`y12I]^ ~C> I~AϫU֋DNvkV-Z0I\K'+RF6دѳRU&芞Tys(h^FJVVҶ^ő-]ޘٛ4Oʒ% NE/C `݉)S&rI5jԀ%9E[hQUPJ"Eho%ꦊޠD6l XgNyrQB4%S)\٭߷:wH2ŲePƍ4ѫSHKUeiy,uKmƍkӺCDRGdH~M?uMsê|yȥWϞTLm~$ #O.]:Sɒ%EƋ+Fm۴h=?s;RQC7O.fʔɚh5__+ LgI4iDx~m)_ކӽƹYrpPfG{yJzZlmNC=~b9hjo2 G?|t%z~65$=V,T :v~YfRgI۵mK/6p:xQ,={1}͞ݤT_VRG(Rflǂˑ<^fY:_|[/KmDܬP漏c[|9͛;G;[>}d|-,grѢE i"x"Y(hM9ň%R6~8)Z8e=^rݘ"y?^}ޥx|A zI:B~Ԉn@Ν=H>"bу-Ǐ!CjժES'O sr@nΎqڰv5H"0FUܜ%-"zHc`bcc z=5Gq= z=RI@Z)..KOEatj(] 7NDk?[ПD8C ziw"+N̥KΣ^}|]E_?у&"#tIZ0gUKL _Ɔ̝M/\X z'zGJsc9r䠚5kR_ۼ╋i_hﮝd{Zp=~bc'PΜ9)sTzuڶukI&G+W.j޼]p>СCAҮ]zENjO?#*ULݿwWUϜ>E5j0MJ 2<%įǏӄ Zj2~6~DN̉ 5J3Oܹs2Sjz%?w!sq3/_Zl)L} 7eKЁB#\vd?VJNJqd",v#G-*pXW,]DϞ=Xa)cƌʽ~/~zi2N/gHvsqt0*z~F] Oɓ&W$۷Ǡno#zO/wA)/ߺIz"E SBG5 Ӷ4o $}VhO궷_Z07wlٲQ޽lٲ%KPx³AyY.ezl Ą#MNv/6nϥdɒO){~4`ʛ7/ϟ/[$~z%?u\]pk{5bp?uJ*&_ L+W$=swiEDXN[D7mtL5:u꤭\7Ξ9MǎѾ l I~cC ;}꤈ G ?C_T3,zc D_&@w"#,n{b#zS7w=r&L/4edȈo}yѳ?9u IcdذTjUݾ]q5ћ6uܻ'OP׮]FDѳ@XоYZ]R>E$Oݪ^&cpܺwRԝH>,\v7,sda3% DϒcGrxLa OnNa[}Mݮ\?nq*v8yzz()G{=s"?Yܓ?ͥn-O]8*ȑژGdo}f+ ݊L\֭E8?F\MڶEXF F͚5M z̧ڵkidz?ʕ4/d(u5kVsXti[moQ" S;R\WD㏩tRdc&zI٣;,X A]m_K_ȑ (@۵MQ[]8ju#O}R8אGMD,9%Had 2$ɓoj =1g>CcR כȤ>ED,w ]^TTIcY+˔<=iϮTnY2 >XTѫ_T۽s$GXZjiP=5i6С*z=w7jQݻBVS6TTIM.5L=q _ӝ\8j)UX8~k3FyXy/K-9ֻ=Rsvnq ;}iq E`i rsK{)gN~r{?#=t/z6GvkiYN5md ey=sށ Ipz=g'G93$z,Vjږ/B<L2fMnM.<9nzZeNW8jتU 98CX/X/NժYpEZ|DWxl nu01w,sc^ DM*z+W,ބ$ ll2Fp{̊28x#ss"e,z{vƏܳۨyH~zdc*EGxp:˒goҤ ɓۻ(6&'"UY@rzV( $B:wH脐NH! E=qM%|}fvg;Y)^9ZqYY޷^fM{r =gƉ~Cm _And"ő(ɸO1cc-gw=W,όMn*V[=FRre:rz-{[0סSZp4Ћ<|fYu؜AO?}Z7{VҰMyEnά|ƚ>1 =@۷}h bfؚ@+xtQDWi?@݇,Eu[&='ܓO>!חÇ{'IP`l*lO[=XCUJe]Лo( ==U? YUg?m4֮^)~>y =嗯lf>.}L0N,^(yٲi=ɨQ#9Y='09*2B7n,f?* =݂)+t'z~*]z_zTuz=2;W:v0G֩s9@B%0ʕ*GlѨ'KQw$U*W;*TFOz͛=fĿߏ污[(Ѓ4#u?;%,^^Cϙ_m D=O*[ i_+z4݂[u]?=GԹnz7g'@ % i4\z=|>&vnfXb z޲t ;BrO K5'cںw%j"u[n wB#Gz#=P0CoB^z/5EzBpD-B$>v(H98cL'!GCoi|[/ rEBz:?z ܄˗ =੡i C履.z37;GzGcszΧz(Ez#=@z ='^znNw)lypz 95֯[.Hn6iڴ,]([z}~Bo`sz^~9}8d.^Tzن[@ !˗.mHZ5^a[z4l0]im޴+CO$BBϡK;tI:m-N]dϢ2t U&N/·TRr=Ȉm>ڶm+n-ʕ3}ۿG_B놇3/ܹԮ][J(!5kԐ^| E:z)). kViUz#o2ed:t5kq:ud)&F}?(3溡[W:vڵjԩsL4zűݤrJ03f6y:M#G4ibtj֬)O?^٣烥|fZO>1M5hptMҧOo'}6N^|x&+ ݆U+KV- k= ?2 k]f0ôljmzz[.2eDYbtx%[8i7u5[M$ʧ>.Okƌ薼ŋNQ&twwۯG 7?@[5 tm۶-(¡J.%BW^164޲;C/E5t`\szpYA>44J.-3C 6Rc,ի/m}8-ߵyFiݪ5?^|[4KB/ӫ%-]l'/046_k.o޸Їn͖<~1)V4n8l2=핡CUT@s uy =5c } MӦM;{Z4:zV-[}$ 7_|ճofsMm۲\w#d܄eX=}X(COn0^R%ɔNn_:GBo @3\ L?!u1[ WfOsI^={ЪU*3rzz^,UT;*TF^ hg ,>8@yB zKHB"zhׯ5Vwþ51p. =2@nBO)Olq-Л0ϜDR]2h`q(Hg}-WCArN%%&\C׳ɶ@#=M%Ei2z 0RMz#lۿwL?<"'zivΝ|#aݒNJ\HT̛dz| G(}Ft8-y 2'(Q'z/5Ez(:HJLف3m;nqgŽ#PtBu<t z [ s$pT >NB衠1=^! =m\fClC =f=z^zASҥ"zW\1+?fVy^Lτ1OB=HMIiS=B}ΙB/ Fл3B L?v Wkjժr]|Y~sb:uJk]ygz͛7KͥlٲҦMYbEف&@z֮-Xc~ޚ~(4i҄ Л4O x?}r-2xIbmXVFVe5?Yw}l*JN<(|tMvZCJJgCTBF3~-|3>c[ɓRR%O=лzjJf׶m[OM{wYfKLOZj8t?!`ݗOŝ9-xCU*UTnݺڞ'C?TXlO=w+RwyGW^x>1RRRmWn}{!Νh|7nݺRdI{dݺu|hhۥF[o.]Zz)wq+Wζ&.]nlw۷ԩS?/?K>}ҥ$$$)⡗1t][uvx9HM8#ިQ#{]i>Yt< f^V[:wdVǏ5k1|3tؿ ZHX0t\N׎;LVttsN3/cuUڵk'O7Qf͟;w[dРAb Rݏjƍf߫!J-doޞ]=zLtf> }l+V/^\6mörm 1%%宐ŋLs=O?-/7tƺ);4tBBwiEFmۮuxۓ'O~Sli;">u+͛ϨIʕyx9+rZ1ӣM19ݯ>7 =B%C}R//[u[t?WBoMKQs]IM tƺ75M7:pDu>ҳG3LvLJHE^ j**Tbm>^E]ey8"я7z}XRm\J(!˖.I7}ef~Sy. W}YxX_>9!~ΟA7oژ-iHEO/|9DЛ2z O_wٯʺ6u}k~izY_n>އ#?o7Ç7L7޸a|j4?Oƙn)(2H?{m_xN1Vbio0{拏't~S}nf`{&t7ƍK><򧡧=zJ6l ̗#Qօ=9}Ԓ%ͺ0t>9ݬnh=OӾZGumW_Co≮%+I2Ϸp^ڡ?5 l=w7Gl[իgy}}Yj֬iV:MWٜAZz5z#aK_ =:}x?}f9_癝La;[*ҳgs}V>rvbue֬tmP~۾}Y=B~5sN䭷4Yd _^sT.f^VN_|vW-ZH2ecʕ+~ l]?1^:g]ze^J)ҋ/ͣV駹iЅzrs|۶mLx%]9$m%_d:tJRV-[u:u)&C_$*C#?YhCKNHz`'C탊GC/)){?,իyfbV}6plǦ gM_l޻zgۧ5 1Nw.r]d䉲j2K(/+F.At"~4؜zs =Л1m9 Lo z;w,Vy1$ƟaҥKb[œFzՊtCVYö![7lqö۷mv}LCoqBAf̆n7>zKz(?_w ], 8z| ܢh^,3 =6h9FNBoߙvc ^0C L :x =O?c~pR2uy7%~` w^ou>J1#ݡh ==x3+<8Fὡ=ҨQ# 9CmdND͘>Մ )az.ʕ-+_~>[=xkś}uj}<ԓ ==Jn3GRJe{79[jIkCO_g{sUC@#Pœ@9`{ A~`̘&zd&Ə͉Ӧӓ~J~ȎhxpdglwNs- ^`j#Pt$K4+ӧw'2iLS̘fv@iΞt}_uvBo`#P蹝[HtxnzRHigz"= }RΙSp"Sp].P-_Bz(G"`Bq-F>?iSe0H^Glۿw9^l_?8իWlMeַv4g;p{8H3aG&^<%O#1ޑH7;Ȍz$H98c ` CA[N`KGbB'O1RzK盭o ݲEE'tVI2;p*F^Tt"GE~s=z'?t"=;fG+CgG<xyO#=лzY@QghL7Bz sԔ6s?Dz sAz^>$˘1G+JR uo ?x ?+,4W:Hs^;Ѓ]=Ə/͚5J*IҥQFҷo_ }腄H֭[o:uȷ~kuvWiKzE4}yeqۻ8_shC(4i҄!&+/,{MʤId۶miű|PYHٲeeȐ!-#|w^ *ȲeK]V<_m7vK[=xw!k׮eYBOJw%ݴc#~쨡^sjid0]{vkVE'8}(V<)11Qް}uƝw)|$$$ܹseǎe[ 2/fvuˉH^^zmh@;x`ټy3n A$00PRSS%,,|/ = [nEƌ!]iFsimݼ˂hroѢYyN>>/9`C/GGEw-ci -HA>z?[k^Ӏ馛dCB̴sIN =ٵkz =.^`bpӧOiٲ9 Cgv'A4ɽ{CBɍ7hح[7xvۭҪU+9[oyM_ڶNz3gL7tKC:\[F 4l޼L(A͚5ӂ塇!/k ^VzYYJ=k|3 wW_}šۦ&l&EgޘF(ܩ<{W>`P?M?z:^=ʠme:t#D:vxY*Wd_۶COo8x=/0ӬЛ I2erJұc9"߭ĺ[XŋzY7| [)Q}Xں# )ljވWZd[G/Z_I8sj(}n#:?euZԟ>|/B.L:l{u)ޢЋ8tЄ8?_zNƚ8a\+. ?}LdD =}q8@֯[#֬4^Ҭcf8W+IGCxKVXjS e=ܳfnnK{O^~%s(z:\kĝloݶcf==@C>z:j/_}l[2&c WXaSO)Ժaڡg]gN2o&죗EV,s][41}]G79mzFÊϘ1Rzuy睷D`k" =/> ٳf۰ag˳<CYu߯C ih^u?ԋ/Մ^aп4l Gm|u ݹ;;vkYV$nzdv6LSlش ]9?Y=o1 ŋߪ~"@ >m]aҿҰ.,Efso>@? 5m^/4zvk~t zY׍#:G{?D;7wnm;KzqIM0^n5uW7VxQ+־Wp(֬^ym3-ikVt(>Uvxe3xV2_ë:LvhE7Ls'%{0uIEMb ]BON? jUi`-g9 =?o,C:C~dzy^zznƍBOfLbOPYO?}'L~cG{0[Лo 0 fo#WiGo捆'}=w*n] )'ʊeK}o쵡תeKg{M7׃VBU[4fL4wozMOxW>] ![zdnJW;졧Cz7WԘBER\.uVϝ@Fs!^BB(js; =`m҆^-tM(s=rG xsz % y=BE+up-=Q ey=BE! ׉~V0cgNLz(ZReOXL?N7d޺E߀s$^p!9|(;?S=Bpsf3sT3t|}$S&Mp̮ȿlfy%]KuMz@鹝[HtxnzR K=Bxe^G/ #=}RΙSp"Sp].PY$xΘ*ӧI=nPi[(|~)Ӧ]afЃkz([kΣsD~W?Nv2];wzo-yyDEʼAWB\]:<pĄՓO =HJLف3W1zۺyo.ݢgBqB\zcnj" =f=V@Ѓ+W̊ :+\EC/h?Gx[襦)ly>E8R =B/nRJgnذMQ]a^z?zǎ!tWlϩKfͤRJRtiiԨۗBz!!!Һuk[N:ߚ} =B-w-XbE>4x%zɕ˗J p޽{KӦMeҤIm64X>(Ьjlٲ2ds}ĈJJ2G/@m>=GGEڧ9}J*Vh4ݧȇ3d;kײ,u[tnرcG!=^K7ްO?3/c޻Rz5PtIN?fe&yuk)WM=׭[W\يx]wɜٳtcҟcq15|ط裏vÆkٯPvɒ%8tQܳG6Փ˗'&˧IZ=V+Μ6˺Zf\ӧN鱹;"лLڷooj׬Ycq3MN_3[؛oi{u燆J6mo5j[or[BW^M}r4&OOzҴi԰;*UR6oژi|4klܰ>>APpġpٳ{]ڡy3ؿo %} ,t^HիV=M}\9=bDڂ3[tVϐEe=wh58\t(xaܹy9~Ѷm[{~|"Gccz?+x8Ubba{-iy7HBBB̝;Wv!QQQ2h :/ftˉH^̇0g>0 5G9%tR YDDJ70GRjUiiΑyfglݜvSVii#)S&~zyf{W ͖Cz-S=Fs t3z9!>>[kVY/77mD`ӥ\}4hԬY>-((Pz(:BGt^J/4zxAaV=ϴooFXp+r3Y^}n|#w@l#SğoishUb-Q}nq~~f4o=6]zd3}\yLfޏg 켹sU˖Y.BOM"wfYCMݢof0unGBo$[襚7b- 6Нf1~y|}]!:-} >ܗrF~Yu# ^SآGh{gI&db5M#myV:̨[h4^uūVO{"ft+ǔD[o@Ff_?_<ZڊcǑgtUѳu=c>z& ,,Uk]5[u~N눜^٭B/ݑÊϘ1Rzuy睷DKz =B#tHEwڵ3ÿ}՗ٳf8O|zT[H<`=6]&iq2QX>l~^COOMzTcԺUtnԐӓՎ>6OuM,* 40*U*?.fso#UXh:ͺޮ_7Ve5_"먔dܹs[sN8Fh-&X3CUcW5IJp͘6RBU#zDq<|ãGY {C/0EzDzEŋ<}9/^BSBϕc=Bp_%BO@Qg+#zAdz2z =B:b#M\KO;zG9(fNPؿלlZKN=a2GJMN=aa2i8 ߿ߜY?mz;=ɵdQx8qH N}v8B\/\Y̜> '#8_8ɔId*"`4+o Y^I׷#s;1vb4K˖-d[ǡ}9cMNE TRr=ȈԔ\=^G_ sC/z '7t[g 21di~FoQ3f;r6~Xn_?_KjUJ*f~no_;V/ŋ7lUfMyz=|G]3>>&,oU =^^x3WXidҷoٶmy<|rhuiǍ3ӦN[9#ixǢyIs=*2{oB/eG95?gw1Hx]uV-f5P~zT^-?mTe_8N-eK6aiݏf5ܛv#Ek5>ߙi@zN=0?p=Jw!!SkzÆ Q^3־11ԩU+Wi/DGEߣ{lC/4G[̑ɍ7Ft(8td@zN=Gzx]ճgm&h>:C웡C>t 1Xi3~dɒ>_{5ji+/7Qn]5j_2ᔛsXKӦM;Z4g̘nMfiO>TT) B+Dn!ZR Q!CUV5G)/^^ˮd}6Y8X~w^@z(衧[4\,Y*ӦM/7Ca =Z'N-[JeÆ ^jJ3Z}QX*UJoP{]3?6|sr 7H,G9>tU?^7o.5jԐqח?>}yeqۻ8c 5RP_J&M\3#\z_ h~Jz{6[|||uݒ9^ dٲY/街 =%H4+1Gzofɓ&lb& '| .]DΧdEnI]~3oHjUJ*ҭ[W9}ꤙ7|ط汦O}ٸ3RdIٲySQ?޺+WդWϞftM͝3Pre)Vu]2gF/ߛUf8 =].ڵcGc)>3^lYV@zE-4y_Fğ'9vX|ǥKЪU|WrbGkؿO^ 6;w6mcGmCNfiDGEuԑ;CR~扝c5p8.{vJYm )6nʧ⩤gr Gf[zbB7w~3tYV: =Bg}glx~{EnEfӲ-[6ˍ7x~ f+ߎ󷇄i[ ~l ݬ ˗ŋ#~>>շo[f͚&U=CQzx3orW=wy92VcaѿGƮmݺu孷޲/WC >x)4^@z(=z=z#=Bz=z=z#=Bz=z=z#=Bz=z=z#=Bz=z PuB=@Az(މc1Μ>Iz S'zFVz @B @B =@z @B @B =@z @B(w B=PYqGzC/p4BzAO!=-qGz=z=B#Gz=z=B#Gz=z=B#Gz=z=B#Gz=z=B#Gz=z=B+zRBzzkW -֬\NB;BzGB#Bz Gz#=Bz=zp>UΜ>IK?Jj9;sJz9"HbY9ʖ=J5~輲#'YΧRּClBBޑò`,9l3OJtq9q<Gcb$H8cG#%$ёrN!QLCDE% @[8lz(p4"h Y8o6sd颅(V.[,/3Xf"0.[p-CC(zru0.aQ 2d 3d˰mQ5,zCGu0ntaB^QUf2d[͟0fd<2"^$&I Xo˲vϲ>$G%ٸi~0N"lOB/!.N Ӧ# >?SHp o\ƺ}^{IXD,xHNY% \;bYnK7q9ƞC/{d8?=%pЕ+WHa4Ovl8uֽ,k-ȣ )T"bϰsȓfr<Ћ;m>FG!:̙ OM @Xo˲v߲ ?cHin2:plػn'1!Af̔c1^{Y[ֺ?o,|8"mz:ς͟Do{M CǺ=^PtB # /:Ե^ucnrsBw(QM CǺ=^# Zm]`zz{z,k^Qre]B+o!8c: WǺ^z\e僆7SVzIjJ̘:@u/}˚sRT\M\QB/<<\~\+/TBW׽,k-kB9z|Ǹp 7}JJ7wŔvvUtiٳ}r[nr%l&OGUrݻzjiܻ֬woywMN͜g\ҡCtcƌfֽZֵjՒ%Kd{=zH*UXbRn] ϻ[74uW$[>_R,(]?*{;B3Ըqctʕ+L2&2]NL蹫r .qnOn }R~ҢE پ}޶m[y7}4|~yٿgBz\vR GכO.֡RJIRR}M2eogf{sʎ;̐A̲ 54bbb֦zV7o.7nSN G3.mfIfΝ;gKڭ}V>}5kL=zлxy.'O\GݻN~ټy}r˺}VӶmj^T.wvζ, = =W{I:Qס'N7[.\fnvډc|=uŲ>u83{3]v!!o]7t-#GcY[zw3c-ǟ5%&}.#6kVr-2gl<Υ87M`^?]R0ޕYn2NN<-նRt\82>l.]JlǞֹd'm/Tr%]w8/}`lkWXhqzm)sW76ݴНRT)?zӑUXQFŋyteɽ+gNt.o=q~f$[^izY3eHw,k = z~̿J?{[ˬqcfzeymOeD!<~Kҹdp/>sds=+M4%Ks,?>_$ƎM3zSLӧNSf>]wD0ևsfǯW~}tuN?SҰaY`2ytDz^f/>4~2>cƶ'w$97ә\IfXhCN?&o9dӽ5f?~*}XRwIt71+ֽ>>cҭ8`}I,k SVIBR ,'87fΘ&I |P=٢ Wֽ97^m٢ :@{}Γܢ7|9ʏx^BB_q ic~ .fIDATx\U=IsJR-3SsȽUܕad \-2d8{?^.|}EƆvAFO.~}?'߸q#Rbb"=xpTEΝ;t +qܿw>=|ddfϞM~4`jӦ }"z@w$at S!Q}uVoВŋ;r0}ԺukzWiqxo"zl}7OdKHHGҢE~M_:D...E;wcR||<}ԥK2SD1<hjj uԩcn+n>? ۪UǏO[(H>.::Z^+Jp3gѣxt"z7_*H/}Xv{=E?aٓ1哃X'd(((H}zӉ'D0]^ڵTʕVaaдQ]}x ѣ"+>GU߽{W9ݻwx >>n{s"z9Y袗 *=@@rqz 4y$jڴ)իW L$ElezMdfO<Q&M_ ?oEX8'NOקڵk+!԰aze˖ir'zhС |^/ںR}cթSv  M23u"z,]6Z)ߒʞz}KIr9ÇQ֭c{ͮdcmEΎw%p|:JG[/ 7W'o%e<7VT!$zիW'W'EX69qsl5ETh`ԨQC5Mnu8hGUT-glX`ۖ԰aC5svb/PܱC3ٷP۷l, yr}tRe0q1b_ ! MXTd̟Gn. h DmڴQ}G~s3x=mD_?266{vI!n=v=M+z[0-JGej֭ןkhΜBڵ UD 7I낦MRJzVmYoSg>VW=.[N-ZQq܋wA/X>݇\>W!zE|5IgƜ]B^)4sJN!&M /\77!"sըYV"h_jժ99Ds zDTX9 WO.BEoZ^sWRҩQFy=w>[^>}ijNy;D?KMI&PD32~jբɓ&Q۶mFԡCrww,,5 ڔ`EVt%-4(zA魷,xow{Gl+zIbf͛S;~"]NNS4Ns*9SǟAEƍ6GJn򺓾O -9/L+ZL=#Ze76“&#<*6~٢ȱچ7nPC~d"bΊG>YUnLbc]W6Ύtgx{Fz.=-M)b+7KbKٌ\[߀P̂S~}/:GǗ).&=F>̼ehs|HH>?9)|SĺXx~M_zR)%='58S`E-+)Tdश!UK)4}D/''[ǿƌM[^;`m)Do->t{v{&MzRԫW $T"y o @^][^zuEǼK r5lPܲ%mٴA=58O豠z 5iX%|gu  jF}Yw/dgAʙqݘī ?Dy 6G~R e/s}q%92Ux[wE *HJYBwætUqb?85H,= E|d>?Mfںof̢~}U l zt?:u X[IЛFImڴ)27e$zAl'7rqj<>q>~3RRڵT+GwU'i;o 2T ;'QF̼eu_E f͚B䲷-︗ьs6;\sOcdimGpQy { tѢ9y-#@ Y4mSe*5jЏK'?Ro=9ğJ0,;qt&+LƉ>KShp ޹5j&zn.Nn =զ[_OuurżM,s|䝔Οٴa5l EjYmܸ15kL9Ekc^ r~ǎzbm9+tZ&Ϩ_Q]pF|5JL£fǍ(&Tf2:O~T^}V:jG21ۯVK//\I۸}N1rvys#\8S9lWHgs6Q2~W^rȢi6GHA]TmC.bO_n+~h{qIGYZ֦BPbٖC>zVPDoҤ+hy{ }{5Ӕ@ѣ;xKxQ=hc̟GRy] ^ }zFB \nN{vl/YPGNUGx,yQjV1 =UA᠝X%CiYcG{A!jg z=JmKM45rT<=? QDL!mWVуAСK\XتTBN%z$+;d$VE/5%&N@͛7M2~5k֤ロC5:u4 fЬY3Ȩ95hЀF%m7s~/6UnQjjբɓ&Q۶mE:=#=-\H-[T;/M(=͞=Zj%sk+ɹ>.4ʢw=T=WADoﮝ/zMWrݳK<0#80@g?}|}}N>z_G^^G}J~ȑ#Վ(:*bc(̙-I! oد,+yzxHpsjB\mΧ0e33Bڷolg9ܹN (~Mݻw#\\z/\@tآw {1=B衎iC 092"F4i"2}5kq)' gO,-̅A_,TF%ТK,  R 8cIVr_|]Y2y*]xz„,o%9Y\^΢իVY4qqTqϵinYܹ t D,z#C=aWYu[VMܜ*7Bcc4Sř'^NRy3j#z%9Ue25 ?&Đŵ+.E7۷oC 4[n!z+z,R0>C+kb}TdD=r/is>= DRxkuo )S=׻go[nC 4Rz=G)Wc 6L`ظqc<~ϩk׮,2|!`P"YeqDOv\6_;r+׌鰻8o>®ѧ~JƝ>zWh}Zh!Fvؑ}ZVoƌo%##w[nZ^QÂ#iIGU$_I'~^9jF,c<_rSnQÒ%׻$nYKY=[ zfC/[ z򉿿BWz-sXn!Eu~z}͒O]A68HX9=C2 zl|z!$x,/:CP^%'K%Åq (zm%Q Ih%J }mifjP%-ד E zZ5BPEED[]8H=yD}~*$DL.WM- I&T^]⋁筈5N7z>_Ns&%%> g-|#^ffz裷cVEo]ڊ\җC+׾}{7,nan~db.TIW*"EK"WfM=`M~ނm[6SÆ 322eT4b!9~ɯ zNe&z%m=q̳ #aW>l(5nԈzMA@=a"zu݊xB^:zC@AăD)zu֥_WY=އ1ݳ gC,z?,YD \Q@@m[6rԣJ]@~PGY\7k !j}zVD/(ƌM͛7ڵkK}"zSbjդmhhJ>| R{s:[A@iz11=4gmiууѫhHfaO+ѻ[Lsqtk=2 7w(fbATjnD(eѓW D?|/թSG Hҥ 9|Xge 5x)(듕N{vl/Eu~[B zFXjիWO]!zW8ууA*1m>I&b>mے̞=Zj% L̉Ǩu(>s~OFF*\w͡Fr)4q1aӦMŹ%_M(OZnZhIu:t ww7e{Fz-ZZlv^_sMץ(޽{PABUۻk~DgȢ gfV~!A5kPdfد{Aߥ|uRUpPe^E?&doQtT$ƜQ֏=+2L~hȑZ/ŜRվ}{eY3sN";9*T {=Wm),\@\/ݼy޽t D͢:B?ddO<]|A 6Z*8L8/] aKOKb}{]@X rϧZgy]Vf֢ϗT"93fզ_s-1Otˢwmc zh=!SЛŐ5Ŝb3>z!{1 C~leiIo&5h@)3Ts5=}t<{>񜲞3O-Iͨq׫fYx]\lLDOu;\6W/ɹ䘧==膴|-c zh=!WM,zv֖hoKV&di舲=/iWvl.9%}x9,4Dcټm̘ԣGw%+{NeqDo/^~gd_"c}}^6Xmѕ#D֭@@,z#?M\E M;~h=OM6jJQO!zgcyj駟qg!mGG$zMl͚5q=wV1Ç }|6nXe;㲹8glEO?|8flLE,KoarU/\ׯO۷mS+c4KI=\| t D͢:B?M-LMB {0[6o螼rXٰaC1x%##E6XFF%FHPL 7eJIٳBmݪdxvM+c aƍEyS&OVk  &U ˣVui+z)WED#t?KgQ/\XD[~}KIFݲ]Εz@@,z#غE?M[?1 C[z-sXnYPG׷o,%E[d!zRaÆ" +:@!:B/d[\jtk у^J@ s1wݺR=s}#nYPG臌k g=KC z$2x\۩SG=K 3?fCүK.]z>C>zu֥U+x-YL,5jPH?D=5lؐ7nLGz2޿#lD 47!P~#D{OǺuPjը]viz4[A@y$W ?ɪQZ'ף7k9UN3qeDڞD*]K_Zh\?w-zOGoߺ$f:@~dajBsE\} z=`3Cr/K),4XJC5PQo)),}_$]BrI+4!n;y|"=zyD٧BBD:=7gG1>D 3ʿDÂ@ %Xڽc\nZLK// g頍1DTrWPK#SD?|Zq?:GdYW z=ѻ"p@ N6mX+VXX=¯ z=у!NE!zW z=ѓ>?.^[(%۶e'ӻ蹻@ zEDÇ=xp_ ^WDUD zQ"CU;ѓ?~p˝~X:C[Z; P۷(23D?Cs&RDh5@ 99%$#6Wwkrq$'s#tQk! }=;kKr%+s4tE /P:u矧.]БÇuVP"M6@@J"z LrqR5LבZ7`҂ESD=WG{}CӭeT%&Izs^ի'_>~˖BD'U~pI;y &.E~\:FA#F+޶b"ھs$}֟Y[Э[7!z.zդ+TjU_Uסvg sɷ?!DޞwsizMx5kѬ.=&;wnC z6֥"z:EǏӦ4iBժUmےq<{,jժh03%*H'֭[SP`7wΤs'#b?ܚ5kw͡Fr)4qj޼5mT[$RyVZ4y$:jԨA:t ww7e{Fz-ZZlv^E5/L>j׮-΍oAulݲEkZԵ[̚5SlG%}n.KLeѻZ@ RV-Y+ѻGfC?20MY;'~3sT>۷{'DDEO͘yKEQB^j֬ر_SÃ%(^')X^5q\psj2˿Qtleѣo߾"׏F2)]̙h!۷W@u܉\]]v'CZ/ ?F?xFؕTl7#i d,z#];tk 3`ѓ%&Z*8Svhĉ}4!|CgMeۻGdT%zn¢R+B^Y.mEOu/UREsWzu!`yXBǧOzM6cxT0gKt C ۷ok-z|-S7|8暏GW4qjeMmI z-z2ŀ %曢P)3W,F7j,{颉|9e=gx[ʛQ W6lؘv.̧S}umXfa6j+zk~[C {E=tCZ1 2' QQcF[G,q%Szr%7nqܯlڊ(pzؘKEkZԵ8sڵhfsdq,n=@F~ZPZ*ZKY=ISK aI舧tKlVJdn\mhjeq2ej-B=ZtA[6o}ŞrPڰaC1x%##EJXx'㑥.Eejc:qL(mڸ6hl$~,zhe "7{0Pn޼IYYY@ɐꛫII3t=unnv6 =;wPLT3p /[ٸ8XO"]1CC(--Udo3 8* >ziQ!w =Ǐj։#ԫWWyngCEC*_9ˢ(YX?>۳ ʔ۷nJSmkhv>&啅󾧟~X~+`iݟlXm۲B\},,"D4r:f-jھL$GPl^K 9eI/zv:'7*p0ӊkSYIW=gI W 1 cyE/(OƢc-?Ozj"e D P:pYX&//|os9}4)WɓLUE^, :A&J,z֭@!i;wɓ&*}x*I[2^ɠ]A!oSڿֈ/>?}wNGA[ڲy"zΧ=w޲SgzAPq9Ekdd$o:~Zbѓi޼9}tuEoot="Xvm_ :6mOa2T&ZLMvK.=-2)χV¤Zj*k]BDjJ )ɒg\i;iΞ6ٳtmDTvR(g‚p+ (g!yC[vĽu.z.=0$͵|Sn@?cycin0\<]|A zpDp@ ʧ=z(+p=wg07яHBbM1g"A z@ g>|FHHkNwgXW/ggmId%=># z@_hE r*z{Bpp5h@c)=WG{}C-2zDQ\C ((6l(d,''[ϏyOJU ݺu=@@9޽>vܡB ]w5Xs&T_}yUDKLL$##QPD4պܜIOFgϢVZQ:uhϔ&sSw;M>yO07oFM6I^ݺusNT^=T56i҄U&2H66Zs8~ZnMA%jUM4I<5ClMFFͅX5Jz_RP>2y%S $z111F)))jy^_~/ݽ{W}QO[RSSh-=:IW.ر_ Aiٲ%\BMB޽{ws jYD~7ؘ3ѣGQ߾}EA~hȑ%=4!z-O>^A.ij"sE7?I!hAA%,,ŵ۾}{e9G>{sd St쨧mziFE/>66q:no>ޙb;+kׯ_듒@ E]2߷[k8cfD`X6mHSdL͊QժU)..Vf̌tqZe]Wq9 vl.,|>ڜ7o3fhV3[Kd|C&~?[yH׼G &/ϊ+hر@ EvMk FSE*z԰aeO-zdq>' =#O2@O!z|$?ΎO+ b\2o™_WVOظ3r5U 4X`a\}yR^~}ھmڱyɢ͵cnZ @>fyjy[4mT(yGkܵkWrqq>T\CGBp9$wDT*YYYte:x諷{neX׸U:W:eΝ"SU}Q]k˪z2mڰEe]4mTdq10DX|NT([x!Gƣcý\q2@ ITTqqBy$(x M5ςسg}N49̝QA/)y'=+Α%k+z<ϛA/;vA_|l&,ܩSGQ@6mڈA QqOn93Ոb#7iݚLUDeȨys5rYÇ Ӓ<_:nՊީg'y%u{mz"s5l=Pjq_.((sۦ&_U<2TsGglX?豬9lݼI1BiQD5D@^V%]5W.]kה}b3JO?^'k+K G=Dm-ԴiNU%bQݺu!Ck죧Ix1#}3lPۺy7sDoy{rq>D?/IC9 =3sf @ OدX޴0ɛǏVx䄳qb>}z`Y86axq/L ۡC{S5\Wᑹ<ڈ֭[+0xFƍE3;4r%=u;f(jڤ 5lЀ^55٣-yru|?@Zg:'*@̤ x1D+DGFPdx8 wHH8Kw.]-IXvmukm_Ly@yoZ4.͟;@9Ea7o\'زyܱE{62ݷ[`f/${˷5Hnnu%z?,YLZrg(?D2ɓL ͩo#z!Abpa7sTn]Zx!DeFEQTH;wSؾUL͵ڶ/DO{R-u DDDу#WL̟d(׵wsr(+3CKlϣآ* #yiג)0;&Lb&ן\EջY%,Li:cdajBsEb$!3B z=PoN~>◥,HKCz:]v TT[jJ $'KW+|D͍w.*-YĮ\B/^]>D@G۳c{>nxںc59^)xf"=^|'Յh=URNQO[pSQs!F-z Yfʕ+Ų,b;v}JN_+YBվ}{ZhٓڴiCz1|z7_=zTM#Fǿ更xbiѢ(?,, JB碷jZ<7c9iq=q@8x޾;#z:ǏEڵJ+8*zGO#zΎ"zIbدFԲeKZbɢYcƌΝ;)p=I޽Eŕ (MƠtD/>6Vzt)5lWR,bg.PxyB9v…|www˗/~}Sp]… m6k[)էڈOE*gӿI3gVE/''@d}NO20;- ԩ`rwu~Rݲe'A aVyz豼xUQ,w6m)djl*U(9jժ%$ ;[jҤ w(z'N}6yN&USC.k\$zyGQXD tQ ("U@ ذKWTA$)&v$J :! %@ٻ2y'3gΜy}̞2>|Xy˷7LDԿ%zRuĉ]fXvOq+kc/*E^qcFf=IlzoKRRR<ȕ3ѳ^jVX!oLO@>!]t;w=ĉSvL7nqv&z3kez5D.[^Iвl=4^(0üK/,zK= S6%a 5o۷7-۷-p.7Q.-7l]n77Ֆc SY[.4lF=G!, Adֆx-'O47g.uwK:k[LRI a~]q\L~.5I(]qogn yʕ_1Kޛs1\; )~H!eײ,ޚ(3)6;D?D)&ܹTPA)YѢh)66V4i~ƍD/E0aKK(!EBgRl! q%KTD\gEOOƨQ[D4%z{w6nFDHBlnϞUԤSEoPo%v״3"y'NTqLGh:=DL–(TA=lۥBɴu1/DSvG"z;sC=%t{gwowEoܹ+=Q o*.B[Dڴi>_]j/i9իTVMzMST>}zRgk.Rr%G YsVT~!IZnT^]"oW/OU)*U*]vy{{gQuĖuҥ?]ề>vYՖ!.ziEo]pA?z9)zvbŊ)S$9)Q.]Av鑢{U͛?.Q>#iǎUR裏ʷ>>D6l(WS'OX,G3Fc.0a"L;FDl;o_ȟy )"o膠[ d'Dc=&:uTg4utw!P\shYD%]{"zh~4?;hRLqԴh£D\@LLLAZlis$>B/[}K-9 f]… [x.Y*h١C{ԣd?,wluN<#!2s~w*y:aYV;@!GCga?'AK[|?5PR}ߏ+V( ģk9Ơ,C?;lm,3m} ʌU')zDB*l0obh7f;=Aġ/Ft~@.0Z}=kON 0/_^#FzTr=>q*bTAJjժBZTTCP+޵kЦX"B@ w2@!ăEwKoq^>=Kkc/K4>hZ%B(z=z-!P(z$J&2BEb$ѻB#y<;ٺuN=!dŜQ!R E8EB!RA(z=B!7[yXyϖɄ=!Bе e?_y4i^iӤF䣯I[vIII'iY4:xt+OOJφ_ #|+_j +_c|k ~1;?2O~'4'#~oQ?h1_d ~Id1aL/5/S4 __2s̚/5fY&tb +OLB!,_DbȹIJKBE|$HNlh(3iE48sJq>8NP'8u☉#L=|Ђ#_'W٣8Og߫KoN`="M صcG!\3T G#BH>=_FѣB!GKw>%8wB!LQhpx )CejD5,BHyJF(z)z8.8<ޔ&3gΔt;ʇG!$Ç(z+zٛbccI&RJٸq!KtQ&L//+WNJ(!5E}fGdi^jޅn;FDlB eYyE=lڵ\xG!3D"u}MEVti=VH(zo߶=A`XO*oo/{얢EFE47OUB1/Eϝr SVgTücǢ(zB:?6Svl֭> ˫r>}a= .z˂<]̟+/J uV)zx6^+Bb֭[qY=\ٙ+6lTTIFeZ7ސ#K>zqNp[R}ߢϞQ[NM˔)#S&Oy)0WX!{(험"wz=fLWtpzo>.BEϡ?uS&)CiS-DoI4H6_+=B}x%z Ⱥ5l{-ߕFt.hܸIWU+z̚1#E/,d8F +ƎqcFJxhS4HIFb^{M,X*TP z*מA1Ҵ&ǏwλDro//EZ笼j.rQG2+TZU֮Ym=pr !PrTB-}W^q';vEop1fEeKR˂y4# RnӯdHϢ-=K%|Bq ^0[DworɒJh W:e۶PEBEϙ nn]vףǧ*ꇑm۶Q]۷[|9iӦf=bWA!sܸ.]J-FLB!ǟ@B!GI!\eA|G#BH~ea=!B(z=!B(z=!B(z=B!EOI1)~_B!^x(EϓE(48H~!^_)s,BHA˕|Q)}r~ \@ow3=B!OHS7|!C$oWRv-)%E𡃲^9}dEBE#7 a2*zUyD,^X?K(!}rIRL#l^}UJ.-UTw7-KJL]HʕbŊҹs'IsZ-CuԖzH7onsV%KJnݤF*mfxxϯ_VW.۷;?B!GUы>DY*ә,1cra|ȗD="kVoN6m5k&m۶uZ-C4SSiƥSRϚ5kf 4BE'D”Yѳ|ǤSJ, "{4!Jyb4ejnEQ}ܩ{D)Tr]DϼBQ۷oJݖ/_^ C߹n]JJ7[U|>ӥ];ur=zԬu@{G!P(z.ՈZ#>BYzʢ5pm۶e3XbJ x(1BE腅,Uوac>2nH  6$zz9oo/d ܸq#X"<\Q+ZTVMzΤ # Zb"!J1Rj FDQH|>*j^K-ZȔU]!uBQ􌓞1>xs~._B!GB!GѣB!G(zB!B(z=B!EB!G#BEG#BEP!B#=B!P(zB!h^A)ɒkĄ8B!<.z Sx}%a!Ν;B!=EQ:ܭ7ޔ&3gΔt;'_ޢr.)|=u q"EmC+M4*Uƍ ^J9z@Q+VLV*=z3Oɽg.{X/3Y(.VkoΊ!Gש[{weiܸ<#2uTqㆌ1T/RSWK#r i֬TVMΞ9+'$lo//)Q -۷oÇJВҵKYr%Eq0Z(B ͧ>[ݵk,DO>*7qDںDgTTI;߸q#%=y  [I^qٴq|S ӧNzD ! ^^A=[@@K.""BEڴiN޳uO?hsYH2yנAˍ-i߾|'ҳpVeJv$6&ڴ.g}rIRηN$>lּ[e~Yٝ;w *H"ET`}Yɒ%{nj~'Eo/y,R΄iRzuܾimGҥKK:U yțqp?Ύe{կ__Oe#lVcw獁B#C v/ꗇ?.Q>#~iZ qƪG' cǢۗ>qz}5jM_&;BTƎ#G;o-*l8۶5b7ʞ;wl޴Qد$BS i͚52ɱ.dK/ )ߦNu(zhGd::ڎ.z领 4:qr,gիV}?;c;Hc#k׬捁B#/zt٫]Jz{{ggDU'z zqӼ ʨ#ٳg?u"]h* >t9Kٚo.(-ZTɔٶ5tb^֭Q#}ۮ,־EDlQ-&WO8"I vEo|K:ێ>z":v%gqri2b{L:uD7BEѻ}쁘 7xC[/(!H }V~睷eĈwFQG3u]ÍA9#۶ D45RsՀLSf-+U_H=jma_7FҼ/:ێ-;u򄚇vw&g'W vWحkW}*!GHG;=geڹCENQ-WD}PҔv):WiZ|hێ-у0.\X}9sv\) ߩO-q9<=M!=qg_b!t)))oݺÕd=sJhDxW4Qm=^uVSOIӦM-#W~} D9 YSlZyiկe\9۶5R|]5coT~Ey_1Ge_}P$z>\E^;5h4ڎ.zH19s?eau=C?N?|?Nɓ&A=x&$oX YNüNJ}dܘT"QDGT~jz↋fCj\FԯVZJB_i:H +m6q?FnB*̅Qbd(>2"z2C9FS~ Dh˗/!Orr8ZW<8/Ǡ2eʨsρ \7BEx襧_ɐE<[9z?/K)|b'o'H,BE?EKf͚)7.~g5 !Gѣ!}]NVF ĨajpoBsvx͙ӧv`C}p]CJ7EG!B!G(zBQ!B(z=B!EB!=EB!=B#BEOIX$&ĩ嗅B<.z Sx}%a!Ν;~97Ht@E Anݼ)Φt;ʇGrE \RbmoΜiݺ54ܜ{9!=+hƍDo]r=x衇䥗^ѣF^/3Ue9|:Xm/3~w^nrxؠA_L۶_fZ;t7RjU\z4lP|AyWeҠL9٦!SO< ofn?N:fMEJ9b_D/%۷oi?iK/u(zCV=9,ϕ2sxW$K2m{5I3˫"sRDq3z޵S{W–{U^]m۶w.<_S'y&G3*zÇz=DFh=)RF u˪7Ç}{m(zQ2sxg/ oPg"/-SvI+Tڹ#[\##7lB(z=7 aʌ聉&"lViҥKK*M:w$*T"E(Y\hqgԩ/͛7ں\8nNٲe]vmw{1yTbŊgϖ+WN&Mh%KJn~/^\E:יk7:FkגkV>L.]rJj%JH>>*UJ !}>^weSUGjO:/Ge:Daܾi{{{gQj;{mn u1 J8&(=ѳw_)}G-[6{c?六zsk yy&GˋnMK}{Xܹsd*u7h#&H~MM6oH=5jP6mܠ!ұߏ{v|"۶m#+aog!C; Z5kt[쵛91ҡC{IӦM%&YfҶm[3F}4gu~BWZ%N\gjD 0>8opc:vp<-w۶fyE/*ꨚo-tq1vӳqW s`PeK-j/{OwDٹ;MR7lB(z(z+W~z5n\G$MV%DyY@@[7DUUÍLg"FBd^~d)ۺ>[T4]ѳn>g)*g.Ja:"XFj̈!j^w#m[&Lo8f8->zhGwq5ر( 㯑>zEWs:~fmXN+6!=+wmC7xЀLΣ&M^ uU*U$oBEeΕޔ:on$a.>7=b c]Hٮ v9y Bd.kQDS.ѣJ-W3H 6nH(p51|#M{ IU9nt݈bͺs:~f!~MEgTFF 8OH:ZQ}n|ɡ?^O2EtܑAt .lF}9FPG$`OƇR® u9=eku9zDz2u'~GeL{m ~=EC/uyFB]WxYqz^3#8lټf]9}?w[猣sKy&G3(zx6^+֭[qY=\٨!sixy'T0W/@vql>># ZE9~',x\L2B!by]B!=!BEG!EG!B!G(zBQxbB!Gs)ɒkĄ8B!=E$^t$,dܹs_B!G!Ju8e(!B#"znܸaH ٽ@#~%!+^Ą\'aM屢L#PLjކDںFD/37 zD*;PBkl,YRw릎 O>)azlԭF!=lj53-o߾4mTb*5kf!`FEQ9OTvq* ~ïU:t?I>$;w^xAݴsΑ͛65))nGQo}|PN:ujmKwʕ e٨QCٴqZ,;v`YÆ eUr q&zx=vUUwV7| ;r5k3Row!G8ѳw>5s툌4}HQ3R믿.?z=fh6l\Bkݪ1M?Ȝ.`>ϕtiDC7ԭy].]TQ1Ȋ~ Bv4/Y+*h FYsvF!=^۷ A2EtS̋:zİ)gthƍ=eQ*=u"{wXz?o\yM)>ʕ#p=y6[Y{uE-Zat4DHݜm/Dv#E/EojDIAZY1Ru…-s޵3C󌔃>c= )\/Z(4i~lܰ^B+&SLQ}%z?WEh[=WKt8|Pöm[Dͨيκ*zjBEg_PnݺÕ3#zzuѴL22ed2lsV@3D 2{n]ՇjĉNQAH RՓ}e[0 qqe!B(z$-48H~!^_IX2s,BEuCwMq6Q>=B!Gò+-ZPfsV' `6kBExn9b_NEo5}}zKrr}~RbtE*W$+VΝ;IB|E_tV.ʩP`ըQC~Kxͯ>LL8TNĖګJҥU>ݐ,YRw릶]xqy'%<}vҴiS>h֬mִWgԾ߷WE};wټi<_mߏ{vO?Dm*#F WbyF9uo//:zDc!Y!ߐ#)Y[o}|vhㄨbΜ>E)_,?-st^BEѳ˔lѿ_T D_1CEѪѼd鉊:j(bDmv P`E ui&!Ru9YT zhWC.ˈQ!ux_N蹒z[PBNݚq޵nZ^z;WEyM!=gEۆDoYGoj=oo/8{Q)ĉUlF;e |/D VgϜV!_޼sWLXZa*YR%y*9ogTsy@{dB#)zGW#jL̈N2kj2Y yq0qj];m.G)IgGތl>B\E^@4P?^.\t>Y%۵s+VLNR7wE<ꊴ1ʵ54D88=wIE B#P(zGl+W ޭ[zsU} E-}W4н!# Zش7B>ze_+T.[K Nζik'үՓ}8֭Z>zzRr4?3C6jـ=C!JѳuD\=N:Qtϊ-BJdr-=]e󆵚Tl1EP{z&Ǻ)+BkNII6mW~ֹw4V}W,_ms_Kʽ}Z)B9\\|I6_#;E؍~QG&F׮^5:mF6o޼!qnl%Ff"iy!%)aXn??D͟#Χj񇒥x5֭̅JRP_̳5 gt]׮5k<Q3O۷n L,gtʕ4%ׯ]3^]nh%ǫv@8(B(zDvΔ9t@EPFJroI* $F(;D/E];KEi>w\46ޖ:ߎ|.1AT%`~<=ZJ#âFY#tC 0\NK_}FX#zuǩW&ݺyCNR"|E^߫\=GupUY]cUDr{, !PHnޒO 9Ɇ"7Wp>Em:?"x菇u#6MjBrQpׯYg#<cY|l}5aKer>5Eμ8FiRd|2ve)T̩F9󆵫eUxzdtˢp@W>rN!Gr'vnW7j#bC˞]; ҉VSǏ)C<ӳܱ5B)"m7n*< 8MNl m\#L ^(P- VWZY8.؆>ټaADY\oGu@GnP} 1v9=ХejGVBJ!yXEFtZO[ nݼiv2!„ӷ04L"b<[@@b@u1᯾}}9d.Sܾm>7ZWYoku4[3ߖ.d0ow^H !G{QIB!=B#=B!yL͞IѣB#(zsgMQqϐBEP!B#=B!P(zB!=!BEG!B!G(zB!B(z=B!EB!G#BEP!B#=B!PEB!=!BEG!BѣB!G(zB!B(zG!EB!G#BQ!B#=B!PEB!=B#BEG!BѣB!P(zB!B(zG!B!G#BQ!B(z=B!PEB!=B#BEfe8EB!U+(zBQ!B(z=B!P(z=B!PEB!=B#BEG#BEG!BѣB!GѣB!G(zB!B(z=!B(z=B!\& q"z)xbB!$KHxAe~L^^D9$)r#{OOO2Юx4.l*wQ YJmN &{ *^əHlgO˙S'OƩSǵ{QMH2NQG[<~Wd/,d "^PY0g,@ (KΓI%tbYPV$X5(zB!!BEB!P!BEB!P!BHfDo떍B!ă+z'!B`%Ba=B!B#B!=B!B#B!-zɒ($'%Jj9t7箽lku~kkâ$93g$.0ןe{gK䍋b^{s˶f[Ƕ6$zSe7u9uB믿Anݺ%Nߦ$%970BSx͹k/ۚm_%'%(>s9<~L.+ q1Bko]{lD` iݙ#5%EΑ3y#8ޜ) lq>5U )!Dޜ)\;w7}S!{e[SIAɪr$obCko\{lEo*ƥBrNx9`[ ݾuKO&8(fϢB\=^{˶f[W i.=BE/]{lyN9"ׯ_wyG4!lku~u â7u҄9(s:We=BH^޽[]/%ȮG^|E)^<ҰaCYvmޓv[%==] "5k֔bŊc=&={$A&'OJ姟~/(Sȭ7UD?\]g7.]B\O6m*5jԐ۷ou=\{! 4 Ǐ'NҥKܼ'eqͶ6ʵk^:uHpp9sF6l zJEO'7=!MGyDIGJd֭,ܶ+W{QA1cHʕ%&&b7I&=H"iݺ|'z7衿^߾}E ;*vTVɒ%{jҥKKΝի9vPMB\^Z5j^G 8n:[n}-6ljbgVQܺfW[?pnݺIŊH"OȲeL~O|}IZni9%DJ{6Jzdĉ6\R|A%}֢k׮p Dk9"z0?)Ky%22Ro֬tIy_|Ye6¼ }' Ju â7o^1tcQv~ʲ 8~,-MOG1,zy7wkh6ttu9;'@EzҮ]\fW[#B 1pAlٲcu~ۿo-ZTjd]HOnkپ_T6y"Eeõ7>.VE.bc2,Un:[nZ z)~T\I Nn^{!֭]6}j2axYb]Z塪}oq5x y:4h:yB#=,={YhW4Q]Ξ9mu\}TCsc\q Dd'hݻvZ-=z|:G/^L8=C՗{y RDZxâ |nARSdʤ It71Baˎkĉ,x{yur[bsǎ kov5mgmܨ, T*UJ`*Uu=<=ioC}v}pmmK5Zo~"gNʰusIKV`)\=BIDATx|E)ґAJ"EP(RA4)*!t=Q:@ K!QR(rw] ٙyv^Bz_~&H!cW:w,eddBA <=k\")==?ΡL|P` Eiii|X:w=ɡG q #J"~+jժK(euCF(RNFB(}2u#@(! q/m+r\w B(! pfml5:JF3-2B)#)%%*d?JF{tJ(#=$&_^(%%&ЯBm۾EU*WRJQfMi1 CǍ3kQÆ lٲԻwo%;ݳD 5\-R̭!]Ҙ17|Vce?_APP?".xSB畺uȳ36C(! }cJIW M}!L!=T$ LQ/)!>BRJtLkY" .L^"W!{xzV+os(lk:sk::B?}oR$ڿNKGSԣ{w1q`?MJ481WfM!O!!CSժUXbT^=rsۮI㩼 NjiricciܸT"P(R5nܘke%tz<BIzI(ا!ȨK)n䐱t|EJjdJ,)IP{[o,Tx;t-fwҥH  &F ,BX41q1bΜ9-ה %*Nἧ&1#GrB5%ܣw=%=ML'SZEA^w(>z챬PbZBibAtp GW.9.]-$Mbt( %I4}4z饗60m}nL-[LiCE*^8$nI"N#8A(! IE\@QzJcF`qlY%mm@Hbݳ[c M{H^D]B-zVRtT$%& %^+>^vJ\Y<=-ZTgJ4fN%|x-ZwՉ&}EARMB)=]hDiX$񠊒x@.BO>6nᆪիӏ?ӢE "abq]:"JǤIdӳGjڴ ޵KQ  Pb>OQ ydm+]B̍PB$Eէ')BC)GT.$X$IB鏃m/NF^oBmr-5jծ][,nԨW3Uĉͱʕ+7X4 %/u+^|eJ(EUTobKN()} B ! C5ʈDko{9t&RY"ģBz8?aOãtA޵ĨR̵(Ļ.GT_Pإ:B@E_멨<,\]PB@@@@W!'+F-0jTB|SʈxPr2B)-Uqnob!J(}t/PB@@@@ȷ!J-^U*B(12| T񒕽5JJJNR(1vC(9PB@@@@@@-5 xJJJzC(9ё4s {A"H7AwnөcRvv? σy7 t.@ }Ŀ2_ 6Ip |Np` ޾%Ag@(9l =7п\-X(I:{ő/ܜ87 cע uȐTjU*VիWܶ˞c}_b;nCt:tؗ3p@񖑵ef,*2 J5jԠjժӤ.]F .ꎧMxdAEK(0/4T_,Kہv{۴q_cvp3u7v:=`,f l(4iBӦMkWEQMq}vtq_.]hРOMsyte1Ԭ ͛5?!?KhBҖ͛bʔTdI!L>r=ctjڴ?+\\UVcHi(p^`gm}4:c'ܵkW t֍ι7Vt BTկ__9-~GnZT_,Kہ~{34ӑ ׯi.˔)C'PPz:4x е%%&)n~ '@s)WݤD8]R"crvJ\?1ũ,0IO*y'wefҴL~:-R]8I1'W~pJ@(<ۨ-5eYJLvmi9NȷB)''GvEBܹ\\ÆQթw^bT_kXJLP+'((PbSufjٲ'Q"^??qidG8NzjLTv1= O'9|:7u-}SJpTSmԖ~ɚ,m_xuw>}h֬-fPZ0oxDIT?1Y&75W_j%)ŋ'AS%1wKjh]F sΚJ>^mo :VRtT6s秽޽{;#𓴩`Q 2e3Si:#Jju=-ZTgzTs%[fҤI԰aCuoȵQ[%kʲJh?GyfP'HO7%iiqrΊ+V(ZY"P͜1CECbcM~WZ'jعrw7{O^,ŽQu;p^|+VhaZ8BIyyO߾} ]ׯ7ޠ&X]_lf,M)ԯX$ %BPA:<0|/޼Xma^ģ&|ȵQ[%kʲ瓦#yawZ1$]iO@%ivB̞5h\Zp'문vY\,072ʖ-+/?_3޻BhW;-~W{FEkO:5\$WbVZb޽M6:Сm>Ǻu_o˰CݫgO͵[t&YʕL.\dy&Nr<ĝv}Hp`U k˔͌;e~xE*OJ;SK(HSObоX_#Fm闬)v`HzL> ECya֮]cO %Iv>r:\dgix #Vٳg3/=J@e˖$%Bï:79|_d1+Fx.]"@(@(@(A(@(@(@(@(@(8PRRdxb"o4p cͯw;;; S%~Rc'Er!##͟ gٱÍ"QA(Y14 `/SZ5SbB<5mĮ>((7.OQuYGSo8ysfQN7{^xM+矗QbAWE>Q;c[p39Ou^%-=| tt^UrerD|> B B B) [ 3OQΝ|TfM9b&-^Gcǎ*UShHc7uؘh7n,խ2+WzM *6d`ZxWmWT):t87p@&`M}q|g&+;Ç:(Q5hЀPToduZnMÆij@jӦH-M7SԮ$)B7?5^\kԨ! |"==}4tv ߔf…Զ[:q͚5|)O>GnJB %UsY9_0~l{mc yԵkW tM#k{m_CxX&\M]6wn:F^[*W$IQF|7IQ](vj9+=扲xjVgq`=! J/\$v !8(HOrcxJ;V\lxҹ~l]q|P ]'?h5XS|<>sgֵ)\s]Tpa:6Bã0={+(t~7n(v[-)U(yOMyOO#'rmϘ}n믿Y$-[Vѽ;-YX=#6qGf}.,vK9l9I>xBpb- ES9+srsvrFիW޽z3g?-axJ;֥>&ٺe3lR 7ׯ} ԇ%%jjSuhm@J=}ʣ+V:oSmP~SOE5⋚ Kj9[rN(s^|*̛-*Q-ǏsLޚիrů^^}U\r bIp{ǜg+W^|+]]<6kJ(8~LuS`M}<`̙@56\M9kSuhmРPѿOuXkR~iF~7W(qmS{.ZP?547o֌crׯ?UPAZi:wA;vT\J],朳%!P'HO7%iiqrΊכS qCu|?-Z$?1s^^$'G{`> zc7u,޵K7:iWg's|O4)Pv|oxF9cM}bUNF)Tϩ1x_;]|9gm ȿuL\(~s;jSBI51Thm}5?aбΈGfNFzbݐfFk7tmUs{H|GB:tPR>J설 =k&cтx<:OY4|Zo28;4{W4!ܶoӤШQvb1:7^ Ƌ f/EjJ|\^{ےk> R:7^~[7uMʗsZۀ-l{Jrm\z)S %YܑWREz*fʵ=~0ܫg\Eߔ~}X/`\o) k7tmUs{h0uT:uK$Bdl Y<@e;*YOF{ `PJ&.PPP.XB Bاm ;+kPPPPPPPPP0DE߇C >Ќ_݌o@(?Vʕˉ2 KR…CʒwY^oJJ`PP(qP*lݺ5 :TM6"M2d0UZU6իWܶM7NqRݺ/SrOBJ#$)B7?5x*U {D|RhBq"#uըQCL1Gi/ס_LGq)i/D\FSԹsg*_<լYF![5*+aZ՛6.m҉k֬)6Oі(QB\1Mم亮SεA(A( %NvGН۷(4$X'?q8p 5iĬ?o؟P׮])$8HЭ[7M/EE1}ܹ4kB3t|k;v?)ߟ +ÇS=?ЌuAA";~cbcHkWM+9sZL+T8q =5q==E\:Mk"Y:$>OHkɢxB0b B l.rrr oO1K(PX6IoݲZl.P~Qr@P imq,n GS+4|0^:K]F(]R!~:ҥCv?8WLq/c橹jѳUWCBIax x{PGG %>7 &^o<ժUK N/S ծ][;7 (^e[( ㎿J*b^I״V(޻bM=tALPs%0%uRq׿u 8o ^2|r<{+|GԬYS:t ]vv-?<,ʖ-Ka!5jDk׮l *r BaRdD8 6jԨ!ސԩժU`.˗S= wiԽ{iӦQ&PPPPP @ qq U%%ְ5l]m @Re?ڶi# 80-'K>[ְu5y kVSXH=~={l C֮K^akغB <"A+8Âజ;kvakغB p&s&O,ACÅ D puk,d,w;]{oi_XÆ ;5}qg~NU?r/溜T8~L6Mnz>2|7I?rܝ۷mr]nkkh*}Еu1>s0v]J+:=`-J o.HM 90Cj1$|R{LhѢi.!*1+(y+uIYuAg`Bɜ`MݻvA(9PzCM{ꊺMHVi8)'jOSOe藧}~uAUfGi~io[׭q@<ߒJK,c*Mfw颏&?;Vȶ֎_K(kۥ^^k]Jmf mtAsځS*J܀^o\sr]B U>$-i|ԯX#MjZHϣ6+\\ ͺ>}OؿO9~GԬYS:tȿEeBAPL"P[(Yr#b,s?o TuIsH$Gi,8ͣr)'a<)5/Fr:~_ղӎ֯[m}[ӷhܸ-W,1`|<<2>[b羽{4Kiʕ¿rGh*M㏅d׫ :r6[[kG)jxjubkZjի+Ɵ[7oN8As^uWru.eiEBS%gͤ9z,Z0/G=)JZӦ ɍ;o/9es|=51p@BjR{+ )x*^P3;F 6i5m*|Ywޡ;wqGBȒ%K}h#&޽{D_7^}k||H1nu9?֭]+F\~hX/}ѧ>I?8"=3us4u]r:`kǎf %c!'[AEv2Qژgqp> 'Ӏp71C`le˖Pԅs %mOz9HJak?l ,*N]M7iI^ q.m&Gfsd(l [ak%'OZ+~& R"lZܲB <JIj 2:Ook%\(%@+PNN]):|)Sϟo0͖644T`[% 3sLjڴ)tJ'qN](P%ƍvm;%MR::uСCdMII?jժE5jԠ#GRrr&חuF*T^zFI{!}W" Bp[FQg %$9.))Il.]&OLUV+:wSСCi̘1)g{FSGA%BmѮ];sշ){yy{& @l$RoL2+l  8CIHHL+޽(ѣ O'wn—pIvke;Ӽ-Bm]]WЛo)o_;wNc*Qmk.ߦ 9k)mwgϞq~;ӢY-(6^pSΑ2e25jԈbcaxW͝"O\裉㿋-J)j'oj=ZdXlM ׮:\]"L;Ӽ~MtΧ>OD9}JN޹J^^tۚ"(ѲeKuҔ؞K֭+լY"# wl3goJ8PJKȑ`ӫJW"Kr QbŊ"Œ}X&CѤ/Uw~iʕcqZ߾-[ҡC[qw7֭rU֙ma#[x%u϶e5vL97h@ݺyC'NQmk.}60[?M..X}?ԹȈpQ֭[NW9d(-*RSq4hԦMaUTЁv3޽{i'A~*jԨN}6TqxԤqcڹs&TGj׮M%KƍjhHWsb*s>x%uo^Sq^{5aiPq)? mŘ+͔y߄5f[F ZjNJu2;uĶJ8PⅮii*uma[^E+]~Uԙ¶-pB(`$bm;] ">͛(X`[8m!p0mX_J**Z-c" vwܺi蚿_ma[6B $1>Nxhi_9vu5+] Rke 6nX/3kt#?oma[6B GK *1'R~mag[%%%%%%%%J 7$]"IENDB`geany-1.23.1+dfsg/doc/images/pref_dialog_interface_notebook.png0000644000175000017500000012111712146146075024774 0ustar hyperairhyperairPNG  IHDRzaֻTbKGDIDATx|Eׇ^)K"EP)JWi&M)t PC|{Ne-{C)~m=3c: fBBRbb"?/cm۶I͛7Çt]{@ݿnܸN3fd/$$D$ٲe i}83ܹ 28 I}Cd4[ ϻ}+Ҕ:uP%%KR5o>{B۲y}GTbEZ*M: D{tKi*z+VSǎeW^>l?c 'NЃQ;wЭěݥ8n޼9=zP׏¶R-W_>v)iկ_?aatGFk0C]yyfh>YdbjҸ1U(_ҰCe֮]CM?*T@:uu&h֗Dcǎ_~I&I_aoիߟOիWΝ;ӑ#GwTfM~?6({Ufqft,lǏ#Ft׮]iR7-8p@^{+b)k-ccc)o%2-YDf᛺ DQe@Z3KRfw7x`i<{,EEE=ݱmܹ݇ss.]hΝkNڻwڷoD5~RM.э MS1Tsss>@rNƶҳ0__f95s|.[,ժY&N blקTn]YhӦM,Hm4ыKוְ0q;B)9s: Ϟ׮)tL5DeΝ=se"FQr"Y4u6@D>?LZISV%M1 H/.wg#z|,9d6A4; ]sduc C!zi,z>^ .gv?9ѿ 2g/^3d]{MpP8D-[{ A2: aoFmE gmu?ݸu[;?g.&Ш٫d]=ܓ}@ zOD?_ԗ+0Nߏ ~(,4%\KWo>NQ"{9{2:KG)Dg*ze L:IÇG._CWn逘bn=OΒuؑ=D\cDT&+7tBL SѻOdɺzT~x~wB$âꢷՙիK |ykUw~C![ӵ 2D/F_f,}E/mN8{"zs%8uGCYX8C ukE-\@;v+gi;b`BMqWot™Wi"zOtȚb2ʝ;7dȦ۴j6HF߱,z5Xz{TL\=5;w :3KU1q~]8 #z׮]M{A%J F{RE,_ʕ^P/Z  Z׮]xUU=ݺRB襗^D?"E *[,͜33jYd 5)w]E{֢dL5{h#zkb!`Mdަ V'zNF5jT h^LDOh ?G77|lryVF6م+wmEūt!eu.s7zwE<̗L(Y/AꢈN,sr],v_!\L}߇J*E _vCȲI_7WF 4GNگ_ʕ@kUlYXqOΜTՊh _!ޯP2ҭz~b/t'O˪_V̑SΘ_/5usC!z $zؤ:n,)\XnD"kyVc=~Xgkm0%^%Q_Ǎm"o梷+DO|cVNTx]?-12MS\{D^.đ)&$[Nkߑ6jL}Єڴk-uyuZ{PP&Y~Fԡײ,Y&4bL|H_~-Wϒ)$:jzUPfGxXA!z(z,q͚}B/2` -7~YkzW>zTQK,۶J?:~c>l҄jԨA.NM}Hyslޒ E\擯}ӳȟƎ%Q=HbK菙I6 E)?fϚ,|ztdR,O-ŠyyQ2Fr:^|8͟s j,Sl焣5F`Θ]"zoX*NB1 t|^S&$lOe'QiÖpmdީxuyu9svE>),r[AE凎%R6$rv|?k UTd=KX:sntL{&Kbpyv4gޯeڡҷXѢR3zܝT&,aʵc>[.,_*!z,)z $Ur/7{׷[.QJ%E?f]n<}N{0L/Uo ͙-Uko 6G*e(/i<3ODD/^+BDhOPb׉,;~梔͡ں9Gt%uynT9r2FMIW(<kwFss-7^IR^ƭal>qNec/y'IZ]ҼǢt~h:m2|qy|M[n߮Sy,[*;تFU˗AE/&I9iyٴaȔtmoԐw:z9sJc$6#)w+1Q`;sY0ICfrY"ͭZ}ֆ4<.4hԘwZ[ f":t"EeZ[I<}(bi>fb^vHRD' X~N=,ݯq;K6ut ~keTJ_IOZF?vo;GSY?r,;8WlgwuRe'kK',G-T_w>5ڼ-MVm]$;8!zS>q z@LyՋi̧y693aωFO}c$LMEDLI]{|+;@^f-ZʲGOKz,f֮#%x]}ko8v=$L>31[;d/BPǯPR%M#oCE )"zUrY-{"zI+4y5*|=qt<}rwPhܖ,mڶUm]W|?<6<聛/K,) ǣ;u rz*UHM?lb5]kWڶi#hux?D oc$̚*}n%wU }M;?׮&ev봥:lݪrQl'byT dŎ_@ʕ:nc>[.̉R< zD/E++)Vdtd,:  ;\,ɒu5A=qrrK!pD)E.$tsj-X8K}`#MD7dźkDqD/8(@ ,DoEw)"{%M)iU-\Y?⹲,pX3mKq ;<.Βu5R!zt/z"RIrщZ+|6Љ>Dm;Q[v?9ї?;QC/NBNeuU6܉p#雑QKhgAg;֙s ?L; &8i$gEad079ŅFMu [c8 DI.4EaL}ٮʎs]i3ߕ*pN/ٕ\\\pD/t% n|= zS$G/z hXvb]ݣ|[~Eo"yFєhVi9۟_xD?z#!=zp>Px<`'q? ܓ~Y̽ܿgi]12=ii5AyFg=}Dxe kaJE7Agh,'?K^L"uBX4Kݻw{̝$ܹqvwnߢ w(zDo)ӷn%j?ˤ?~kқ%*znM#e'EfϮ Dz% l}p[:Hz3~m,ޣGf⩢gwjݽ|[s[ϭ$ɻ^p3InI^%&>75iݒo>MY\ YH{ej:qqtyB*?K?n =}=U^:=r|>t6 2tу ;y"zk^! ;,K[A zA zA zA z=@#RE^x:xsz饗^-Z@{^wzSM*T@K /zQ6%zٲeݻwZN8*z˶Mu˗/}TR%ʝ;7k>8XDcK$kԿ_?*]4.\:uDh7oThQʟ?i4>m]׮]x3gNX"\^|\חʗ//۵h\)+RW.S߾}<:vHΞ ㉞S.zUQ2gHjԨNޅsZ-?߮;kUay.M?ЛM=z†%7j̞ؐ-eS~$-~w!Gym?8͝KÆHk% ]M󰸱̱<N5իIS<ҙ?o9Bs=~YDʖ-K7oыxz|ժU֭=.@)RwFRZ3OhZ{#xR$捤B9wzEeʔZ"z>:}-#G ư)HzioNj6mm֬g͢%=KX$M?^\8zMܜ.ws[g7={J?Çv,+z}"5G!zHl0qTq5{n[d4վ Dm;Q[v?9ї?;QC/NBNeuU6܉p#雑QKhgAg;֙s ?L; &8i$gEad079ŅFMu c~w\h¯]h.4Qaҟ.4y MQ:Ӆ~BJqs]i¬y4g+U+wr%'ggWrqq%Wh+-^JK4J=s.^؋瓸CUΟ *1gʹ3r4SQb8ͳO gS')1$d\ı#чh>߄Ct죃Uҁ(=!jnKػGe١gWLƮaDU<J(DL&z, w܆epK{r 6". Kעכ d~@?p M z@gkׯ_EQbb"M0.ˊJJ}/z,#o߂ehsQtҴeCwU5k&ծ]-Jy7jԠ}S'OP2 /Оݻ^y>D/wu^&h&z7nܠz+Bϧ{佉Y&͝36oHQ O]޵WyJAUV!z z=Mƌ.} 0@"ygϖiUֵ'z 3=q4}UOF*q˪&M111Po^N3"z4Ӎ׬J٩Za}N Խ[7*U$(QvԥY6uoW}:hܗ.w-b$\ҥKvQg!Clٲ&y5ous[b|&Kv-V^)gΜTbE\D (@իW RӦMM\.6u 7EA2ؽ{/W_3gΘD^̹Թ"Z,Jg"Q(|諯:tԑ7nԇB&M4cGeP)RDUUAZQKy>u֡[6K~>hH.g rj}El!|F1lt-z1=SeZjd;|d ̙3IjEV%4te˖-~%ʷ#"B[.8F O&'MHG(5kd^mi1V͛W$\ G8:Y_|E(#1,c[>^RM7"\\9ҥnK3=f+7ް)zN Q=|LE?1gϞM&z#dXT >(iZ<̑(uy|\\ҹ|,& J?׫W"즉&HS(o/[땺ގ?>S*zFiEo;oZ$z'37ѽ;,Y7oF#z^+Ҵ)eDXBi!xըQ#CM?FFԪ,{[8W~=#a9GR=ڄ[reZғԯo5/qb藥,dm![=5Zf=}v\ry?"/%z,ro5qGNÍ z\6vV=@_Y3=~7^͛&Bo2@7Ӳ'ǂͪ9∛S^ڴ۸Q hްCyo3{<+K$۵\$y5w<{yI#`T,}Xθ!Dk|N4:EY58ܴ#@4ѻvsÊUWJ479}Zfgخv'K%pJX\/"x֟=Go4ѣ;ZZ궘nDZg-׺UKlUB֥DnM@ěɚg%=z \. &}8ǒwh$Yeh0%c)㑐>ޫ[U+eK=_Lt ^2|W'"<0cGx^fHmB6K/>̤Dg}ԱC{U~EDڵe&ӳєnKD"¶g[ɋg-Jlt!zn zȜUV=ϡ@ z\}M=2ț!z=@ z=@ z=@ zOEB|ܓd>D/+_o6d]FY? ̢ dh"JLLA.zA"_/zw9_>.]lbH_JfͤڵkSѢEKިQ#O^}CmƏ豼ISkLL/44T"y۷S,Mt5¡={vV*mX{u֍J*I%J](u)FMU&C4͝;7n GU~R)ԢEsDV~O @ozԖ]I,<%cǎJ?cS8իQiӦʵpʪmI2+=WXoK={+JVR ; *zn ֭D^&={O\t(ы9w:wZlٲq&b g;?NNqJ}8-4iD9r̙;*Ӽ} H"tMxVJ7o\G_:u(x:3ɟ%ѳ>|0>|F1VXnںeAF[<'炅ۈ$gxb;nRf)\cAEܹ $UVMlߞSay9s~=x"e˖n-ySӧOϓ&NѣGIo52]۶4v+Ѽ8I+:[#)WuYd|` GX8*p$xmڸAV=#f?u zt"z>4=ٳDoП GՆFe4 ~Kh^x* Jd?׫W"즉&Ѐe_~٪x/hѽ;,Y7o&B2idbT8Wjc?k C7.eћ8~UXZnmq$:BW=L9GZ?:cx;6r⪕Ԡ~}}޵Ӫɏ Gݸa\D.Jzx-Kq^¶=5hkc'z֎7Yr-^&=~7^͛&Bo2@7Ӳ'ǂͪማS^ߘƸyP hްCyo3{<~'TFuZ%3*T͝k"7)l̂ƯjQ<&~۵sy{)z\Ns7Pa'ԗi.΋lښo쉞cE z_V?u6vpghʤk7?,^,Q7GqrmF+VL$GrHZ6,NMxx6oQҏ H#HPry`Jf L r0 /Nի)SF ֭ZY6>XXb+U$&(HFx08Gʗ/S?8|{fOl;D9^bdͳ=. у襂=z(zgDs=K#WH^52 QDk"J; ,Z,zǎVD)^F 5BK]v5][4~?`ԪUK ݪ{Oh:l@tGo9E{۵h2 :kxے=@W=9#w@9m0w,*R&zKt ,)z^MRtiCň ޺5Ԯm*V(5jԐ,Z@=C}5 [&` ܾm+D$z G&MFDׯ#?O~E \EǍ#?B3" @kKйg)Y=.p^&}~QQ#M"BNT+W.T"5m&z߯'3gNeY%54r9N8E4cT5a+78tN] zQhk$ӡ4}$ZUW ]ht1}уe^۳{ɀ~w{GBux> 2~K/D-Z4yTM>O8F%Qkȼvmۊݿ=34능>z6nU#\Yg~WFi7OzaE/%0ع\MF<Ƒi_A'ea8-sJIDf,=o5Mp$IRdYˋi{i#pItS#%߷cYU"E^R'L Lْ!GEH%kuŒqH_GTؼy3* `E )l6wnôc5tN8=K_]>^JI3 ^V=Nsr~ysE} p5U.jy&zrDgD=#G-gXv?OmU+=A)޿sl$OΟ-oUȍ4.^8/mK͢GOm>zܜh=[yw, ghްCyoRIϱDޞM8J9E;YfZGHB ^)]Z{ COG`)uzEeʔlH_-=22t@S'=۷oA zwqDߓуууA3 zޞD~<⏊̙=+UDAI{r1ߧ3 z^XX"VyQiϮB=w}iؐAv9g e=O7n^'BM=26|a{p>KLLA=[wt#z,bڷŋSEvmipMv))/FEm|A;·={/,r=үq߽{ j֬I׮^l]({@t#z_|9cyߧV-[jYVTn] իK-[~jS*WL?E)VӒ !z[GDoQyҘ1\:HjJ2YDE.{&0@k yc)Ͼ>Zӭ*ǒfMJ.g"zh ޘQ G*iO\r];T8-N3Ldc 5`KzyۺegSE_6mֶcSE2k6(ڵm#M5 ]!zckPϨdt֍}]Uw%2GX .L;vTmgdM)O<{>2$VzH[^ ,U$(Qvc[|%ׯ//_O-Z4{c3->˽7V05٣UXrMUT@`EKyL7-[6^P?Ȟ]EDV{IDM=?c e⋴}YLXXR&MhUGuQxn4jD;-1b8ըQ.9sw*5"z:uƍ+B&MCVթS׭S3/{ǟ'ODGIʆcd;t+wAD#_^O?>z<>zmBעy3飷}[}s^hOaCE \$7nh3b;D,&zyJOʓ'7lG8*"s)ND ۞*gl@ zdbw%޼iS(7ʎT"͗ ~ڵsy{ҖϜ9CqSfV֭M"j,~&>xz]tzl< >zci˸~vk׬>v)=#ecO E[FmA z [-i')SoDbΝ^zQ2eHժUEx=ҭDQys皤;p/_>Ic`W_u+%KozT2MQE5AA2wyT.)=[ecD)@*N$D z=#y=. eA zA zA zAPa XC zHr|A zHwԱޑCAFA zH_]Do;xyҲ% }J@\E/KohEDL<ҭ[=2q;!zi z^+< zeF\D/!>y2[MQ\@@n]כ d~e2豀ܾ} E ܃_bb"M0ʬ\!/G3αecG=!z@8Zg޽{Do] /h,Xj׮M'LZy?sN?tux9'/&emS:yg$ϲ*T)S+RDyF9yу虉XO#zYN:t Խ[7*U$(QvԙCM(PW&MM65@Xz]IL}ҥKQ…cǎJoZݺuhͲFsÒn8~Dd쉞m9?a1 ̲}nfY\|o>LnO~7N(N"̖g^/Ymrʔ>lE>D{#hBi wu 'R'OnBmTlil-7/'Ku|:o<;Z>z8͂xQ_,)"ʹpUZU{u^=vpRI== ސ!?'g\x~> zk׬rDTa8Q?ԇׯ] ?h8pԀ#$y49_чad.ї%#4te˖M>߸~'ezy QhY}uL{vC뼣gd^zI=/?}|9w6ŢeɟX:f#e({tN%K͛IZY/sw~["M)=ki=6;))s.pHWO8/őz`'#EOte˦7tx'}kΤ7qQkOShMG7s9(^ݰGGvک-k1di?4-7rwGD?Ju;m![->)S qs^\/ߵs,?oEƼm4DO(:o<|,]ܟyj.7ZI ׷Uꠑzb?Tk׮豤}MO[ *T sڧKT+QӦ4PX1ۧuUnXv q_e/}Yk/[&EQ+[fϜ!7)ɾ}ΚY篿ŋI'O?mA[6oDݍ}rq%ڶIKyӦ=Pp yQϯWqqvJ*I$nQf"6p%nQÇ;ki7ת_O:x*T͝klSyDnY}'TFuyqP1ߏV}P;ݷ:,z Gw#a/{qi4x~,OKIޱZn^N玧 En:o<|,_*87lPm[o)_4̞m++{u^=T~@*^BB|w}K"`6їME=nQyd%+ ~i*JYx~h֛ԺUKh2ZOpz,l"z]s5])x{Zn^eEl8_Ʒ.pIZN83&OGS& _âpҥ%JK*gayӿe(w>y*8䛼)!-Inoyf͚ii+S.[2Է%-ZT:իͱ1@Vx4F>mXNAZJOʭ8BgvͲNٚ %o˦ i?HšqcKM#y=. PgPy, =E3D/""j']K}M"wX=[N& hYmU)[˳*z>$ڰA}ZDdZ, =E{eޑ\۶n8iEs4IؿO=nUEO9n8]WX=7U"B5a7mO}D<9"} P=7c># }HԆuhޟep4~fݵ>z{.xmҥ%VJej')=RJQ{IM>?QF E_K/D mO/Kѽ#,U$-YPDoMԱC{P͢XԤIcMxwVX;n9EYy-~ =D=oya%DL&z~>ODg&z~6#R zQ z=@ zY]㞜'db esMÆ a??,zA"_-z|~XܿOiq=`J/DH!EB<(;^=w!ѻ~*͚5j׮MEu2EyvR9OiӇZjC}>__T|yʟ?4q]UWɞ=;UV6[hKnݨTTD ڵRczX6ŋ9sRŊs mo @Tt)gOyO}0W.K;gaرr}і__ e˚Ś[^yZ;?+W>4rڜ޽{qq9g>yR=|qR :|n{'oȟMf% /iZenA[pQuMSը`Դit Dܹ у%#YkqLBoǏ٪H"ģސVT־>ԩCщǴ}s>Xx_}Inڎ~ԩ#5nX&Msw_J![}"yÆQC7rD=[úu-e5rU\,ܔڦ[^yZ;FD?>u EM#F ¶رc~9nޖeer9ZKH~'O$u*Ǒ5r-W,o䋣hV*W׶4T|_^Xڷo=^=~h̜9D/^d>}|4q"=J|k׬yڶu|\Dꢣn2GD/rcGD6/"<\q%%_uҥ<(SdOppj?_|QF95*z2eYF}ן4{Z9VF꿵eI'˗O/%k^)iXꣷi~1 6.e"{!1'â]ÇQW^-\*Q\^]L0A7_~Y{X=ޞenfoi9yOyw;Zs~ԣ{w*Y$5oL"-z|f-}#c6"zַWΩgi}uq)Sֹ7*z)ɯ%-_#Zݲ'zp^ ( UlՊ-Ԫ7V[񢂶[$BHH9IH8!Ux~|qnl>_,;'u\#hN[BC]{Uۻ[7y{z6^BV:?R˷4o[ބׅ^(zTE˴pz]mB&/AB懞i1?v̜\]=#+_Ůt?9ݚ7䭷ұ>d>zH:t|@_ɛs5R}!3GI\OFdgI?Pt5_/~itޏc*OcYwt}tϵyks#;=z0ax"3]U&/Y0mi采GGm̬YNO+Фym-}$m="Oiժcoѕ[uqgsx:l@mҤ ң +1]?~a0ޯN-[p|(NCjzdp1QG1}єz4>{zEᲁ׃{ӣ.s2Wŷw<]y O^w8qv>ފEs|˿w=y\ =`>﫻vE"}iͲ]@z5"N8wK猞GOץ  P֭[kezQF, Y3Z6$# VڹKGڧcЋvzz,ݟt_FݿU9R_j[颳W!ϳĝ=X`قõ~9AzS۷_O t+|zoW~NB|i'?Gy/Co`-_&|=n@ COc'0[n@s~FKmVPi:sfҡ7jps5;P믿N6l ل[=E3O0_ϣm[=|QZ4/Άnztf:um62e'-}̗c7)s_vEENS.Rs~nOz B XknœƔ1;;%a|Y2sʧ KZ쟡e~[ϗ/3[4x15ɲJM١׻ SL~v|2q˽^Lx bNij}MmHN2'Ug͝k9 = +{Vo_壑_N=ӣ1rp(s_yrfDNs j̕=j㏚-Л?7m>zfs2ꋹЛ0~⧡!fםn wZ|钳giߴRw+4V|쾃+>wz V@ Ν)'z B/nG{ u4;;vf:cWNsmi.C/fL%vބ[bgEW9413eblL^'oԩs&@ = >Ɲ;=r-%zf$'ϖ-ieՃ5y7ҬYS]ЛkE߅OGUa_|2aJޭZ7nf_{L ~u}zK-Ѱ]wt;tw*yKڴiCz q{wO*5&6&7W,YP>iذ yk0jN-\oE IrM7SԔЛ8a9׶oNq <ۚ4twB#Gz E B2.J4Ez Bogf!ђc ;B!z$~n̜.Q#Kk1t|[#я~T 滽u]o-hg&=6#^^8ޭ%\R䤤z 4n}xBσ!S$j>z 5U@zAz__CKz5jHg\z7[֕M?[Ѽl}t(ӧO;gޓ'}"7w`7JI߱]{\}rK-'t7n|>sd3]v4lxX=?>jm˓~ߢ77W_ ː2a֬Y3)).r\ݺuMhhuFKgyĔ^7w6ZzԸcMl?ϗA^&;m~szݿP9˖:}ێVZ?l@&Fzimwts_^[t?;+Dn1oq׽ Y~9[my2oǩts][nl^/CO?zN閩\ؒÒ~N=בÇuz:ʧTZhQ~׬^%wxLwq,[ʡɼ  BolBޒO?5w{)ٕeNOүo C/#}wyҩS'畘`ѣ:/NR']tMۖ*1. *|2p@Kݥ^j8W\GocH3/}ƓO]nں:Ҷm 2zűoҴi2E`= C /C6$ɒOI>z: U+?5V: _UWfL7ôljm+zzw$ldY8Qw{ 6ӻ9[DY?O2 BFqqs;J.#4Ξ g~ڄRx` ԊD{6nls3oCOmC#OcN-7sFc6>nZ0^DM# c?)ᒺ9,GO:ύKUtzʄ溪8sު5Vzu[RSe'79sZGeyF).*} C/nv==2_5~B;<<­vggɜhkyBס~j#+֛&T+4{=^IIDFz=B/Bovl 'z%jmّ׼ys1b >\&=гHv뭷) /R I9 {pøzPϖ/^wCOSoo_Cn6~BR51_nQ.G)]t k׮ϖy  &Ӷ_oi~Q0N8.)RSSlo]CҼGs$[lK Kvsס?l}c65t<իVzt008eCr$s]AΖz|n5kuK)m_iFsןӟ_l=nͿyzYVZ$}EGɓ'8;f_eBOu:l_z5/§N6ѥIWnb^gdd5tt˝^sg^֟벳*ءlZtt\s5y8{n:Mon%  C)Avyɚի =Xz?[\`C^ )&$GsGf=u^^p̡Wbo]ټ9{ɴ=~x?X}?٫W/t0^rrtI T|=WwI>`:<B@Fz!~d ~}#fh;w-ZTzz;9ܣB#9 vءy0t #=ms";=cFz=BC^A~Hr3zpB@p^\ltB7pzzۄz |zz?&⡗k.";=B@ȇ^vVJ[$?o︴ii5=Zzgg{= +=t&j-PCg͔9Iߞf^1}zeo@~rUf'-SW^=݀ҸqcL-tlRvb+?~r>7j$ߝ=ݣ\ݺ\|qi۶M|B\xںǣFzJdkJLdo8ѭS8| ۻgG.ڽkH\f6=[6mW; z/ny2?>N/]"{L;:DVZz G/Z z%z>kBWYw[ =ܻ 6u,YPw{Jڴi?HILoޏOCo6TTo"eƴp3Ud̨2qX 2'tf͌1OZz:,[~=Y`E+4NdЕKCMZg:l~'.pz 9ngDytvՊ[×?C*.*4[t˙g(%Ow{ CoX^A7J]iduv_&iذ!@^7\j.d[ϹN:f>JV>zh+رD͘.׮6Q6ZBopz'M4пokؠݿU^KZha|k塇ө[.RsnnOJfM/Jݺus=>zŅT+zdG/?@- =C9V/E=exDFKy? =BA%/-5՜GOS79sZGeyFs2+Az q,AuKFVydNL9E +Az ěGv}t-yU'W=BCknJo:|9Zz=BCw} $uu/a^i浮 aM詓'OVj#z>MLLc%L/?t+!mWCA ux{9YiiiyeBsݲj s/~ssCOѨ38?*j^RҶWyAa=mdp7t 5#0wqNj^/g~嗿*2xs=""")Hl,wu`:<B@@Bώ;Bސޒn25k<3k˃1Xͯ2?sҲE GVZ07pe.3}#S}2= M62oS݀\l]zӡMGnҴIs?ݺ=):BOo ~#ǝ=u7+:J~r]reIӦM̑jKs";=cFz? |z;LM0΄n#0'OX&&'ϗ/d~&+3݄CȊϖg˖8 '|U*= Tcл%Fv^A~Hr3zpB@ =bSrh̊6ޙ۔MLi١E.aVʥysCquh~!O3ԚUi0٢7o٢[4t1.C>C/0gͪ =4r=kl~QTN4s2ߌV0=_oΞV:Za9l~Ua5 G't죧xX 2_Kɲxaݿ}ׯ!JdkJLdo5ѭSoH{v˞ݻj]3#snٴQrssx_7#r }_/~5g}|7!i9 CmJy1y#t(m۶-[41gW6l`oN>C M̘nu_5B&S&A¬2;fWti~PkC@# ~B#GEԴGܢȈpIݜb#'G!䥥y3gN[l6oh^}#=v-yy[Β91f @ІޢBCm#[&?/ObgE[o-]h#P{BO5 [f|~GA~̜a =Az;3͍wl3aGz=w߅$;9ݢGгc/!~̜.Q#vv(BWw`?+zBzǎ{z@z@5ޙ3g=޽{ BBzO Ev蹳gi۶GAA̘A =B^y?я ocX"#=G腂ٱ1!qr\B#y2b>|Mz=B/ [#5k4B:tܦ6lNTe? 7i8nke#kٲer7e]&=XЅZoq =л e!LQrE^BЛ2qk١l'yפqwQzΦ͙3GڵkgSizN۸Gqq#z"ח]Y>$W^yZzZ΄{wl߾ݧS'O4Bj M7ȝw)}q\w]wiCO_-KƍgϞr`>kV_6lhn3K6mj"ꖑؘ4]&gK?.w>?-s:ȳ>e׭[ÇV:"ꫯ*zN$-[+B^x3cƌ=PzWkIz=BzJXvӶIzueUNO$sZLn}`1n4CufYlGӢfǑ-Մ>]:W,oY.Y"[ *=eS[qôz]dt/EeMܥnkuL癘`ϏW&ƞ{tEڵ#}lo)_;qΑjiJ{イvs.]~aBמ?{sf?瑟K ^֭T=<-m#lҠ֔Q[\}ҫ &ϯi|5%\b OSy>1\3[>]\ף{w?t߂ѢC|u1l9k(!91-9)\[%}l5twԗHMji3:YZ<`̝;ǼNmΆVs5z+3Bw@z =ݺԨQ#C/;̌s؞&J~V8O͌o ԭUz`ҏ˓T^xTO/{=es-:G}1.=gӢ#LtG'E#k.";=BGz۳+*Gehnz ;y=-9Iߞf^1zQRT$[SRd'%=-|n~w6ٽ˯v%;3=!۷m3seF}B/# M̘nu_5B&S&A¬2;fWt*;TX-B\*.*4[t˙g(%OWz=B#Gz=z#=@z(Bzw=z=z#=Bz=z=z#=Bz=z=z#=Bz=z=z#=Bz=zC,?OY/8qz#=Bz=zCB$ E  +}#Gz=z=B#Gz=z=B#Gz=z=B#Gz=z=B#Gz=z=B#Gz=z=B#Gzjd =Bz BT B!#=wAB=Oz qGz=z=B#Gz=z=B#Gz=z (B=z qGz CoBzёQ=BJiz @B @B =@z @B @B =@z @B @B =@z @B @B =@z @B @B =@z @B @B j~-]HB/Coń BŲOz E@z#=@=@z =BGBǏȑ `ܣaWJ %! 92ӷK~Q9V–=*151e#H׊ ּ]Yp]@.J/,^h0.WZlnQ0a\Bege2\ː-̐-öu`H føvz{}V͚mm67v&ØX¼9 e! xWۢtkz! @޺5+P o5CB=;ss%9z0sD5ֽ[ $\IqDVm7V9i-?]> ٺ9EfDᅱa1Y Xn˲̲8Ȋ2dXsWǙ喸:CRv渍=B /WȔdloᅦN>-wʔO&ƤXn˲ܲ"OX񉒹e}FҲ1k_nC/7 glr)|puoֽ,-#fFˬ/gfYj$&jۻ1n ܺee7|2C2"r1xlˬH`7b< =ֽY׌U5Ji|z}*I!T&Xw˲ܲ.z,-zzkM=W{v!cu/:pZCXzǎ6.p = =ֽ =uBox9ò;s|$9}cu/:pOaUaK`RR\,çz [ =Eu 5/ԩS^O%B/׽,-kB7 |zǍ /~#tN =zX_׀׃){'?OnݺrWw-˗/$.[Wk8qByk/Z^~eqIUv%M4#FJ'鯿6;v/noE/B/0W_}Ut"ڵ3gt,^-k ;Cz,Ζyœea_gyrwM7$ϗ{ʊ+Wm^ۡg?//ϼ{S_~qB@Uk[li㪫uz>СCMP?~j{ 6L7o./sW_}%w 0ei$mza7B =_oРAf%_xSW 6޽{ɓ':i"wҥr=˯Kzw}Ww^fӧO7[keݺukIHH6f͚E]$۷xǴK.D^|Esꖤ>1]R,(]=*gd ^RNdرN}re+zv={4npz;uˀ^EJ)_{5~&]J>}*|uرcf7? XCϟ޾}:>t]١zӓ:TV^=)((p\faaaz\ֹ=z͞=[6l`t~ml@^CNnϞ=fku]Y̻{eժUrС2!W@މ/@K2q6,[}ZjUfW{YѧwqKO0W\-۪|FbYkAVsי=kʼe֩-g1-u}e?}*333 zVឰ'ɴG}Dn6IHX`$nt0~|*$SAy|4~,úfϙv 7)=^ol]SOIWu-;S2ϩիVʘ1ŋe&y|֕zzH:tI͕ݻZ@,kGgoyyr뭷J[n1C=en_~{G~cvu<< e =L IfʦMM; 9n݋ӏ_!C2#K^ >{9rX^5s2=Ϲmeo]x9Us/00'YpbmڴZ]`_"J|Y"9i}{Cs:y+*>2ܼ|߆QM5Y!mP-=J*anYjxx'*ֽ9W`Bu׽,-ҡ?8סk6k=އ^{Yց[֎-`yUCowv%@=#F"xz{eYnYۡeVe}T^'|z9%ffn1'DgLGXn˲ܲNJ?"g ;YfUa[9z9)=ꡗwT6mL)L۶I~u7;=ݻj]3# uZMr>ź7p^uu`M YֲzY:tH8wٻ]lKݒeY~ 3%k_nCO=bx%2"L}<ҌWd̨2qX_ɟ8%4 3gL虞5SRd|{YցY3G0[tQ5Ƞ_>oMw'$:7/#^,G7g~ rX}{wwxN7c_8z ^=ֽ[5NtKTPo:sBsy^jBB=zz=o>d_!IENDB`geany-1.23.1+dfsg/doc/images/pref_dialog_edit_features.png0000644000175000017500000011344012146146075023757 0ustar hyperairhyperairPNG  IHDRzaֻTsBIT|dtEXtSoftwaregnome-screenshot>IDATxxׇ{KAt.E|4i" @ Nh@h R7YwmI6!7ܙ;wysۼ d<2,[BCC(!!` ,Xd.,,^ҋ/ӿ诿 ;ܳg(>-]%{"y$Opp0iqUo|1%xAd4?Ǐ@&A#z?HU4iBeʔʖ-KգÇӭ7_=gQթvo ={) 5QEՕ֬YCzC>ߧ.]Jt%zEɓ'(!*_#K Mmȑ#ipꫯZjgC$͛"ƎaruNovqjӺ5UR{=VG#zHH]|4|'̓|f͚ѿ+S>yzzȶpo>gpww7yLRϡ?OEş[hA={{Ifn~j2.]hXl)ݽ'ǡ|FܿHULE^GJ˗/^kjeESaCsNe֭[?nڸq4k=_ ז*3qI3իW)22U ;&_j*Yׯ:t>DǏ7Z'K&7(;1>*M|OlsrrO>Df͚RƝMg꘤C3edRJi9/T|ÇHM6O>iE{faш^[@ /y}q;Bf3uLRϡK{x >>=BX>z LD ޽q Dd*;uu H^t\ǒ鶅Ξ9I7oDӭMJUr E\\,\eC\$qQ\ \<҅sΜpIΜ>rNEjsNP9*DW9B'U9$;pp#/M ,X`+op>2)}FA.z R̝:Юzz(z8wGfy:<+tAmȓ'!z,z!D+"c :p<VcMZ}zl$= zW~N \OƽiÞh_K|RCxD/EOv" vh4ZI>QeQYy|Ot,zGT=[ҟl--o}E289?=\}3׻@z z,zҿ z., 'x%=7(` zY[zNd{I/_r3qQp /}~xڢ$[蟿Z\qfq|y{ /~ޞxڢ/^-^Y+cj\8wVy|O7hADF,^_V_偼@BHSѻxŢ#Ĭ-zYTH*??V-~wEﭷ"oOTNg@+o5^%`5ΝM=կ@cFS|觟Ҏm"wQ^=uKaŋSŭ8?Ո:s|@^ Sz!zdsݲK~65EoL;=bܥ_V%`U, {j_/It,z߳}g,xDeʔERΝ"Sq VRCժV 4ǂֿ?*]r|С=ш XbT`AuܙJ(N9sJ*Ѳ%Fӿ ֧uF,܎*NVW=կ{gыtX$zCL} .}w=󦍴+h}ӽUZE#z,q 6 WMM>HN'NOi@h!lv7ɲڢl;zA{*y!m')y*qY[ծ"q3JI'cKf^oEl ^ܹG#z,YTͱ#o/OE vvkd:t՝e&wJ9sBa!ª˩D:e6dn;Eo\U}q)S#r;&~[i7e>Fֆ#߉TS~\>{>Ŋ MNi'ֺO)w5m*}tUVI{v5Zi}zy|>xh4x}ok_5˿EOk/fR פqZbSn1L:56Ðy{nZ_f͠a"o: ӧ<2!iuݲE>zhjִ)(Bv>ׯ&e3ӧhҤ3} srY?^:MZuҔ)6t\EF={v۷chνGʂRMckġhQZǤpgèVw&2Mf&6%n,}LJ5D%]/PB4a8 KmNG_6n}a!ҏ߳DO۴zꑃ";D֬^iR6nX/go|=tDH4s4ճXhO{A8{Q{wJx04$DuV3KSD3tNS?niZTLS0ܺCW;댲G,0 QT9|T|yq.Oo R6K_|kBnvq?R~}X5Mu.ʃղNER^\r3vN;HM}a͚Q-N>xӻ֧:זܯ[.O#n#xSXa\6o&CJCrXyyP~;_,ƮS7xED@3,zsC$Ja_E iiavjEwU4o>Dدg*MҢ oo $m\ CKm_Cgw()C{ ϾPa2ǒڽ1۸eϞ|=5^˨%҇˱Uq8k׻u3WW܆襲-ZC$ףCRyvԱc ǎ+M\1pPN|wm۷RZb*U"ed*-gmDo:uuw.qpֻ8F?:ouO\5z{->vڟ,۸_ٿHicC&5\ɒtsR9T\իWZ=Ce( ~%}y^<[r2o6~{͵wcqsC<)iHj+[a)ۮ5Y zh(_۷nBRYtHoϋ-EAɃɃx\;Ce/i&,p2~'Q86[.~*WDg͔IgLF֯3.Ci0ux}EPx;!}}yJNWZ-gQ]r][W?o b4oTRӐ|5W^PSR4i2v=^@ғ-_ }%-ߋ#zJ5y(;~J)>lXF)(o,P,-3y9RtU眆яqznN呡թS^={A^kq\).W&NP|ڨ4qx@:@?^Z x ?HOiJ|V{:W£mydK@:@/^&G!+e0xXcJD"z!zc;u<\H;^C X~H Q,p /}[7 ,z<m޸^XyX%X=ECjt7s~|@ t*z.Nѣ^ aP  K%O8'OC@u ,X`輌"Nу q'6*kG`rn!z=~y\޶f'zD(z@ zA zA zA z=@,=O7[oE{zc`oKիW POZA{SLc5ѫX" ПEC28+hc-˖-z{R.D߿gU˟??ӛVByիgU+Wۭ;w4 4ʔ)CEΝ:*"uP#yyAPbŨP"zE8 *y}d]:S%(gΜTR%ZlF_oBr'Z豠.])B_%@X2;ruLBWTZ55z D>'t[J,#z~>5=۰JٳgYoe48+WI?lb*Qn]0v 2L|6CR|1ibΜ>E{ʕ+Kz KB])şW\.}XgmJ3LdަDlow5kѢ"+5ir~N[x^M=n:v*J+/Iw}V,_.ݥFɠ'NT*W hQM0~;VZE'MD8Nޏٵ3(IZx͠xKyMcƌ5WԩSv-@F=,V7WcG`I-O͚5?Kq[Td(Q\$CEfكʖ-+B1iFEf9<,4ɻcc֮Y#֯s0gv$ܹ(>>d㾆G|t(zxaۼq}7::7گpZ;AcΑ#&OSC̥I-Zh3hD/cG8Eo_}۷Kx.]2 7;:r*X%g.Mڜ uDo"y8aKaSoQ54C~N>lB>f[R} }8̙8+CUP%)mSMoi3g˾NhZc|VcS޼y"1KWE|@]վ&cI:u둻ww2Os<7D@=[)6&Ƣoj"3!dFYG?yG0e˖M/)"5^,yN]6HMOڴ_&SB&M>$WO֡Sf?j{E/]1>x 7ߋ7Ə޷STT4h`Rxǎ QEi*z|O,YLoTM \S3=PÑˀIZ?^oQA6KjƢ.ߠ I͝q@׀+91/^m4?r|by>{`877 @`q=ZMoݲH[ `U|5݈{wiҤITref=[MN5m.5rQ2etzFxѣdɒTpL)z^"pfNYz̟;̛M~>>&_EؙKo*_Ԋլ6}e{Rq l;a˗9ѻ}8 *LŊ}QruDO5b8|S'NcIWP9ɒ4݁9F-_L#zFuҶ@i1GX^޽Mti6ԫgO1ͣS'#әNRQ>{*`:sHRf'Q';<%^3D@=>z 0cqq={v:t0BL{v=r$6Zt ^*/R55߉3A37kp%WΞ9#jDNLl:KE*wZlLnxR8 :tO\Ɓ+F3f n~XG%݈$ыpO#zqwH5z""(Gt^DEoTzMi剞gY@܆gjz=wyvAΟ'o/O}|nݤ׽{wwʟtEWD2; Ơ@=S&ܦˈ P˖-B F'LiXٯR{.ׯӷ}PRlٲ_"E\3m?Hd-!59{6t3b|d|RȘuf !z7oǒ_0qsbrXDvV-{Ӝn!d,6[ D aq@fz= z= z= z=qܼ*O zt-z,n~>4yOf:yz=d7rD/ұq[J,Iwգ#gѻ%5jdB'0~$OvG^6Wsi Tʕ믿 R2eiذa"ܻRNuQҥ)W\TzursuՄqѣ… 6'"CpJ٩Nڴkgf[7o\~NɺqwY|rޫW/r"۳{UZ"0dܩN\vԪeKP@V= ,z, ?ex%66Vs%=er䦧}e=b>}-[Vj*zGEvY$zjs)"A={nGOm"nMV%O+r,[cvޛkԵKHͽ,.z%lthL4ի+x)pݲŤH!.{cǎ%Jʗ7+z W@XΈYkhRJ~7xmI=MNQvmءEn/?/9 -$@ z@xBhE[uBl_7*THDʢoA ~~у襥&-7D2L3;DYObE5WZ,z f&}D]:w҈^͚5a?H\q=D7GE;\|m V,7+W|y? MȒD/M{vdT۱͟wJJVZFu=d1t=m;6牔;wnD/=^"Eh_VOi6T^=r;wSEfAdpC3w,-_ FEoE>iJ#zéOT\Yʓ'ըQڶT#z?n&+W.%-_{n{I'd'P7|_ Ww32$$$9 zw7W|y=^f=dyEwa.E>Ι#eGz5SFp>WJc5eTLQfv AEۓbcnC2AmRDoiZ$EWܫKt~]KjբƍkOF=sהE/^;d ыOq_-ne|ћ1"㚼ʾؘ^:͛;jWEt1<\LUKkJY)n˂7B%%ǬX4ibpPjղ )_}7x&L}mapsu=>n:Ҭضm[BCs71\SxqիR{QTdI*\k`;5vIv3+4x ΃-00@~'6~8*Us^R4pULI: _קOoI'~@{NyڏEfd:{;Jviœ7QhH0tP׬^-eM b9tj>D5`){Md5)gΜa\˜`q^XhcXv,x|N=^{ܬ}\=ҿk_c o@E z_xnM s% ereKE㰷7p?-n4$, ҶjJ2}XlO3~ܸDkLWbhU:"ѾԠA>'O)&cc8OpM&~nD\\D޽;Sm ktz\[7Wm*>zL}u2@u{=3f4~M޹3<#E zW|DW͜nC?w-7|,=kr*/O-7״@_@xK!S6n"?<g1(UHCfME>خ];6n&*V(5Gkצ:ɎkPG0}y~:cg..swui"We:[U瑴|XhyD=n>{Lo~ 3y{y:`%R^>xy~]@˾}"Yz1!+Ծ6cɒ%w=oD\ӣG =Y[~?.@D/ŢǒtLc۫)tP:{^x?e M/_YvWhͪgdly9::RBB͟3덊Rn/SzM^E{FXzAKR%K7ݻѡ4wXYl+]T»vB3)zn[\SB$^33[]F͛7SpppDnJ5w/^\/M;Q|ߦ W_}i1^bӍuܙ>^ɧfTBZf =}fϜFxccbATV-Z`O'e ѫZ*5R)7~>u*2~`@%z,rٳgmf_5},ei*XҌbuID/3ћ1F:7zhɃ+VgɛkM0ԩm7%-[6:|`/%Rd[=N=*9L=0aDo{?uUz[jI;dJcysrr>Eå&G"vbUTnrY8`+Wʔ)CSK&Nl z(;c8~~[+DE\=믥`^.]4}*p.]:k)RfϚ)}Tɛ(P@A `=rU%JPRF{%z<¶SlWTIBU~\-4"E\rQ5h3m/tdzk7exn c\Ap𶨳g^m**I-=si0tt=?/!׮B@ gȈZuaر]s7N2ύkkx=GRX8<,4ĠPܾ%<7+̥A=C:"h*]I=>GΜ9K>Xϕ4<ɕ-=mn2aU2ڕ;/_F۷m}w&ԦWׯ__MݻwwգmRUGxz…p>>zPX1IqҕcxFٲeEy z޼y{E/KN}64Ksgтy)"SL '7q8ӧ4|7x%n޸NeT|y8qСCbŊ^vmءCD\l&Ok΢t%Ux_ظqc7/zS~ B2%$<|ycui"/@ z d2D28< <99mŋ!o@ z #5x\˯ϯу=/^D.z,wI@/DS._<;u<\H;DKTK蹻8m޸7V7*zR[ zz(@f=nb|1D/D^f=O-i&zq1' {ML z||}j[IV?zpС=t0MҞ^E/JZόV>PA^/=8`+Wʔ)Cө3tiTN~| =h<Az7o^UHXe… E S5pK\rI\]S,z1i"|Mc5OTgNuԦ];,n5w}RdI9zݸ;4bp*_q^߂+ݟ+c3)y͛,-qXI89m| D.7k{E[VB6mgϞ&,u!?:sx{w' *$MƖc͚5M#5Ү& 'D9s)}&MPЎtPyˬY"wNF8pz-=s͓)P==6mB!{e_蓜{(^*:x5j$lI@YX<\,'|Y*E KE" qlCCW;wny{zlueRI=0i3Zi7\ы4FEiN;%g(}ߓ$^j]?s~8} oh>_|իW<=k\kmkX䈞%\4.yׯsf{ƌmQ*zǏ?7 @Xƍ"`{v͚7*z|܌d}ƟY}iq}dhԦxӻ֧ڛ%/"Wʹ-*iXLW~<>9+?ޞᇍcѫY<`ݕgt)z^"pfNYz̟;̛M~>)= \aHXTыFs1X&#A=@=?wקΛDv -zK/Cd Sk69*%BE/US PI^֟HܶkVmՍV,_''{R7}T釴/,q9E[|y}U&dJrhCM?jժc,X +Zu*RE'K4p#,W,mt\/z!YWFmڴֈ^fMc7NFh@z~-^D'܆AD/[&AK33ی$zn. zeF^Aуeuы>Y[~?.@@&@?^f=W~>4yOf:y˗/2|A2a{[7D/mQsqZO%@2豼999G}D"uRףG;u腇R-H"PքݍC#F ŋ^z)E?~yD?~ym۶jժѕ+Wtj)zu!ɓ):~쨎(pMPH^9Voo-+rw)yլYSR>x{=>g&M(htCy" ȆZ޽{Q֭rЦMcϛGNFJ%yeiscj̚%8,@%Eg>jժTD iUvi3u_L[MбGh!>9s&z?9S[tAjԨȗrlʇiQ=^=^T٫S4ؼoϚ5+~ߓZ9~q(k,9([l~UsA37#6&FjΚGN#gLJ|#"4"m\c*啥gɹ-=ؒs}x"Y7w.M>Mjo&ۺw&e6}1wnhy`Y rd%[ah{Z7@mue"{ⅎ1W^}MLo8M4h@*[,}e;o~TIiỶUL 6&6_c2ĵMmSTc^cyeYrnKi(~mk:f͚J^ϝ3GB Mb܆Үڟøf;e%[RD/ f'zD/3dDuH\u8`gkR5 ^~[yQ5TK4t,a!fE2Ç^;C%kVd| DOmTkXx=G&_sT~$ܖӜYr.n-Z&\nbF-771%b){ik ;4%[RD/ E s%<|#t:+ix/+=SX1Zru~Ojߨ)B|ckEOw(qs}T^]`Î,Ï1Ǎ9$}n޸.qILMsg=M>=4'zqmI4ޭ__i0b=}dr{ј1 e~U:q%[RD/K%lthcV\>Q{<ʿΟ/5!~< ǣ6]lфq_CRŊ;w*R<Dlт*/oPȝ﹟L|}رcd""j^@3; NRG3j؃T^"9%bo?XM6u_̝;9yɃnv%[RE/KYgGץ 07@ z]=D/ފ}= z @=O7sF%JӧXN(5(zAH^ # z@LըQ~Uj̉30豼/z,h}!k:k^"`w[V=4 KL\NDM`_XQڥ E*BŒ7vh][,^$slS[HԲe 'CM_/I6Iy=I&ߤF  ~fOCof516m5K =Z[=D*B, ?D^`3 A#˔ɓ=PB/xSMz :vHJuucxgΰzsְs%t<7'̡oXgcsFVښ24~){ {宻KP`DEnVF u;km4llgz -{ SٮNwX\&/Uv/dfƍ1Oa_$ ]$~qúՄLNL[{Q9 =Aҥ4n {M7J6 =yBoK^E};kӦM:WO4ԯoV3?`Ɔ *t^( 4zuJw V-4{ v͚5#ۜϯ~>.@TsG%Y/xu8[UVaϕn78%x$4D~7 z۝wϺuW 4iҤ†>?p9#%N8!g^XHdefx<_O?49jٹbŲ%2|7RvmQ z:[N_"yGs̓Zk=1VY>VֱBωUxi ёrCTЛ4YWЬ h֕O/1xY,6fs=N]דӕ}Hc gn+ӪۊY\} BOg\יp-5Hc =;'gCOk.7yGAnN4n|9fbǎ-+_ ݶn١C5hQ~SuQ{U3ݻu3:@5G.~uttz^{U2KEz?TgY 7wnVݖ4ֺӧձvf=&^O-7g^>@z>zGRS̛Яz'-[>(k׬6?ҩӿesRb~]ҴiSsh2z|Z58b11s)nZ0h@۷ɪ%Τy jVw?33estw}&2w?T@lsݻvʀ-Uͻz%Ff;+ j; =G2}~|As? \IW = =zyMUȋ^3}:om&yO?-#G0_k0~٧foe_|R|^az(ޟzyNޕ*ʳ~Gk:eEHZ4goϮֱvv\x{LYrEI\\ys*zzgϞu*ϥS:ҪUKn{cN6̢z۷m3jժUMܙS=卮]QF1B=Je iѢYUi}zzt:!Cc.i=&}=Sa[μ\yR^p_^Qɺ+tDwаf3+nK+yU Pg y~ ć3Qw@IM9\趋*&֬lfk/[6Gۚ4q+X2/E ]ih=&ݼ(μyR^|\%B$f. ^ ==6މ/p1speWCϺ+zsϵ5 53(pA u6oGwWf) ]N:2q„,3ַÇȺ ??SƩ^vsۺaڑTfjDEF}~oQLc%<<\֯o_Wֱ5t&LcOWBcv4^^3wnngj%\y҅ Y8OgM&%LY?ɐ"z , [\S/y骻=zȵ^kf`tNJ<|7YM}`o ͶM6g'|[e9.׽Ju[4=Ά@-0;P\ӸqWֱ;mn_g|umG1;/Gɺ͞n^A@~ՎrKz=<@ fU{Fĉgtq~\@UQqST .'O *{Ы Fex@=]O=B^uiB|~PJBϧCVz ]lftunߦ=b BσwIBO 71Bzށ.#@ =Bp|s<;]>]&]ef,yz*yG$rz9ЯӫvP1LfLl{6@z,ٴa j t}uuBг]uIz^Ԧ n[u$lMVYgyf̿E/= =]s" U+#yUz5jԐn>VZŮtA4^.RsӦ2s4yG(zXM?Uz/o'_w6IӦMdڔ3]t -B(z?_)W,/)e;w!TӮp:t:O)+/Gyذn YGYvM_w{̞eVji9+zu;ɴeŲpiҋplRz]:.7|̘>EBCɀ=NؿY9s%3 DϭI%zQf R %xs3~aD /t94ଫn 21WfM _6$xPӧ6|II+^Ϸ~fw y$^4$<ԜW[l[zzՄ^%3\Xz%/?'N/ږYY2u B/x~=ݹ4?I&ms]RS{xS7se GJƍ튍5;ve4Jx {ǽzݝYB"_5[db˕S۽$W]u=^\͵*z|U=B+믿zʄrsseȐ!zjIKK7c=&ݻwJ9s :+##@USݻaF?ӽnګҰaW4oBϓwnٹcKN"|0t9VҪ[dŊ;?wBﴜҩӿY&^yBCe]0[֭]#w4SFFMtTTh;+c>CO߃>hX(L_}<uҡC2~a}V8~\33v&z^ =jP+]%Jkkujf4.pzC2;Vߣf~_߾Fֽk[s5ШQ#{nK(twn3xolg{F;\^N8aBA]\lnSWm셞;ìZnpw(1ɲBlk[>$cG$z^ t}WGWejkl뭷?,WMдjҬӟ {QVl" iܸبILH06Ǫwyܶnx; = 8X;`XWj ޟݺA=uz޲KvJX=u:uk/>#y*{#ɴ<JwmYZWo>吆  zp7d,ؘJh%#툱rrW_~iY$ʗC|utOjBO0BЃ=zac,1];wTӽӏXQg8_rݻS4GU5MYfvgM17^~^֊evotg BO^|\AwYz^Un cKw[Q,_JPCo ApΚ.3M=zzzhݓz.^xB3ƪ[f \< F #NO'OzP|Y Veƛvl*3gLsU?t#bgFn\'_~$Ǚ,cY$IRB|˲bO=vʮeo\?#11,yz*wn0Яӫհƌ4Ə-MoLn̘6٘9}Ξ%sgK%Ϟ=[ungzP3gNo&;љJ]Z<|"!=ja]]n1}?hAz8"T|1}&#=;xdɦ d-іOdefIFFOJOKIiGXWR=.aٴqٙh]fAzC,(Xz7BϕKLvihxڡ,daB$7]+$hp K$r'=w?2TWzwB} 'lnL}${]&qBzyyG=z:׽ҨaCs /m[ BFfnRn]U Kk֭.L*y=ӿ^+-QNϋ]urvruɥVMȴ) B)Օ/X\gQ@q_~>.@b;Ƞ㟐,t,_zǴtfwdqHX!Zǃm[ /]&||j&>qZb+ӯ;IM,+-v/(M4)Q#KP-6MoGͭ7C0\x'O?"+zI./k ]'?/OCHjٚ5kH%[Ii mEXVhխ5m#77/ęڴC АEn /UkWq6za! z9'^}$<eBwC/ 7`= *iڴDEF:u_҆dk3ynuٿy$EJzl&#HnbC/>%@y*t[8}jܸogy\BOFMU},o B=2#W;tylwxW_(?jݺtСlطÇd7eӦ1CWݫ{Ҳ僲vj=tB{=McF]3z҈i~睖 s<[vJ)1wπٲnj^Foz_:|xΤz4nSguF,ٲere;u$e :Dp2sgIZLK[~_5;4Im$%#q%~-6=z|>ۡrur䢋.*3:z$mZ&!\n~Q3c!tMg҆ ͎3VgCOkjVlS7|=NNR G<`"\^h ^~NBгzKBCWCOcW'L0Aq7V/[fӾ];un\ Wg{9IXXApӡg];\I5qhv9zJwiԨ9OG%]^N3涏\[2„Qw6| {l}weF)qSCMzo9򲉼wK'N7h/Irg=r z^ =h 4L=%u՞~uS݆Ogtt5Kn >-=u^kv*[?t)Uر7]ڽrMf۴n]>h@3mڴ)8\?p}kz̎+z =:1!?R=?Qk$Iͬ^%9|B~NKo`ކ[O=BRc &xJ{9ؘ*SgR$pٿNK]-Q7HꎿɉW%~}mɌ{TrSFzw~BCi=Z\N\=)^2{[b%2~>C=.BЃ %Ǜtȑ# 'of- #-4tձ1rsrz*ǩ_^^E, 7Ezlj|,b,W—L~ z'Ν;'!P5Co~P,'KipBzP~7N6[Kp)!>NF&_ YhfXuˌ-zȍ/>5o:⍍'pI YYkm=riQB/eq#:eYݳ[F;̬Rʪʐ|V^q1\&1ƙڹ_oU/tO?"=tvEWVx)5ƍm..foAڱ<׶mm^yeꪫ `&Mdw BFfnRn]uŮ)۽$ 7K/HԦ  YTzCyЛ ԪUK4/۷#o^NN[C/.v ILl]zd ~xQq|]3 q1&4(X)?\QlK˖չU&& oAwY,܏ӧz+ik+xyzsW\!vݺ%D5"/3f袋$d‚U!yh΄^ƍÄnυ<zN.Y]ίKW^>*&Nj.W^y 0w+9z+#5\ܩ[&^zɬ}oiS=C<#d 4ma0{VӠV Y՚Ri]xᅅg-03z:3/?nYwpп?HB&ܾrR~}o`VoۥSFon /l;xVXngƴ)NBeɲlI|٧fM =@zgڵySt4jȥЋhv=s׿J^ylTz*iӦ\s@9k=ԪԮ}z|=Bza!AzBoIh%=Bz=B@zs&zЋXn#^|\r]&=BHYc/,dΚ.3M=P Gz =Bz Bz Gz =Bz Bz Gz =Bz Bz G8zz`F @B =B/#/@B=@GB =@z @B~ =qGz=z=B#Gz=z=B#Gz=z=B#Gz=z=B#Gz=ʒŋ !c/Mn4޸8ewZdk\VHa >#͸%ƞS);n)&D_~IN)M͑$+370%be/cN8%HdBOc]볲;!Ōc̲^f?I r$%˼9r$obJIJ{^{cff4H{iYldnl9obJIJ{^{cۘ_=ǘAjf_%)t<[692'̛BewZw(m9/gto(%42Գ^{cmzY錞ކ=i =yR/71N^,{k^QzƏ5.0^c?:D2/;wfz\ =_2kk,cVzL[AU$yy2kTBWƚsST睐&/|#?˗U?|BWƚsw$q^ Lйz;Ohe֭[O>r"!C< իWzɃ>(V*$OcK/믿^z)N2Xٞ$ח#GJI3ğd}z;iyyG =.w}\5k&gϞr,{=5{|/ (-2_{'gZD?O:%w~xbٿ^Zz)iڴ=[C}VVy>< =Bm_s5&:5j$7n$ d潨СCꫯC:K톞F^}}}.TzmR:ީS'Sڎnf͚ҭ[7sڵkKΝɓ^[L~7""BZli~w=:%-7K>vf2X_wu:o4lP.$$$.Lz-sՙ~r HYҙ(ެ*.{7C|B{˥VZ&]ǎMyJ Oz?t+>zH[.]8|y:}~1ٽ{fB_z\vڵMOݑ5]n:sXWըQCrrr fӦM+sXgffǞzϗhJwflρݾ}lM7TתU+Yv ҼGz3N:].t嗛1)\3.}mBc\gGމ'`^>^ss=/?\piРA۲^y6m4TǏc˵%Բ\SY&2CfjѢ`^|Io޿y,e':55<4^wb.2r\x뢋.bySHo5nqRef\K.8OHϛ3'H.b7onrz3|ohO<&MP輭[6K5$3#3]ꪫ$6f4o~..eƺ_r-Hڑb/{|7iƳz~Yؖ=ca;YB!?k:fw}ۘڜo;ꝷ6TŖ=г v+;K4nܸ཮~Y(޺ΐڱcc({76[#ҷfoe]c[o}]蘫4iѢ<1c10v[Urdmٲ\~w0˯.W5PQ}KsəѼcYdfe77NYVff9\~wvfЫޒ]N>lU>Wk VHVNcVY ٳfHNvͭt9:\~w63z\ -iY=$C~]!>W>sdd1^eʪ N] EGE0n +eoI,WbcwCTe/ϕzcʦߨE l@nN6`Be痽65lC/Lk=^O/{kuAe0^eKNL0(t;RX[C/&a?cVΐ>#en7^f wn7DgϜ!8'޲XGƤ31+] fȘ^vVl%S({vt|C\GLO=|`<*9)Icc\+w0 %*JR&D,{e7q2%t} NwySSSKL> Ix@v$ YǛ [' 3z*+#mo(ޑqG$nx'Wi.ҩyw=K:oNlCi,{e39995>]Bƚ)]ۚ9{B0f[ &M /֧.fD(U. qO?LXRf;?K7/.^-{kƉDEM7ۘgÞtkuJ/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc DIST_COMMON = $(srcdir)/Doxyfile.in $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/geany.1.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/geany-binreloc.m4 \ $(top_srcdir)/m4/geany-i18n.m4 $(top_srcdir)/m4/geany-mingw.m4 \ $(top_srcdir)/m4/geany-plugins.m4 \ $(top_srcdir)/m4/geany-revision.m4 \ $(top_srcdir)/m4/geany-socket.m4 \ $(top_srcdir)/m4/geany-status.m4 \ $(top_srcdir)/m4/geany-the-force.m4 \ $(top_srcdir)/m4/geany-utils.m4 $(top_srcdir)/m4/geany-vte.m4 \ $(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = geany.1 Doxyfile CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" NROFF = nroff MANS = $(man_MANS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DEPENDENCIES = @DEPENDENCIES@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GEANY_DATA_DIR = @GEANY_DATA_DIR@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ GTHREAD_CFLAGS = @GTHREAD_CFLAGS@ GTHREAD_LIBS = @GTHREAD_LIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_V_MERGE = @INTLTOOL_V_MERGE@ INTLTOOL_V_MERGE_OPTIONS = @INTLTOOL_V_MERGE_OPTIONS@ INTLTOOL__v_MERGE_ = @INTLTOOL__v_MERGE_@ INTLTOOL__v_MERGE_0 = @INTLTOOL__v_MERGE_0@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGFMT_OPTS = @MSGFMT_OPTS@ MSGMERGE = @MSGMERGE@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ intltool__v_merge_options_ = @intltool__v_merge_options_@ intltool__v_merge_options_0 = @intltool__v_merge_options_0@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ man_MANS = geany.1 DOCDIR = $(DESTDIR)$(docdir) IMAGE_FILES = images/*.png EXTRA_DIST = geany.html geany.css geany.txt geany.1 \ plugins.dox pluginsymbols.c pluginsignals.c \ stash-example.c stash-gui-example.c \ makefile.win32 \ $(srcdir)/$(IMAGE_FILES) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): geany.1: $(top_builddir)/config.status $(srcdir)/geany.1.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ Doxyfile: $(top_builddir)/config.status $(srcdir)/Doxyfile.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(MANS) installdirs: for dir in "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local uninstall-man uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man1 install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-local uninstall-man \ uninstall-man1 pdf: geany.txt rst2latex -stg --documentoptions="10pt,a4paper" --output-encoding=utf8 $(srcdir)/geany.txt geany.tex pdflatex geany.tex rm -f geany.tex geany.aux geany.log geany.out mv $(srcdir)/geany.pdf geany-$(VERSION).pdf api-doc: Doxyfile doxygen hacking-doc: ../HACKING rst2html -stg --stylesheet=geany.css $^ hacking.html # when generating documentation, first try rst2html.py as it is the upstream default doc: geany.txt (rst2html.py --version) < /dev/null > /dev/null 2>&1 && \ rst2html.py -stg --stylesheet=geany.css $(srcdir)/geany.txt geany.html || \ rst2html -stg --stylesheet=geany.css $(srcdir)/geany.txt geany.html doc-clean: rm -f geany.html rm -f geany.1 rm -f *.pdf uninstall-local: rm -rf $(DOCDIR); install-data-local: $(mkinstalldirs) $(DOCDIR)/html/images for file in `ls $(srcdir)/$(IMAGE_FILES)`; do \ if [ -f $$file ]; then \ basefile=`echo $$file | sed -e 's,^.*/,,'`; \ $(INSTALL_DATA) $$file $(DOCDIR)/html/images/$$basefile; \ fi \ done $(INSTALL_DATA) $(srcdir)/geany.html $(DOCDIR)/html/index.html $(INSTALL_DATA) $(srcdir)/geany.txt $(DOCDIR)/manual.txt $(INSTALL_DATA) $(top_srcdir)/README $(DOCDIR) $(INSTALL_DATA) $(top_srcdir)/ChangeLog $(DOCDIR) $(INSTALL_DATA) $(top_srcdir)/NEWS $(DOCDIR) $(INSTALL_DATA) $(top_srcdir)/COPYING $(DOCDIR) $(INSTALL_DATA) $(top_srcdir)/AUTHORS $(DOCDIR) $(INSTALL_DATA) $(top_srcdir)/TODO $(DOCDIR) $(INSTALL_DATA) $(top_srcdir)/THANKS $(DOCDIR) $(INSTALL_DATA) $(top_srcdir)/scintilla/License.txt $(DOCDIR)/ScintillaLicense.txt # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: geany-1.23.1+dfsg/autogen.sh0000754000175000017500000000527212146146074016063 0ustar hyperairhyperair#!/bin/sh # Run this to generate all the initial makefiles, etc. srcdir=`dirname $0` test -z "$srcdir" && srcdir=. DIE=0 (test -f $srcdir/configure.ac) || { echo "**Error**: Directory "\`$srcdir\'" does not look like the top-level package directory" exit 1 } (autoconf --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`autoconf' installed." echo "Download the appropriate package for your distribution," echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" DIE=1 } (intltoolize --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`intltool' installed." echo "You can get it from:" echo " ftp://ftp.gnome.org/pub/GNOME/" DIE=1 } (glib-gettextize --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`glib' installed." echo "You can get it from: ftp://ftp.gtk.org/pub/gtk" DIE=1 } (libtoolize --version) < /dev/null > /dev/null 2>&1 || { (glibtoolize --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`libtool' installed." echo "You can get it from:" echo " http://www.gnu.org/software/libtool/" DIE=1 } } (pkg-config --version) < /dev/null > /dev/null 2>&1 || { echo echo "You must have pkg-config installed to compile $package." echo "Download the appropriate package for your distribution." result="no" DIE=1 } (automake --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`automake' (1.7 or later) installed." echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/" DIE=1 NO_AUTOMAKE=yes } # if no automake, don't bother testing for aclocal test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: Missing \`aclocal'. The version of \`automake'" echo "installed doesn't appear recent enough." echo "You can get automake from ftp://ftp.gnu.org/pub/gnu/" DIE=1 } if test "$DIE" -eq 1; then exit 1 fi if test -z "$*" -a "$NOCONFIGURE" != 1; then echo "**Warning**: I am going to run \`configure' with no arguments." echo "If you wish to pass any to it, please specify them on the" echo \`$0\'" command line." echo fi echo "Processing configure.ac" test -d build-aux || mkdir build-aux echo "no" | glib-gettextize --force --copy intltoolize --copy --force --automake libtoolize --copy --force || glibtoolize --copy --force aclocal -I m4 autoheader automake --add-missing --copy --gnu autoconf if [ "$NOCONFIGURE" = 1 ]; then echo "Done. configure skipped." exit 0; fi echo "Running $srcdir/configure $@ ..." $srcdir/configure "$@" && echo "Now type 'make' to compile." || exit 1 geany-1.23.1+dfsg/README.Packagers0000644000175000017500000000735412146146074016645 0ustar hyperairhyperairNotes for package maintainers ----------------------------- About this file --------------- The following notes are intended for package maintainers. These are not meant as strict rules but only as hints and ideas to make a package maintainer's life a little bit easier. So it doesn't make much sense to include this file in any created packages for general distribution. Packaging hints --------------- If the final file size of the created packaged is a problem, you might ignore some files and don't package them or put them into a separate package. This can be easily done (without any further complications) with the translations files(files in %prefix/share/locale/). Another possibility is to skip the tags files in the data/ subdirectory. These are only for auto completion of global symbols. If the files are missing Geany just doesn't provide these global symbol auto completion but all other things will work anyways. You can also skip packaging the full HTML documentation including images. But if you do so, please include at least the text form of the manual. What you shouldn't skip in your package: the filetype.* files in the data/ subdirectory, these files are important. If they are missing, Geany still has a fallback mechanism for syntax highlighting (if filetypes.common is installed) but several other features for certain filetypes will fail (mainly build support). Testing your package -------------------- There are a few things to take care of when you create a package: - Please check whether you include the following files: ScintillaLicense.txt, README, manual.txt, COPYING. ScintillaLicense.txt is the name of the installed file in the doc/ directory. In the source distribution, this file can be found in scintilla/License.txt. The file COPYING is the GPLv2 license text and should(have to?) be included in your package. - Start Geany after it was installed out of your package. Pass the command line argument "-v" to see whether Geany complains about missing files. - Check whether the help menu item (Help->Help or F1) works and opens the local installed HTML documentation in your browser (if it opens the manual on the website you didn't install the HTML manual correctly and Geany falls back to the online manual). - Check the About dialog (Help->About) whether it displays the full GPLv2 license text on the last tab("License"). Feedback -------- If you have to modify anything to package the Geany sources for your distribution/target and these changes might be generally useful, please report your changes to us(the Geany developers) so we can apply them. Such changes could be removing/adding any files, modifying the autotools configuration, any modifications to some "meta" files (like geany.desktop, geany.spec, images/icons, ...) or even if you have to modify the source code to fix broken compilation or something like this. Please inform us about changes you made, so maybe you don't have to change it again with the next release and we can fix it in Geany itself so others could also benefit from these changes. Announce your packages --------------------- After finishing your package creation, feel free to drop a note on Geany's mailing list or directly to us (the Geany developers) to inform us about it. If you wish, we can also add a link on Geany's website to your package. Geany announcements ------------------- Package maintainers are encouraged to subscribe to the Geany mailing list to stay informed about major changes and of course, new releases. -- 2008-2012 by Enrico Tröger, Nick Treleaven, Colomban Wendling, Matthew Brush and Frank Lanitz enrico(dot)troeger(at)uvena(dot)de nick(dot)treleaven(at)btinternet(dot)com lists(dot)ban(at)herbesfolles(dot)org mbrush(at)codebrainz(dot)ca frank(at)frank(dot)uvena(dot)de geany-1.23.1+dfsg/INSTALL0000644000175000017500000001722712146146074015117 0ustar hyperairhyperairBasic Installation ================== These are generic installation instructions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, a file `config.cache' that saves the results of its tests to speed up reconfiguring, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.in' is used to create `configure' by a program called `autoconf'. You only need `configure.in' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes awhile. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and documentation. 5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. You can give `configure' initial values for variables by setting them in the environment. Using a Bourne-compatible shell, you can do that on the command line like this: CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure Or on systems that have the `env' program, you can do it like this: env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If you have to use a `make' that does not supports the `VPATH' variable, you have to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. Installation Names ================== By default, `make install' will install the package's files in `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PATH'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure' the option `--exec-prefix=PATH', the package will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=PATH' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Specifying the System Type ========================== There may be some features `configure' can not figure out automatically, but needs to determine by the type of host the package will run on. Usually `configure' can figure that out, but if it prints a message saying it can not guess the host type, give it the `--host=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name with three fields: CPU-COMPANY-SYSTEM See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the host type. If you are building compiler tools for cross-compiling, you can also use the `--target=TYPE' option to select the type of system they will produce code for and the `--build=TYPE' option to select the type of system on which you are compiling the package. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Operation Controls ================== `configure' recognizes the following options to control how it operates. `--cache-file=FILE' Use and save the results of the tests in FILE instead of `./config.cache'. Set FILE to `/dev/null' to disable caching, for debugging `configure'. `--help' Print a summary of the options to `configure', and exit. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--version' Print the version of Autoconf used to generate the `configure' script, and exit. `configure' also accepts some other, not widely useful, options. geany-1.23.1+dfsg/config.h.in0000644000175000017500000001064412146150001016066 0ustar hyperairhyperair/* config.h.in. Generated from configure.ac by autoheader. */ /* Use AutoPackage? */ #undef ENABLE_BINRELOC /* always defined to indicate that i18n is enabled */ #undef ENABLE_NLS /* Gettext package. */ #undef GETTEXT_PACKAGE /* Define to 1 if you have the `bind_textdomain_codeset' function. */ #undef HAVE_BIND_TEXTDOMAIN_CODESET /* Define to 1 if you have the `dcgettext' function. */ #undef HAVE_DCGETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define to 1 if you have the `fgetpos' function. */ #undef HAVE_FGETPOS /* Define to 1 if you have the header file. */ #undef HAVE_FNMATCH_H /* Define to 1 if you have the `ftruncate' function. */ #undef HAVE_FTRUNCATE /* Define to 1 if you have the `gethostname' function. */ #undef HAVE_GETHOSTNAME /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_GLOB_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define if your file defines LC_MESSAGES. */ #undef HAVE_LC_MESSAGES /* Define to 1 if you have the `iberty' library (-liberty). */ #undef HAVE_LIBIBERTY /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `mkstemp' function. */ #undef HAVE_MKSTEMP /* Define if plugins are enabled. */ #undef HAVE_PLUGINS /* Should always be 1, required for CTags. */ #undef HAVE_REGCOMP /* Define if you want to detect a running instance */ #undef HAVE_SOCKET /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strerror' function. */ #undef HAVE_STRERROR /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strstr' function. */ #undef HAVE_STRSTR /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define if you want VTE support */ #undef HAVE_VTE /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* git revision hash */ #undef REVISION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define to 1 if your declares `struct tm'. */ #undef TM_IN_SYS_TIME /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # undef __EXTENSIONS__ #endif /* Version number of package */ #undef VERSION /* Path to a loadable libvte */ #undef VTE_MODULE_PATH /* we are cross compiling for WIN32 */ #undef WIN32 /* Define to 1 if on MINIX. */ #undef _MINIX /* Define to 2 if the system does not provide POSIX.1 features except with this defined. */ #undef _POSIX_1_SOURCE /* Define to 1 if you need to in order for `stat' and other things to work. */ #undef _POSIX_SOURCE /* Define to `long int' if does not define. */ #undef off_t /* Define to `unsigned int' if does not define. */ #undef size_t geany-1.23.1+dfsg/AUTHORS0000644000175000017500000000062612146146074015131 0ustar hyperairhyperairDevelopers: ----------- Nick Treleaven Colomban Wendling Enrico Troeger Matthew Brush Frank Lanitz Regular Contributors: --------------------- Lex Trotman gmailcom> Eugene Arshinov geany-1.23.1+dfsg/NEWS0000644000175000017500000023727412146147733014576 0ustar hyperairhyperairGeany 1.23.1 (May 19, 2013) Bug fixes * Fix custom styles under KDE and for people using gtk-chtheme (corrects tab coloring, #3607935). * Fix broken opening files from command line on Windows (#3613096). Geany 1.23 (March 10, 2013) General * Various fixes to language theming (#3573213). * Various Windows makefile fixes. * Rewrite printing code (#2629121, #2804000, #3475444, #3580268, #3580269). * Use the Geany icon from the theme (#3576695). * Make Geany-specific icons themeable. Bug fixes * Fix too aggressive scope caching (#2142789, #2667917, #2868850). * Fix showing project name in the Documents sidebar. * Fix opening filenames with leading or trailing spaces from the command line into a running instance. * Fix re-opening files with unknown but detected encoding (#3509407, #3605293). * Fix crash when loading a broken or incompatible VTE library. * Report scope including classes, namespaces and alike (#1996778). * Fix cancelling Project Close when showing the unsaved changes dialog. * Only use "allow_always_save" setting for direct user interaction (Quentin Glidic). * Fix some keybinding not getting properly displayed in the menus after being updated (#1912683, #3599251). * Make Terminal tool setting more flexible to support any terminal. * Fix replacing file name in files header upon save. * Fix UAC Virtualization issue on newer Windows versions when trying to save files to read-only locations (#3566329, #3515490). Interface * Control-click on the symbols sidebar don't focus the editor. * Add an option to place the message window on the right. * Fix display of non-ASCII tags in the symbols tree for non-UTF-8 files. * Replace 'Open file in a new tab' save dialog option with new 'Document->Clone' menu item. * Fix clashing button mnemonic in detect/reload dialog (#3587465). * Grab focus in the embedded terminal upon middle click (#3574724). * Add support for embedded terminal background image (Mislav Blažević). Editor * Update Scintilla to version 3.2.3 (#2808638, #2909124, #3094431, #3233160, #3540469). * Properly indent even if the indenting character isn't the last one. * Always display text in LTR direction. * Improve collapsing fold behavior when start point is offscreen. * Faster squiggle underlining. * Fix multiline comments at end of file (#3026691). * Keep caret and anchor position upon indent and unindent (#3167355). * Complete on dash (-) too in CSS documents. * Make wordchars have precedence over whitespacechars (#3429368). * Fix cursor position after comment toggling with no selection (#3576431). * Fix reshowing calltip after autocompletion list closed. * Fix uncommenting multiline comments when cursor is on a delimiter. * Clear search markers on Mark All keybinding when already set. * Never strip trailing spaces from Diff documents. * Reduce unnecessary redraws when typing (Evandro Borracini). * Fix comment toggling inside PHP and HTML with bottom-up selection. Search * 'Mark All' now also uses the fully-featured PCRE engine (#3564132). * Only set Find in Files directory once per-document. * Fix a crash when matching the very last character of the document. * Fix search and replacement of empty matches. * Fix a possible crash when searching on a range. Keybindings * Add keybinding for 'Go to Start of Display Line' (#3182425). * Allow to change the keybinding for 'Quit'. Filetypes * Parse '!' char in D parameter lists. * Fix parsing of Haskell comments inside a type (#3552129). * Fix Cython auto indentation. * Add more keywords to Forth (Oco). * Add some missing Haxe keywords (#3448664). * Add some missing CSS3 keywords (Trong Thanh Tran). * Add some missing D keywords (#3595187) (Felix Totir). * Fix a crash parsing some C macros (#3556536). * Update some Python keywords. * Update Python global tags file. * Show VHDL blocks in the symbol list. * Fix ruby scope after "do" (#3046418). * Fix parsing of ruby keywords when followed by a semicolon (#2130612). * Lots of JavaScript symbols parsing improvements (#2992393, #3034303, #3034339, #3036476, #3398636, #3470609, #3568542, #3570192, #3571233). * Use "scala" extension for Scala (#3574723). * Fix parsing of reStructuredText titles containing UTF-8 characters (#3578050). * Parse C++11 final classes (#3577559). * Parse C++11 enums with type specifier and classed enums (#3578557). * Fix highlighting of C++11 raw strings (#3578557). * Fix parsing of colons in D (#3577788). * Fix parsing of D 'static assert' (#3582833). * Parse scope for D nested template blocks (#3582833). * Ignore D angle brackets. * Fix reStructuredText comment marker (#3585377). * Add Asciidoc filetype. * Fix parsing of Python keywords followed by a tab (\t). * Add more HTML5 self-closing tags (Duncan de Wet). * Update default D template to use a more standard prototype for main(). * Fix improperly translated string in Pascal template (#3602314). * Add Go language filetype (tomboy64). Plugins * Export: Fix missing linking on libm (Chow Loong Jin) * File Browser: Backspace now moves to parent directory. API: * Fix plugin_add_toolbar_item() insertion order (#3522755) (Dimitar Zhekov). Windows * Fix spawning synchronous commands on Windows. * Show Find in Files status summary. * Add icon to the Explorer context menu item. Internationalization * Add translations: et, eu, he, hi, sr * Update translations: ca, cs, de, es, fi, gl, it, kk, lt, nl, pt_BR, ru, sv, sl, tr * Fix a crash when using the Turkish translation (#3560181). Geany 1.22 (June 18, 2012) General * Bump dependencies to GTK >= 2.16 and GLib >= 2.20. * Switch to Glade 3 and dynamically loaded XML UI description. * Rewrite theming support for better flexibility. * Add support for opening files read-only from the command line. * Always load the default session if configured to do so. * Make all filetypes use named styles to simplify color scheme authoring. * Make 'Replace Spaces by Tabs' only match leading spaces to preserve alignment. Possibly incompatible changes * Theming and filetype style changes mean old filetypes and color schemes are not compatible with this version of Geany. * There are some default keybinding changes but these will only apply to newly created configurations. * Changes to the "project-dialog*" signals may affect plugins. Bug fixes * Fix escaping of session file paths (#3425969). * Fix closing when minimized under Windows (#3421282). * Properly handle remote URIs received through drag 'n drop (#2966770, #3479567). * Fix build with bleeding-edge GLib (#3483388). * Fix color scheme selection in Ubuntu Unity (#3479674). * Fix very slow regex tag parsing on Windows (e.g. for HTML). * Fix detecting a changed file on disk when opening from the command-line (Windows). * Fix quick search entry behavior on Windows. * Fix keybindings conflicts check when swapping a binding. * Fix comments insertion in some cases (#3449635, #3534320). * Add missing Windows mio makefile. Prefs * Split "always wrap search and hide find dialog" pref into "always wrap search" and "hide find dialog" (Dimitar Zhekov). * Add Project Properties overrides for 'Saving files' prefs. * Add hidden VTE preference "send_cmd_prefix" to prefix commands sent to the VTE. (See the manual for details). Interface * Add support for switching to the last used document after closing a tab (Jiří Techet). * Improve the tab switching dialog for better usability (Jiří Techet). * Add support for user-defined labels for 'Send Selection to' custom commands. * Fix sidebar width when on the right (#3514436). * Use case-insensitive document list path comparison on Windows. * Replace Color Schemes menu with custom dialog. * Show selected line count on status bar when whole lines are selected. Editor * Update Scintilla to version 2.29. * Add a "join lines" command (Eugene Arshinov). * Hide autocompletion when the only entry has been typed (#3516212). Search * Add full PCRE regular expressions support. * Extra options passed to grep through Find in Files now follows a real shell-style syntax (#3516263). * Search pattern length is no longer limited to 248 characters. * Fix showing Find/Replace regex compile errors on the status bar. Keybindings * Add Project New/Open/Properties/Close keybindings. * Show overridden keybindings in bold for prefs dialog tree. Tags * Speed up loading of multiple global tags files. * Show global tags file preprocessing errors on stderr & add current directory to include path. * Add C/C++ ignore.tags wildcard format 'PREFIX*'. Filetypes * Add support for regex-based filetype detection. * C snippets no longer apply to all filetypes. * Improve support for HTML embedded filetypes (#2863829, #3127598). * Add filetype Objective-C (Elias Pschernig, P#3325139). * Fix highlighting of ``...R"`` inside C and C++ (#3425107). * Fix TCL keyword highlighting in some situations (#3432877). * Parse PHP functions with multiline argument list (#3037797). * Handle ``/bin/dash`` shebang (#3470986). * Update JavaScript parser from CTags. * Parse D class/struct/interface template bodies and template blocks; ignore 'static if' expressions; parse function @attributes, pure/nothrow and immutable/inout/shared return types. * Fix broken tag/word autocompletion in HTML/PHP documents. * Enable &entity; completion for all XML-based filetypes. Plugins * Split Window: show marker margin. * Split Window: enable basic context menu. API: * document_save_file() now shows the Save As dialog when necessary. * Rename signal "project-dialog-create" to "project-dialog-open" and add new "project-dialog-close" signal. * setptr is deprecated in favour of SETPTR. * Add ui_hookup_object() and ui_lookup_object(). * Add ui_lookup_stock_label(). * Add build_{activate,get_current,remove,set}_menu_item(), build_get_group_count(). * Add stash_group_free_settings(). * Add support for plugins written in C++. Internationalization: * Add translations: ar, id, lt, mn, nn, sk * Update translations: de, es, fr, hu, it, ja, kk, lt, nl, pl, pt, pt_BR, sk, sl, sv, tr, zh_CN, zh_TW Geany 0.21 (October 2, 2011) General * Bump dependencies to GTK >= 2.12, GLib >= 2.16 and GIO. * Add support for real-time symbol parsing. * Remove old filetype templates support - use custom file templates instead. * Add support for detecting the indentation width from the file content. Bug fixes * Fix generating tag files (-g) and --ft-names segfault. * Replace dates on template insertion, not when loading templates. * Fix segfault when inserting e.g. fileheader template when the template file is empty (#3070913, lphilpot). * Use the same indentation for all templates (Matthew Brush, #3193527). * Fix loading of non-UTF-8 templates. * Fix completion and word completion with non-ASCII characters (#3313351). * Fix HTML content-type detection (#3300703). * Fix pattern filtering when using Find in Files not to search in sub-directories. * Add a workaround to prevent Geany from crashing during loading of a LaTeX-file containing linebreaks inside headings. Interface * Add 'Save As' toolbar button option (Matthew Brush, #3153490). * Add 'Open in New Window' command in the notebook tab menu (Matthew Brush, #3118059). * Color schemes: use name and description for menu item and tooltip (Matthew Brush). * Shift-Enter in search dialog and toolbar search entries now searches backwards. * Improve `Set Custom Commands` dialog. * Always destroy open and save dialogs after use (#3311258, #3304273, #3201050, #3163742, #3153120, #2985896). * Add UI to edit formerly hidden preferences (Dimitar Zhekov, #3313315). Editor * Update Scintilla to version 2.25. * Fix snippets bug: {ob}pc{cb} replaced by '%' instead of {pc}. * Fix multiple snippet cursor positions for Tabs + Spaces mode. * Avoid triggering autocompletion on PHP open tags (#3199442). * Fix indentation brace matching (#3309606). Configuration files * Support copying filetype definition file group keys from a system keyfile with e.g. [styling=C]. * Make filetype group membership configurable using [Groups] in filetype_extensions.conf. Search * Don't auto-enable case-sensitive option when enabling regex in Find/Replace dialogs. * Remember Find and Replace options across restarts (Dimitar Zhekov). Keybindings * Add fixed shortcuts for VTE copy (Ctrl-Shift-C) and paste (Ctrl-Shift-V). * Add new keybinding 'Remove Markers and Error Indicators'. Projects * Store VTE path with the project session (Nicolas Sierro). Filetypes * Add Scala custom filetype (werg). * Add Cython custom filetype (Matthew Brush). * Add support for separate single and multiline comments. * Add support for filetype-specific indentation settings (#3339420, #3390435) * Fix detecting Matlab and Txt2Tags extensions by default (#3167315, #3154637). * Fix detecting non-lowercase self-closing tags e.g.
(#2226117). * Highlight C# and Vala raw and verbatim strings. * Improve JavaScript keyword handling and keyword lists (Jason Oster). * Add filetype Cobol (Seth Keiper). * Add file template for Vala (Mark Trompell). Plugins * File Browser: Make 'Hide object files' preference configurable with file extensions. * Split Window: Fix a crash when changing filetype (Matthew Brush, #3255968). * Split Window: Update styles when the filetype changes (Matthew Brush). * Split Window: Enable code folding (Matthew Brush, #3097780). * Split Window: Fix issues on Windows (Matthew Brush, #2725342). * Class Builder: Improve dialog UI using a table (Matthew Brush). * Export: Add option to insert line numbers (#3197150). Documentation * Add 'Reading styles from another filetype' subsection (Matthew Brush). * Add 'Filenames' subsection for filetype definition files explaining the filename extensions and special cases. * Add section 'Filetype group membership'. Plugin API * Add filetypes_get_sorted_by_name(), utils_find_open_xml_tag_pos() (Eugene Arshinov). * Add plugin_idle_add(), plugin_timeout_add(), plugin_timeout_add_seconds(), ui_menu_add_document_items_sorted(), document_compare_by_display_name(), document_compare_by_tab_order(), document_compare_by_tab_order_reverse(). * Deprecate ui_widget_set_tooltip_text(). * Fix public inclusion of config.h (#3384026). * Add new signal "document-reload". Internationalisation: * Add translations: fa * Update translations: ca, cs, de, en_GB, es, fi, fr, gl, it, ja, nl, pt, pt_BR, sl, sv, tr, vi, zh_CN, zh_TW Geany 0.20 (January 5, 2011) Fixes: * Improve compatibility with GVFS using GIO to save documents (Alexey Antipov). * Fix crash when closing a modified document (usually without a trailing newline) and choosing Save (fixes #3111058). * Fix crash when using 'Send Selection to Terminal' and the VTE is not loaded, and when using Ctrl-A after enabling the 'Load VTE' pref (Dimitar Zhekov). * Fix a slightly wrong encoding detection on Windows (#3019573). * Fix issue with single-line commenting/uncommenting blocks when using Windows line endings. * Fix saving project indent prefs straight after using project properties. * Fix wrongly changing edited keybindings when cancelling the Preferences dialog. * Fix auto-displaying of sidebar, tab bar, symbols and documents tabs when only plugin tabs are visible (fixes #3101867). * Save build commands for filetype None (Lex Trotman). * Waf: Check for libsocket on OpenSolaris to fix build. Interface: * Color build command fields light grey unless overridden (Lex Trotman). * Replace /home/user with ~ in the documents list (Jon Strait). * Display 'new instance' on title bar for 2nd instances (Eugene Arshinov). * Don't add duplicates to combo box histories. * Reorganise Find in Files dialog and add Files pattern to filter search results. * Implement 'Select All' for the VTE widget. * Reorganise editor popup menu for shorter size - some items were moved to submenus. * Move Go to Marker menu items to Search menu. * Group Open dialog encoding options by submenus (Adam Ples; #3047717). * Show mimetype icon in sidebar Documents list and notebook popup menu (Colomban Wendling). Documents: * Ensure inserted templates always have proper line ending characters according to the current document's preference. * Add per-document indent width setting (Jiří Techet). * Add 'Project->Apply Default Indentation' menu command to override every document's indentation settings. * Display better error messages when saving a document fails (Dimitar Zhekov). * Don't prompt for reloading if the document has not been edited (Jiří Techet). * Add Close button to the detected file changed dialog. Editor: * Fix wrong snippet indentation when original cursor line has non-indentation whitespace (david). * Fix passing quoted arguments when using 'Send Selection to'. This means e.g. sed 's/\./(dot)/g' now works. * Add alternative color scheme based on Python colors (View->Editor->Color Schemes). * Replace HTML automatic tag completion with a 'table' snippet (Eugene Arshinov). * Auto-indent after an HTML/XML line without a closing tag (Eugene Arshinov). * Respect 'Smart' home key pref for Shift[+Alt]+Home (fixes #3100290, Dimitar Zhekov). * Scroll to the current line when moving the cursor to the next cursor position in a snippet (#3139490). * If the current word's tag is on the current line, make Go to Tag Definition look for a tag declaration instead and vice versa. * Make Reflow Lines/Block command use the current indented block, not the whole paragraph (which could have mixed indentation). Configuration: * Load insertion templates from system path, don't create them in the user's config dir. * File templates are now reloaded on saving. Prefs: * Add 'Ensure consistent line endings' file saving pref (Manuel Bua). * Add 'statusbar_template' hidden pref (Dimitar Zhekov). * Add 'new_document_after_close' hidden pref to open a new document automatically after closing all documents. * Add hidden pref 'find_selection_type' with option to use the X selection or to repeat the last search when there's no selection, both off by default. * Add 'gio_unsafe_save_backup' hidden pref (Lex Trotman). * Add filetypes.common 'fold_symbol_highlight' color setting. * Add 'symbol_list_sort_mode' per-filetype setting. Keybindings: * Fix Alt+[0-9] switching tabs even when other modifiers are also held. * Add snippet keybinding support (Eugene Arshinov). * Add 'Insert New Line Before/After Current' keybindings (Eugene Arshinov). Filetypes: * Add Forth filetype (Thomas Huth). * Add Lisp filetype (Mário Silva). * Add Erlang filetype (Taylor Venable). * Ada: Fix wrong comments. * C++: Disable user fold points with new lexer property fold.cpp.comment.explicit. * Python: Update list of builtins for Python 2.6, simplify Compile/Syntax Check command. Use named styles for color scheme support (use alt.conf color scheme if you want the old colors). * Matlab: Support Octave # comment char. * Txt2Tags: add highlighting (Forgeot Eric - #3020632). * Make: fix possible infinite loop in tag parser. * D: Parse template functions, ignore /+ +/ comments, ignore unittest blocks, add keywords 'ref', 'macro' and D2 keywords. * Vala: Parse functions with contracts (#3080232). * Markdown, reStructuredText and Txt2Tags: Sort tags by line number by default. * Basic: Parse property, constructor, destructor as functions (pottersson; #2992167). * HTML: Add HTML5 element names and attributes (Ross McKay). * PHP: Parse final functions (fixes #3111171). * Markup: Add xml_indent_tags filetype setting for documents using the HTML/XML lexers (Eugene Arshinov). Plugins: * File Browser: Add history to path entry. * HTML Characters: Only automatically replace characters when the current document is a Markup document. Internationalisation: * Add translations: kk. * Update translations: cs, de, en_GB, es, fi, fr, hu, ja, nl, pt, sl, sv, tr, zh_CN. Manual: * Update 'Custom filetypes', 'Ignore Tags' sections. * Add 'HTML Characters', 'Configuration file paths', 'Color schemes menu' sections. * Explain how to grep the Scintilla source for lexer properties. HACKING: * Add 'Bugs to watch out for' section. API: * Improve Stash GUI example. * Fix not loading plugins built against a newer API when Geany doesn't provide the required version given in PLUGIN_VERSION_CHECK(). * Make GEANY_API_VERSION, GEANY_ABI_VERSION macros instead of enums so you can protect code with '#if GEANY_API_VERSION >= 200'. * Add signals "build-start", "project-dialog-create" and "project-dialog-confirmed" - to append a Project Properties notebook tab (Jiří Techet). * Add macro foreach_range(). * Add GeanyMainWidgets::message_window_notebook (#3061342). * Add main_widgets.project_menu (Jiří Techet). * Add msgwin_set_messages_dir() (Jiří Techet). * Add highlighting_is_{string,comment,code}_style(), editor_find_snippet(), editor_insert_snippet(), utils_find_open_xml_tag() (Eugene Arshinov). * Add ui_combo_box_add_to_history(), editor_goto_pos(), dialogs_show_input(), Add sci_get_lexer(). * Add filetypes_get_display_name() as "None" is no longer translated. Geany 0.19.2 (December 01, 2010) Fixes: * Fix bug where Geany did not always report an error message when saving a document fails. Geany 0.19.1 (August 18, 2010) Fixes: * Fix broken autocompletion after using scope completion. * Fix scrolling the editor line in view (e.g. after loading a session and switching document tabs). * Fix using filetype extension patterns with upper case letters on Windows (#3028856). * Fix a slightly wrong encoding detection on Windows (#3019573). * Re-enable comment folding. * Fix not loading plugins built against a newer API when Geany doesn't provide the required version given in PLUGIN_VERSION_CHECK(). * Fix infinite loop in Markdown lexer (patch by Colomban Wendling, thanks). * Fix saving non-project filetype error regex. * Focus toolbar item when pressing Go to Line keybinding only when it's not in the toolbar's drop down overflow menu (#3027454). * Escape the name of the current document for markup when using document name for menu items (#3038844). * File Browser: Allow Find in Files when no items are selected. * Fix build menu translation problems. * Fix segfault on Tools->Reload Configuration when no documents are open (#3037079). * Fix building with Waf on Solaris. * Fix a memory leak (thanks to Daniel Marjamäki). * Use g_free instead of free (patch by Daniel Marjamäki, thanks). Tweaks: * Always use white background color when printing (except for text with a white foreground) to save ink (#2968998). * Limit build error editor indicators to 50, but parse all errors in the Compiler tab (#3019823). * Align notebook tab close buttons centred vertically (thanks to Robux.Biz (galyuk)). * Show the Project Properties build tab when choosing 'Set Build Commands' when a project is open to prevent confusion with non-project commands. Manual: * Fix wording - restarting is required for hidden prefs. * Fix Grep --exclude-dir example. Geany 0.19 (June 12, 2010) General: * Build system reworked to be much more configurable (by Lex Trotman). * Use POSIX system/GNU regex engine for find & replace. This alters regex syntax - we now support '?' operator and match newlines. * Support adding custom filetype files. * Add new command line option --list-documents to return a list of currently opened documents * Remove deprecated --debug flag. Please use --verbose/-v instead. Interface: * Add option 'System Default' for toolbar icon style and size to use the GTK default value. * Allow '+' and '-' as values for Goto Line inputs to jump relative to the current line. * Add preference to add new document tabs beside the current one (patch by Colomban Wendling). * Enable type-ahead find for sidebar symbols and documents tabs (patch by Thomas Martitz). * Make Ctrl-click on any notebook tab switch to the last used document. * Add 'Edit->Commands' menu. * Add 'Edit->Plugin Preferences' menu item and keybinding. * Add 'View->Editor->Color Schemes' menu (only shown if color scheme files exist). Prefs: * Hide 'Tabs and Spaces: Hard tab width' preference - it should always be 8. (Hidden setting kept in case users have modified it). * Add sidebar position interface pref. * Add project long line marker customisation (patch from Eugene Arshinov). Editor: * Update Scintilla to 2.12. * Add preference and support for virtual spaces. * Add word part autocompletion for the current selected item when pressing keybinding (default Tab) - Enter still completes normally. * Remove LaTeX autocompletion from Geany's core and move it to the geanyLaTeX plugin. Filetypes: * New filetype: Txt2Tags (patch by Eric Forgeot). * New filetype: Abc (patch by Eric Forgeot). * New filetype: Verilog (patch from Kelvin Gardiner). * New custom filetype: Genie. * Improvements in symbol parsing of PHP and Python files. * Add R tagmanager symbol parser (patch by Jon Senior). * Update Perl tag parser from ctags - removes support for buggy local/my/our but parses constant/format/labels. * Parse more VHDL tags (patch from Kelvin Gardiner). * Highlight D & Java types from a global tags file. * Parse Python lambda functions (patch from Colomban Wendling). Keybindings: * Add keybindings to switch to the sidebar's Document and Symbol list as well as to the Message Window's current tab (patch by Eugene Arshinov). * Add 'Remove Markers' and 'Remove Error Indicators' keybindings. * Make 'Reflow block/lines(s)' keybinding use line breaking column when enabled (patch by Lex Trotman). * Add 'Select to previous/next word part' keybindings. * Add 'Switch to Messages' focus keybinding. * Add 'Move line(s) up/down' keybindings. * Make Switch to Editor keybinding reshow the document statistics line. Templates: * Move filetype template defaults into custom file template files. * Read custom file templates from system as well as user dir. * Add new special template wildcard "{command:...}" to use the output of a shell command in templates. * Support {ob}, {cb} and {pc} to escape wildcard strings with {, }, % for snippets, fileheader and file templates. * Add {project}, {description} template wildcards (#2954737). * Reload templates when saving a document in the templates config dir. Configuration files: * Support more filetypes.common folding icon styles: arrows, +/- and no lines (#2935059). * Support Scintilla lexer properties in [lexer_properties] filetypes.* group. * Add filetypes.xml asp.default.language property (Ross McKay). Plugins: * Classbuilder: Add support for creating PHP classes (patch by Ondrej Donek). * HTMLchars: Make plugin remember whether replacement of special characters was activated. Windows: * Support very long build commands. * Add a preference for choosing between GTK and native File Open/Save dialogs (only available on Windows). Internationalisation: * Added translations: ast. * Updated translations: de, en_GB, es, fr, gl, ja, nl, pt, ru, sl, sv, tr, vi, zh_CN. API: * Improve documentation contents page. * Add Stash mini-library setting, pref & widget functions to API. * Add plugin_configure_single() plugin symbol which is easier to implement than plugin_configure(). * Add new plugin signals: "document-before-save", "document-filetype-set", "geany-startup-complete". * Add PLUGIN_SET_TRANSLATABLE_INFO macro to the plugin API so plugins' meta information can be translated already in the plugin manager dialog (patch by Colomban Wendling). * Use full function name for GeanyFunctions function pointers. This avoids naming conflicts e.g. with C++'s 'new' keyword. * GeanyKeyBinding label fields can now contain underscores, which won't be displayed by Geany. This saves adding near-duplicate translation strings. * Add GeanyKeyGroup callback support. * Add more Scintilla function wrappers, foreach_dir(), foreach_str(), utils_get_file_list_full(), document_get_notebook_page(), editor_insert_text_block(). * Don't install unnecessary headers. * Remove deprecated header pluginmacros.h - use geanyfunctions.h instead. * Deprecate documents_foreach(), use foreach_document() instead. * Deprecate PLUGIN_KEY_GROUP() macro - use plugin_set_key_group() instead. Geany 0.18.1 (February 14, 2010) Build fixes: * Define G_GNUC_WARN_UNUSED_RESULT to fix build on GLib 2.8. * Use AC_PATH_PROG instead of 'which' for portability (patch by Erik Southworth, thanks). Incompatibilities: * Remove filetypes.common invert_all option - use 'Invert syntax highlighting colors' pref instead (fixes #2854525). Bug fixes: * Fix 'Open Selected File' for unsaved new documents. * Fix updating main menu accelerators after changing keybindings (thanks to Lex Trotman). * Fix using 'Insert date' keybinding when a custom date string has not been set. * Set the cursor color for the split window plugin. * Remove plugin from plugin manager dialog on unloading if it no longer exists or is incompatible. * Fix 'Reflow block' command when at the last paragraph and there's no last newline (patch by Eugene Arshinov, thanks). * Fix opening filenames beginning with two dots (closes #2858487). * Show Find in Files stderr output in messages window instead of debug window so that invalid regex messages can be seen easily. * Speed up sorting in utils_get_file_list(). This reduces the file browser delay on displaying a big directory, e.g. /usr/bin. * Fix a bug with not w3c compatible HTML code on export plugin * Fix non-working Home and End keys on numpads. * Fix loading of files on network resources on Windows. * Fix wrong alignment of printed pages when page headers are disabled (closes #2856822). Improvements: * Extend auto_latex() function to check whether an environment has been closed within the next lines to avoid auto adding double \end{}. * Replace some icons which could cause licensing problems by icons from the Rodent icon theme. Filetype fixes: * Parse contents of D extern{} and version{} blocks. * Fix creating D interface tags properly. * Parse D functions with contracts (fixes #1885480). * Parse D alias statement like typedef. * Improve parsing of LaTeX, PHP and Python files. Documentation: * Add 'Scope autocompletion' section. * Add 'Tools menu items' section to explain configuration files submenu, reload configuration item. * Minor updates/fixes. API: * Add gcc commands to build a plugin to the HowTo. HACKING file: * Add section 'Plugin API/ABI design'. * Add 'Compiler options & warnings' section. * Update Style section to be clearer about code alignment and show some example code. * Add 'Doc-comments' plugin API subsection. Internationalisation: * Added translations: gl Geany 0.18 (August 16, 2009) General: * Fix scrolling horizontally after finding a search match with the search bar or Find Next/Previous which is off-screen. * Remove relative/untidy path elements from filenames when opening documents (#2823998). * Create initial template files with proper platform-specific line ending characters. * Improve inserting of comment templates like File header or licence notices. Interface: * Add 'Show Paths' documents list popup item. * Add filetypes.common to 'Configuration Files' menu. * Implement a graphical toolbar editor. * Add 'Build' toolbar button to the default layout. * Add 'Replace' toolbar button (closes #2798225). * Use a more Tango like icon for 'Save All' (by Jesse Mayes, thanks). * Add a popup menu for the keybinding list in the preferences dialog to easily expand and collapse all groups. Keybindings: * Implement Most-Recently-Used document switching when pressing 'Switch to last used document' keybinding (Ctrl-Tab). * Add 'Mark All' keybinding (Ctrl-Shift-M). * Add 'Reflow lines/block' keybinding, (Ctrl-J; thanks to Eugene Arshinov). * Make the Scintilla keybindings 'Delete to end of line' and 'Go to end of display line' configurable. * Switching notebook tabs now works for the currently used notebook widget instead of always using the documents notebook. Editor: * Fix a redraw when documents were first drawn uncolourised. * Delay highlighting matching braces by 100ms to speed up scrolling with the arrow keys. * Support 'tab indents, space aligns' style when indenting (#2789109). * Add 'Autocomplete all words in document' pref; also used when forcing autocompletion and there's no symbol names to show. * Add 'Drop rest of word on completion' pref. * Update Scintilla to version 1.79. * Improve displaying and reshowing of calltips. Syntax highlighting: * Reload color schemes via Tools menu (thanks to Eugene Arshinov). * Implement named styles support for filetypes.* using a filetypes.common [named_styles] section; used as "style=named_style,bold". (See the manual for details). * Allow style definitions with missing fields to use the filetypes.common default style's fields. * Make C-like filetype styles use named styles & default background color. (Anyone who wants to likewise update any other filetype's styles, please let us know ;-)). * Allow indentation of wrapped lines (see style 'line_wrap_indent'). * Add new styles 'line_height' and 'marker_mark'. Filetypes: * Add Markdown filetype (thanks to Jon Strait). * Highlight D WYSIWYG backtick `strings` and r"strings" (#1895745). * Minor improvements for filetypes: Fortran, Haxe, HTML, Lua, Matlab, Pascal, Python, Tcl. Tags: * Read custom system global tags files from $prefix/share/geany/tags (#2778923). * Autocomplete scoped fields like struct members when typing '.' (and also '->' or '::' in C/C++) if the language's tag parser supports it. * Save field tags for C/C++ when generating a global tags file (you may want to regenerate your tag files). * Parse Python calltips. * Show relative paths in Diff filename tags. * Group reStructuredText symbol list items by scope level. Plugin API: * Add geanyplugin.h single include. * Add plugin_signal_connect() for connecting plugin signals at runtime and also for connecting to any GObject signal. * Add documents_foreach(), filetypes[], documents[], utils_strdupa() and various foreach_type() macros. * Make GeanyDocument::file_type always be non-NULL. Windows: * Fix quoting the build command string on Windows (closes #2791769). * Fix LaTeX view commands on Windows (part of #2807688). * Expand system environment variables (%variableName%) on Windows when running Build commands. Internationalisation: * Added translations: lb, sl, pt_PT * Updated translations: ca, cs, de, en_GB, fi, fr, ja, pt_BR, ru, tr Geany 0.17 (May 02, 2009) Bug fixes: * Fix broken selection of "Document->Set Encoding" menu items. * Fix broken non-incremental search with the toolbar search entry when pressing Enter (closes #2638180). * Fix parsing of Make output (closes #2694479, patch by Andrea Mazzoleni). * Fix crashes on quitting Geany (closes #2533990). * Fix disabled Go to Tag items in the editor menu when using the keyboard (#2780044). * Prevent crashes when two or more top level items in the symbol list have the same name (closes #2778246). Prefs: * Add an option to set an additional plugin lookup path. * Add a hidden preference 'use_safe_file_saving'. This has serious side effects, please read the documentation before enabling this. Interface: * Add 'Send Selection to Terminal' command to the Edit->Format menu. * Change the background colour of the search entries in the Find and Replace dialogs according to the search results. * Add 'Close Other Documents' and 'Close All' menu items to the tab bar menu. * Add an option to allow appending the toolbar to the main menu bar to save some vertical space. * When a project is loaded, replace the project base path with the project name in the Documents sidebar for parent items (closes #2723679). * Make the file open dialog more compact. * Ellipsize tab labels and some status messages for very long filenames (closes #2777348). * Add new toolbar element: Print (patch by Roland Baudin). * Remember the active sidebar page between sessions. * Add "Recent Projects" menu to the Project menu (#2728630, patch by Elias Pschernig). * Add Tools->Configuration Files item for snippets.conf. Filetypes: * Fix wrong Fortran 90 comment characters when inserting templates. * Add filetype ActionScript (patch by Chris Macksey). * Fixes for CSS, Fortran and Ruby parsers. * Add a trivial symbol parser for NSIS files. Windows: * On Windows, change the working directory to the Geany installation path at startup to avoid unwanted directory locking(closes #2626124). * Fix window positioning on startup. * Make build commands on Windows run synchronously to avoid problems with reading build commands' output. Plugins: * HTMLchars: Extend plugin by bulk replace and replace on input for special characters to their HTML entities. * Splitwindow: Add keybindings for the split actions. * VCDiff: Remove plugin from Geany. Use GeanyVC instead. Plugin API: * Deprecate sci_get_text(), sci_get_selected_text() and sci_get_text_range(). * Add sci_get_contents(), sci_get_contents_range() and sci_get_selection_contents() as replacement functions to provide an easier and cleaner API (initial patch by Frank). * Make GEANY_FILETYPES_NONE = 0, sort filetype IDs randomly (so we can append new filetypes without breaking the ABI); add filetypes_by_title sorted list to GeanyData. Documentation: * Describe how to build Geany using the Waf build system. Internationalisation: * Updated translations: be, cs, de, es, fi, fr, hu, ja, pt_BR, ru, sv, tr, zh_CN Geany 0.16 (February 15, 2009) Bug fixes: * Fix indenting for Tabs & Spaces mode when inserting snippets. * Fix snippets and smart indent using too much indentation when the line contains whitespace after non-whitespace characters (#2215044). * Fix segfault when showing Find in Files dialog when no documents are open (#2228544). * Fix not switching to 2nd last used document when the last used document has been closed (#1945162). General: * Group child tags by their parents in the symbol list for C-like filetypes, Python, Conf (thanks to Conrad Steenberg). * Use a tree for the Documents sidebar, grouped by path. * Add 'Tools->Configuration Files' menu with items to open filetype_extensions.conf and ignore.tags. These files are also reloaded automatically when saved. * Change configuration directory path to $XDG_CONFIG_HOME/geany (most often this is ~/.config/geany). * Allow to specify files on the command line and from remote instances to be URIs (local and with GIO also remote URIs). * Increase minimum required GTK version to 2.8. Prefs: * Add Project Indentation prefs, which override the Editor Preferences dialog options. For new projects, these default to the editor indent prefs. * Add an interface pref for whether to hide additional widgets when double-clicking on document notebook tabs (off by default). * Add a preference to invert all colours for syntax highlighting. * Add a hidden preference "allow_always_save" to make the Save buttons and menu items always sensitive. Interface: * Rework the toolbar: now all elements can be added/removed/reordered using a simple XML file. * Add new toolbar buttons for Cut, Copy, Paste, Delete, Preferences, Close All and Build (including a submenu for Make actions). * Add a progressbar widget to the statusbar to show progress for time consuming actions. Editor: * Make Ctrl-click go to matching brace if there's no current word. * Make Shift+Mouse wheel scroll the editor view horizontally. * Make the 'Mark' button for Find highlight the results with rounded boxes instead of marking the whole line. * Add auto-closing of braces, brackets and quotes (Guillaume de Rorthais). * Support multiple %cursor% wildcards in Snippets (Thomas Martitz). Filetypes: * Add new filetypes Ada, CMake, Matlab, NSIS, Vala and YAML. * Update HTML character entities (thanks to Tyler D'Agosta). * Parse restructuredText sections in the order of first-used underline character, which can now be any punctuation character (as per the spec). * Remove GTK global tags, replace them with C (C99) tags. The GTK tags file is still available for download on the website. * Minor improvements for filetypes CSS, Fortran, FreeBasic, HTML, Tcl and Vala. Windows: * Improve tab close icon size. * Changes to the Windows installer: - The full installer now includes the GTK 2.14 runtime environment. - Register ".geany" as Geany Project File extension. - Install GTK translation files only if installation of translation files were requested (saves about 22 MB otherwise). - Support silent installations. Plugins: * Add Split Window 'Split Vertically' command (thanks to Moritz Barsnick). * Make Version Diff plugin set the indent type for diffs based on the current file's indent type. * Minor improvements to the filebrowser plugin Plugin API: * Generate plugin API header geanyfunctions.h containing macros to avoid having to type the function pointer names manually. * Deprecate pluginmacros.h in favour of geanyfunctions.h. * Add "editor-notify" to the plugin API. * Add new plugin symbol plugin_help() which is called by Geany when the plugin should show its documentation (if any, symbol is optional). Documentation: * Update Scintilla regular expression info for v1.77 (character classes, ASCII escaping, character sets containing square brackets peculiarities). Adapted from SciTE doc. * Complete 'Hello World' Plugin Howto. Internationalisation: * Updated translations: bg, ca, cs, de, en_GB, fr, hu, it, ja, pt_BR, sv, ru, tr, vi, zh_CN Geany 0.15 (October 19, 2008) General: * Add Previous Message, Previous Error commands (thanks also to Beau Barker). * Add 'Close Other Documents' File menu command (#1976724). * Add Find Document Usage popup menu command & keybinding. * Check that the current file is still on disk (as well as checking the modification time). * Add support for custom file templates (found at startup) in the ~/.geany/templates/files directory, shown underneath filetype templates in the New with Template menu. * Make socket open command support filename:line:column syntax. * Add filetypes.* [build_settings] key 'error_regex' to support custom error message parsing using a GNU-style extended regular expression. * Allow loading projects from command line (#1961083). * Add alternative build system: Waf. * Add Tools menu item to reload configuration data without a restart. * Add support to use template wildcards in snippets. * Increase LSB compliance. Prefs: * Make disk check timeout configurable (zero disables disk checks). * Add search pref: 'Use the current file's directory for Find in Files' (#1930435). Interface: * Make keyboard shortcuts dialog non-modal (#1999384). * Add a debug messages window to easily view debug messages/warnings. Editor: * Update Scintilla to version 1.77 (includes many fixes). * Add basic Line Breaking option in the Document menu and 'Line breaking column' editor pref (for now only works when typing characters past the line breaking column number). * Don't colourise any documents until they need to be drawn (this should make opening a session faster for filetypes that support typename highlighting). * Make Ctrl-click on a word perform Go to Tag Definition. * Add 'Max. symbol name suggestions' autocompletion pref. * Show ellipsis (...) item when there are too many symbol names for autocompletion. * Highlight matching brace indent guides (thanks to Jason Oster; #2104099). * Show brace indent guides on empty lines when appropriate (thanks to Jason Oster; #2105982). * Add 'Tab key indents' pref, on by default. * Implement soft tabs support (#1662173). There's now a 'Tabs & Spaces' Indent Type, and separate Width, Hard Tab Width indent prefs. (Thanks to Joerg Desch for explaining how it needed to work). * Auto-update the line margin width as lines are added (thanks to Jason Oster; #2129157). * Add "Replace spaces by tabs". Windows: * Install plugins into lib/ not into plugins/. * Install Geany's message catalogs into share/locale rather than lib/locale as GTK does since 2.12.2. Keybindings: * Add Go to Start/End of Line keybindings (#1996175). * Add 'Switch to Compiler' keybinding (useful when checking build progress). * Add keybindings for Line wrapping, Line breaking, Toggle fold and Replace Spaces by tabs, Previous/Next word part. Filetypes: * Add OpenGL Shader Language (GLSL) filetype (thanks to Colomban Wendling; #2060961). * Add R language filetype (thanks to Andrew Rowland; #2121502). * Split filetype Fortran into Fortran 77 and Fortran 90. * Add Gettext translation filetype (#2131985). * CSS improvements, thanks to Jason Oster. Embedded Terminal: * Fix hang when restarting the VTE (#1990323) with VTE 0.16.14. (Note that with VTE 0.16.14 the reset sometimes leaves a blank terminal, but pressing enter makes it then behave as normal). Plugins: * Add Split Window plugin (should work OK for viewing; full editing support is not implemented yet). * Merge InstantSave, AutoSave and BackupCopy plugins into the new plugin 'Save Actions'. Documentation: * Add Tips and Tricks appendix. * Updated Installation section. * Update 'Build system' for custom error regexes. * Add a section for internal plugins. Plugin API: * Many changes; see the API documentation (make api-doc) and the geany-devel list archives. * Deprecated: plugin_fields, plugin_info symbols. Internationalisation: * New translations: ko, tr. * Updated translations: be, ca, de, en_GB, fi, hu, it, ja, pl, ro, ru, sv, zh_CN Geany 0.14 (April 19, 2008) General: * Don't beep when using Replace All in Session unless all open files have no replacements (fixes #1893796). * Only use filetype detection after Save As, not on every save when the filetype is None (fixes #1891778). * Make Go to Tag commands look for the tag in the current document before searching the workspace. * Check file on disk for changes also when pressing a key. * Ignore documents with no absolute path when saving session files. * Fix segfault with Run command when a project is open and the current file's filetype has no run command. * Make Next Error and Next Message commands add positions to the navigation queue, so the user can move backwards through the list items and return to where they were. * Make pressing escape in the sidebar focus the editor. * Make navigation queue position based to restore the line and column when returning to a previous position (closes #1936927). * Save sorting order of the symbol list when saving a file (fixes #1917262). * Improve "Send Selection To" code (fixes #1909452). * Install header files and add a pkg-config file for external plugins. * Use monospace font for text entry fields in search dialogs (#1907117). * Don't open zero byte sized files read-only (e.g. files in /proc). Filetypes: * Improve Makefile parser to detect targets. * Update PHP tags file to latest PHP API docs (closes #1888691). * Add translucency settings to filetypes.common for semi-transparency. * Add HTML parser to get h1, h2, h3 symbols as well as link anchors and JavaScript functions (fixes #1896068). * Update Javascript, Tcl and Assembler parser. Interface: * When closing a tab when using left-to-right tabs, focus the next document, not the previous. * Move Load Tags item from File to Tools menu. Editor: * Don't scroll the editor view if it is unnecessary when using Find Next/Previous, Find Selected, incremental search, Go to Marker or Go to Matching Brace commands. * Fix bug with showing macro list items all on one line. * Fix Python auto-indentation when line endings are set to CR/LF. * Unfold hidden code when the fold point modified (fixes #1923350). * Update Scintilla to version 1.76. * Add (basic) column mode editing (patch by "chuck"). Windows: * Replace untitled file header filename after Save As and add to recent files on Windows too. * Resolve Windows shortcuts when opening files. * Fix modal dialog problems on Windows by not setting taskbar hint (closes #1916994). * Add new process spawning implementation. This makes the VCdiff plugin to work on Windows (patch by Pierre Joye, thanks). * Fix crash on Windows when a project could not be opened. Plugins: * Add configurable plugin keybindings support. * Add a HTML Characters keybinding to show the dialog. * Add File Browser keybindings to focus the Path Entry and File List * Rename VCDiff plugin Version Diff. * When quitting, remember plugin filenames that couldn't be loaded at startup as well as active plugins. Plugin API: * Add PLUGIN_KEY_GROUP and keybindings_set_item() to setup a keybinding group. * keybindings_send_command() arguments have changed because of keybinding groups - this breaks the API for plugins already using it. * Make VERSION_CHECK deprecated in favour of PLUGIN_VERSION_CHECK. Documentation: * Add descriptions for several options in the preferences dialog (patch from Robert McGinley). Internationalisation: * New translations: ro. * Updated translations: bg, de, en_GB, es, fr, hu, it, ja, pt_BR, ru. Geany 0.13 (February 05, 2008) General: * Improve configure script and fix some compatibility issues. * Add support for project session files. * Add native GTK printing support (only with GTK 2.10+). * Prevent execution of commands by Geany if the VTE may contain any text on the prompt (thanks to "Jeff Pohlmeyer for reporting). * Store more document-related settings when saving session in the configuration file (including the file encoding). * Detect in-file specified file encoding by scanning the file using regular expressions. * Add binary relocation support. Filetypes: * Add configurable default file extension setting for filetype definition files. * Fix reST autocompletion. Tags: * Show arrays and modifiers like const in calltip return types for C-like files. * Update C global tags file for GTK+ 2.12. * Fix parsing the correct D class name when inheriting, D constructor tags and ignore D import statements. * Remove unnecessary tagmanager status file. * Improve PHP, Ruby and FreeBasic parsers. Interface: * Add 'Indent Type' option in the Document menu. * Add 'Detect from file' Editor indentation pref. * Show TAB or SP for current document's indent type. * Add a 'Newline strips trailing spaces' pref (thanks to Catalin Marinas). * Add 'Strip Trailing Spaces' document menu item. * Add combo box input history for 'Make Custom Target' dialog. * Make Open, Save As dialogs start in project base path (or default path pref) when the current file has no filename. * Add 'Make in base path' project file preference. * Make 'Open Selected File' first try the current file's directory, falling back to the project base path if no file was found. * Fix broken window maximization. * Improve appearance of used treeviews and use rules hints to respect user colour settings. Editor: * Fix hidden lines after deleting a line that is a collapsed fold point. * Make Fold All/Unfold All attempt to scroll the current line in view. * Show line wrap symbol at start of line for wrapped lines. * Allow scrolling past end of document, so the user can append text with the last lines drawn at the top of the view. * Rename "Construct autocompletion" to "Snippets". * Improve usage of "Unfold all children" option. * Update Scintilla to version 1.75. Keybindings: * Add configurable keybindings for Cut, Copy and Paste. * Ask the user whether to override an existing keybinding when setting a combination that is already in use. * Add 'Override Geany keybindings' VTE prefs dialog option (replaces hidden pref), which makes the VTE interpret all keyboard shortcuts except focus group keybindings. Plugins: * Add File Browser sidebar plugin. * Add Version Control Diff plugin (VC Diff), which supports SVN, CVS and GIT (thanks to Yura Siamashka). * Add plugin manager dialog to select plugins to load at startup and to call a plugin configure dialog. * Add new signals: project_open, project_save, project_close. * Add Auto Save plugin. Plugin API: * Add keybindings_send_command() and some other functions. * Add pluginmacros.h to define common macros for app, p_utils, etc. * Add more documentation/comments to demoplugin.c. * Add configure symbol for plugins which is called by Geany when a configure dialog for the plugin is requested, optionally. * Add author field to plugin info struct. Windows: * Enable build support. * Prevent prefs dialog being hidden after using the prefs file dialog. * Create Geany's configuration directory in user's appdata path instead of the default home directory. Documentation: * Show default shortcuts in Keybindings section. * Update Project section for project-based session support. * Add Indentation subsection under Editor section. * HACKING: Update 'Adding a filetype' section. Internationalisation: * New translations: ja, uk, el. * Updated translations: ca, de, en_GB, fr, it, pt_BR, hu, sv, vi. Geany 0.12 (October 10, 2007) Bugs fixed: * Fixed opening the same file twice from the message window/command-line. * Fixed Ctrl-Shift keybindings not working when caps lock is on. * Fixed saving the wrong document when using Save All with unnamed documents. * Fixed replacing with '^' or '$' regex chars. * Fixed hang with Find All/Find Usage with '^' or '$' regex chars. * Fixed hang when replacing all '[ ]*' regex matches (closes #1757748). * Fixed displaying error indicators with Make after entering a subdirectory. * Fixed a possible segfault when parsing tags (a vString bug). * Fixed clipboard problems with some applications. * Fixed crash when trying to open the Save As dialog on Windows. * Fixed crash when saving a file after setting encoding "None". * Fixed scrolling bugs when searching text and the cursor is outside of the current visible area. Filetypes: * Added reStructuredText filetype and parser. * Added Haskell tags support (thanks to Peter Strand). * Added decorator styling for Python. * Parse Python global variables and class variables. * Added support for Java Apache Ant compiler error messages (thanks to Jon Senior). * Added new filetypes CSharp and FreeBasic. * Added filetype Haxe (patch by blackdog, thank you). Plugins: * Added basic plugin support (developers: see the HACKING file). * Added 'Enable plugin support' preference and -p, --no-plugins options. * Added Class Builder plugin (thanks to Alexander Rodin). * Added Export plugin to export current file as HTML or LaTeX. Keyboard shorcuts: * Common bash Ctrl-[a-z] keyboard shortcuts now work when the VTE is focused, and there is an 'enable_bash_keys' hidden preference. * Added 'Move document left' and 'Move document right' keybindings. * Added Find keybinding. * Made fixed keybindings overridable. * Added fixed keybindings for switching to leftmost/rightmost document, Ctrl-Shift-{PageUp,PageDown}. * Change Previous/Next Paragraph fixed commands to Ctrl-{Up,Down}; adding Shift extends selection by paragraph. (Scroll by line is now Alt-{Up,Down}). * Made pressing escape focus the editor when using incremental search or Goto Line toolbar fields. * Added keybinding for select current paragraph. * Added keybindings for smart indent and indent/deindent by one space. * Removed convert to lower-/upper-case keybindings. * Added toggle case keybinding and change shortcut to Ctrl-Alt-U. General: * Added preference for 'smart' home key behaviour (thanks to Jeff Pohlmeyer). * Added symbol list icons (thanks to Jean-François Wauthy, and KDevelop for the icons). * Added 'Current chars' indentation mode (closes #1726880). * Save and restore the current notebook page when quitting. * Added support for %e, %f in project run command. * Ignore punctuation chars when moving by word, and use word end boundaries when moving by word to the right (like most GTK+ widgets). * Added hidden editor preference 'use_gtk_word_boundaries'. * Added auto_complete_whilst_editing hidden preference. * Speed up Save All for C-like files. * Don't show file opened/saved/closed messages on the status bar. * Added --no-preprocessing, -P option when generating tags files to disable preprocessing of C/C++ source files. * Added default startup directory option (closes #1704988). * Use current locale as default encoding for new files. * Added simple code navigation (thanks to Dave Moore). * Re-maximize the main window on startup when closed in maximized state (closes #1730369). * Added auto focus (to auto focus widgets below mouse cursor). * Complete rewrite of auto completion to make it user-definable and much more flexible (please read documentation). * Added option to set a default encoding when opening files and disable auto detection of the file encoding. * Improved comment toggling by adding an additional character to mark. * Changed the background colour of the search bar in the toolbar according to the search result. * Use intltool to make geany.desktop translatable * Replace Geany's icon by a new one by Sebastian Kraft (thanks). (Thanks also to Christoph Berg for updating the icon code). Docs: * Changed documentation generation tools from DocBook to reST (thanks to John Gabriele for his great work on this). * Added Plugins section. * Added 'Inserting unicode characters' Editing section (thanks to John Gabriele). * Added 'Hidden preferences' appendix. * Added 'Switching documents' keybindings section. HACKING: * Added notes on adding a filetype. Internationalisation: * New translations: en_GB. * Updated translations: ca, cs, de, es, fi, fr, hu, it, pl, pt_BR, zh_CN. Geany 0.11 (May 21, 2007) Notes for existing users: * Tab is now used for construct completion (for, if, etc.), but it is configurable with the new 'Complete construct' keybinding. * Template files are now stored in ~/.geany/templates/ and the 'template.' filename prefix is no longer used. You will need to move any custom template files you have. * Inserting a file header is now optional for filetype templates. Use the string '{fileheader}' to mark where the file header should be placed. * Drag'n'Drop of text inside the editor widget will now move the text instead of copying it. Bugs fixed: * Fix segfault when pressing Ctrl-Enter when there are no workspace tags. * Remove error indicators in all documents when linking (#1705374). * Sort symbol list tags also by line number (#1703575). * Fix #1717418, Hang on SQL file load. * Fix #1718532 - Crash when opening a special HTML file. * Add workaround for PHP closing brace de-indenting. * Fix reloading of read-only documents. Project Management: * Add keybinding to show project properties dialog. * Add project Run command support. * Run Make All and Make Custom from the project base directory. Custom Global Tags: * Update C global tags for GTK+ 2.10 and it's dependencies. * Add option --generate-tags (-g) to generate a global tags file from a list of source files (see docs). * Load global tag files stored in ~/.geany/tags at startup #. * Add Load Tags command in the File menu #. # This is not supported for Pascal, PHP or LaTeX files yet. Calltips (for C-like files): * Show up and down arrows when there are multiple calltip matches. * Show classname in calltips. * Parse pointers in function return type. * Add calltip support for D constructors. Other changes: * Parse 'Entering directory' Make messages so opening files from error messages works for subdirectories (thanks to Josef Whiter). * Make Go to Tag Definition/Declaration work for all tags. * Support filetype templates for all filetypes (see docs). * Make file header optional for filetype templates. * Add 'Find Selected' and 'Find Prev Selected' search commands and keybindings (thanks to Jeff Pohlmeyer). * Add Mark button to the Find dialog, and a Remove Markers item to the Document menu. * Add 'Recurse in subfolders' and 'Extra options' checkboxes to the Find in Files dialog. * Add 'Switch to last used document' keybinding (Ctrl-Tab). * Add Goto Previous/Next Marker keybindings (Ctrl-, and Ctrl-.). * Add Toggle Marker keybinding (Ctrl-M). * Add keybinding for construct completion, and set the default to Tab. * Add MimeType associatiations for: C++ header, Pascal, Perl, Python, httpd-PHP and XML files (thanks to Iñaki Rodriguez). * Add brace indenting support for Perl and Tcl. * Make backspace unindent when using spaces for indentation. * Wrap notebook pages when switching tabs. * Speed up loading multiple C-like files slightly. * New filetypes: JavaScript, Lua and Haskell. * Set several widget names to allow users to define custom styles in .gtkrc-2.0. * Add context actions to run custom commands on current selection or the current word below cursor. * Add different auto indention modes. * Improve replacing in rectangle selections. * Add custom commands to send selected text through some definable commands and replace the selection with the output. * Add command line option --column to allow setting the initial column for the first opened file on command line. * Improve the auto scrolling of documents. * Improve loading of the VTE library. * Add an option for using spaces or tabulators when inserting some whitespace. * Add an option to disable Drag'n'Drop in the editor widget. Documentation: * Add Project Management, Global Tags, Construct Completion sections. * Add Bookmarks section (thanks to John Gabriele). * Update Filetype Templates, Search sections. Internationalisation: * New translations: bg. * Updated translations: ca, cs, de, es, fr, zh_CN. Geany 0.10.2 (February 25, 2007) Bugs fixed: * Fixed serious crash of complete X session when using the Stop command when Geany is run from the program menu (closes #1668017). Geany 0.10.1 (February 23, 2007) Bugs fixed: * Wrong tab foreground colour for unmodified documents. * Fixed crashes when closing dialogs by clicking X on some systems. * Fixed missing global tags for C files when a C++ source file was loaded first. * Fixed autocompletion missing tag matches. * Fixed a wrong PASCAL autocompletion. * Set single undo action when toggling multiple lines or stripping trailing spaces. * Prevent some possible invalid memory reads. * Convert config, application and documentation dir paths to locale encoding before using it. * Fixed errors when changing directories containing special characters within the VTE component (thanks to Jeff Pohlmeyer). * Support newer so-names when loading the VTE library (thanks to Jeff Pohlmeyer). * Fixed paste problems on Windows. * When using Save As the returned filename needs to be converted into UTF-8. * Fixed error when parsing of compiler errors by the va_list system. * Added MimeType entry as suggested by Nick Schermer. * LaTeX parser: Allow \section*{} and other commands with *. * Change default keybinding for Close All to Ctrl-Shift-W. * Allow Make for files with no extension - prevent Build when the output filename would be the same as the source file. * Ensure the VTE visual settings are applied when switching to VTE when the Message Window is hidden. * Fixed several issues while opening files and improved code. * Improved the auto scrolling of documents and fixed a bug when opening files remotely. * Fixed wrong D function return type after a class definition. * Added several missing style types for filetype Perl (thanks to John Gabriele for reporting). * Prevent right click in Symbol list from selecting a tag. * Update the symbol list when starting a new document. * Scroll Compiler and Messages window in view when using Next Error or Next Message. * Auto close brackets only when auto completion of constructs is enabled (closes #1665015). * Fixed switching to the wrong tab when showing the unsaved dialog. Internationalisation: * New translations: fi (thanks to Harri Koskinen). * Updated translations: cs, de, es, fr, hu. Geany 0.10 (December 21, 2006) Changes: * Added a dialog to insert HTML special characters. * Added new command line option --line to set the initial line for the first opened file. * Implemented new, own Undo system to undo/redo encoding changes. * Added simple parser for filetype Diff to create tags for each patched file in a diff file. * Added new encoding "None" to open files without any character conversions. * Added Stop button to abort the Run command. * New filetype VHDL. * New scintilla lexer for filetype D with several improvements. * Improved auto completion of multi line comments * Added option to execute programs in the VTE instead of executing them in a terminal emulation window * Removed the limit on the number of files open. * Save the build includes and arguments when quitting. * Added Next Message search command and Next Error build command. * Make search bar automatically wraparound if necessary. * Applied patch from Bob Doan to prevent unnecessary search scrolling and add a preference to suppress some of the search dialogs. * Added Find Previous, Find All in Document/Session buttons for the Find dialog. * Added Replace (but don't Find) button for the Replace dialog. * Added 'Hide Message Window' popup menu command. * Added Alt-[1-9] shortcuts to switch to a certain tab number. * Limit search dialog history to 30 entries. * Change python default compile command to create a compiled python .pyc file (thanks to Bajusz Tamás). Windows changes: * Fix #1611530 'file has changed' message on Windows after saving. * Fixed wrong paste behaviour under Windows with some applications. Bugs fixed: * Fixed crash when using "Make object" on new files. * Fixed incompatible use of read command in the created shell script to execute programs. * Fixed wrong insert position when the cursor was moved by keyboard and comments, includes or a date was inserted. * Fixed some segfaults when inserting comments, dates and includes at a position prior to some deleted text. * Fix message window horizontal scrollbar being too tall on some systems (thanks to Rob van der Linde). Internationalisation: * New translations: fr, hu, it, zh_CN, zh_TW. * Updated translations: be, ca, cs, de, es, vi. Geany 0.9 (September 29, 2006) Changes: * Added function calltips for files open in the current workspace for C-like languages. * Open a second instance by default when starting Geany with no filenames specified on the command-line. * Added better error message support for D, for both DMD and GDC; also GCC-style linker error messages are now parsed. * Text selections now use syntax highlighting foreground colours (but can still be overridden in filetypes.common). * Find in Files improvements: fixed string and whole word only matching options; a directory selector dialog; filenames passed to Grep are now sorted alphabetically. * Remember the VTE current directory at startup. * Show the messages window on build failure or for Find Usage. * Added -s command-line option to not load session files (-i is now used to force a new instance). * Added comment toggle functionality to easily comment and uncomment a line with one shortcut. * Separated filetypes PHP and HTML for better usage. * New filetypes: Diff, Fortran 77 and Ferite. * Added auto completion tags for PASCAL. * Improved VTE usage by adding options for selecting the used shell and ignoring menu bar accelerator (default F10). * Added menu items to insert configurable date/time strings. * Removed the whole FIFO code and replaced it with support for (Unix Domain) Sockets(including Windows support). Windows changes: * Implemented Run command (from the build menu) under Windows. * Enabled socket code on Windows to detect a running instance. * Enabled notification if file on disk has changed under Windows. Bugs fixed: * Fixed a segfault at startup if terminal follow path setting is enabled. * Fixed clicking on error messages being dependent on the current file's directory. * Fixed a bug when clicking on a recent file got the wrong filename. * Fixed a crash when a compiler output reports an error in a blank line(can happen in LaTeX) * Fixed a crash when switching between several filetypes. * Fixed segfault when replacing tabs by spaces. Internationalisation: * New translations: cs, nl, vi. * Updated translations: de, es. Geany 0.8 (August 09, 2006) Changes: * Find in files feature added which uses the Grep tool. * Added Make object command to compile using the Make tool. * Editor notebook tabs can now be reordered by drag and drop. * Added support for back references when using regex replace. * Added a Find button to the Replace dialog to skip matches. * Greatly improved the speed of Replace all/in selection. * Scroll to 1/4 of the view when jumping to a line number. * Show messages on the status bar and in the Status window. * Preferences options for Auto-indentation and Line wrapping. * Use the mouse click position for Go to tag. * Added separate filetype_extensions.conf system file. * Added makefiles for building on Windows. * Added keyboard shortcuts for increase/decrease of line indentation. * Added functionality to uncomment code. * Encoding support * Added support for Unicode Byte-Order-Mark (BOM) * Redesigned preferences dialog. * Added Undo and Redo toolbar buttons. * New filetype: D * Added simple printing support. * Mark errors while compiling source code within Geany with indicators(small squiggly underlines) Bugs fixed: * Use the full path for files opened from the command-line. * Fixed saving a file from the unsaved file dialog. * Fixed replacing with regexes the correct matched text length. * Fixed applying virtual terminal widget settings at startup. * Fixed prepending items to the Recent files menu. * Fixed clipboard commands used in the find entry and Scribble. * Fixed wrong interpretation of syntax highlighting colours * And some more. Windows bugs fixed: * Don't add .c extension when saving with the All files filter. * Fixed a tool chooser dialog crash when path doesn't exist. * Fixed locale problems with Windows message dialogs. Internationalisation: * New translations: be, es, pt_BR, ru. * Updated translations: ca, de, pl. Documentation: * Added Scintilla keyboard commands for editing appendix. * Improved search section; added all find and go to commands. * Added section about character sets. Geany 0.7 (June 04, 2006) * user-definable keyboard shortcuts * filetype definition files can be overridden in Geany's configuration directory (please see documentation) * added filetypes Ruby and Tcl/Tk * improved build system (for Perl, Python, Ruby and others) * loading of Virtual Terminal Emulation can be disabled in the preferences dialog * new menu item "Search" with Find items from Edit menu and new item "Find Previous" * fixed the bug which let Geany crash with newer GTK versions * improved documentation: added documentation for keyboard shortcuts, the build system and filetype definition files * new translations: Catalan and Polish * many small improvements * fixed lots of bugs (please see ChangeLog for details) Geany 0.6 (April 30, 2006) * added option to place new file tabs to the right or left of the tab list * improved file open dialog * improved scrolling of the compiler output window * rewrote most of the code for compiling files, now all settings are read from filetype definition files * now, you can drag files from a file manager into Geany and they will be opened * improved handling of filenames which contain non-UTF8 chars * added user-definable comment characters to all filetype definition files * implemented folding * added file properties dialog * improved search and find dialogs * Geany now creates a FIFO, to communicate between different instances for opening files in an already running instance * added filetypes SQL and (O)Caml * many small improvements * fixed lots of bugs, including #1419473, #1422135, #1421776 and #1441359 * for more details read the ChangeLog Geany 0.5 (January 27, 2006) * set the Open File dialog directory to the same directory as the current file (thanks to Nick Treleaven for this patch) * fixed some bugs when opening files with non UTF-8 filenames * updated included Scintilla to version 1.67 * improved auto indention, now "for (...) {" works, too * added popup menu to sidebar lists, to quickly hide them * symbol list support for filetypes LaTeX and DocBook * added .cc, .hh and .hxx extension for filetype C++ * added new keywords for PHP5 * added new option "Beep on errors" to disable beeping * eliminated compiler (gcc4) warnings * closed bug #1387828 and #1387839 * fixed lots of bugs (please see ChangeLog for details) Geany 0.4 (December 21, 2005) * new filetype: Assembler * new filetype: Conf for configuration files * added a terminal emulation widget, needs only libvte.so at runtime, but it also runs without it, see documentation * made some general improvements to increase startup speed * changed "build with make" keyboard shortcut to Shift+F9 to avoid problems with window managers key bindings * added auto-closing [ and { brackets in LaTex-Mode * improved documentation, but it is not yet complete * improved the symbol list to categorise the tags in a tree * some new options in the preferences dialog * added popup menu to the list of open files * there are lots of other small changes made since last release * some bugfixes (please see ChangeLog for details) Geany 0.3 (November 20, 2005) * Geany now has a mailing list, for details see http://geany.uvena.de * added open files list in the left treeview widget * added toolbar button to open the color chooser * heavily improved recent files menu * added shortcut for "walking" between open documents by pressing STRG+LEFT resp. STRG+RIGHT * created template files for new files with specified filetype * added highlighting support for Python (please give feedback) * extracted all hardcoded styling definitions for all filetypes so they can be easily edited * added vertical line to mark long lines * fixed a bug that caused a segfault if configuration directory could not created * fixed a bug which prevented auto-completion from working * many minor bugfixes (see ChangeLog for details) Geany 0.2 (October 26, 2005) * improved file open dialog * improved Find dialog * powerful Replace dialog * gcc4 compilation fix * minor bugfixes Geany 0.1 (October 19, 2005) * first official release geany-1.23.1+dfsg/configure0000754000175000017500000234065112146147764016005 0ustar hyperairhyperair#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for Geany 1.23.1. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: https://sourceforge.net/tracker/?group_id=153444&atid=787791 $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do $0: have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Geany' PACKAGE_TARNAME='geany' PACKAGE_VERSION='1.23.1' PACKAGE_STRING='Geany 1.23.1' PACKAGE_BUGREPORT='https://sourceforge.net/tracker/?group_id=153444&atid=787791' PACKAGE_URL='' ac_unique_file="src/geany.h" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS GEANY_DATA_DIR MKINSTALLDIRS POSUB POFILES PO_IN_DATADIR_FALSE PO_IN_DATADIR_TRUE INTLLIBS INSTOBJEXT GMOFILES CATOBJEXT CATALOGS MSGFMT_OPTS GETTEXT_PACKAGE DATADIRNAME ALL_LINGUAS INTLTOOL_PERL GMSGFMT MSGFMT MSGMERGE XGETTEXT INTLTOOL_POLICY_RULE INTLTOOL_SERVICE_RULE INTLTOOL_THEME_RULE INTLTOOL_SCHEMAS_RULE INTLTOOL_CAVES_RULE INTLTOOL_XML_NOMERGE_RULE INTLTOOL_XML_RULE INTLTOOL_KBD_RULE INTLTOOL_XAM_RULE INTLTOOL_UI_RULE INTLTOOL_SOUNDLIST_RULE INTLTOOL_SHEET_RULE INTLTOOL_SERVER_RULE INTLTOOL_PONG_RULE INTLTOOL_OAF_RULE INTLTOOL_PROP_RULE INTLTOOL_KEYS_RULE INTLTOOL_DIRECTORY_RULE INTLTOOL_DESKTOP_RULE intltool__v_merge_options_0 intltool__v_merge_options_ INTLTOOL_V_MERGE_OPTIONS INTLTOOL__v_MERGE_0 INTLTOOL__v_MERGE_ INTLTOOL_V_MERGE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE USE_NLS MINGW_FALSE MINGW_TRUE PLUGINS_FALSE PLUGINS_TRUE CXXCPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP NM ac_ct_DUMPBIN DUMPBIN LD FGREP SED host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBTOOL GTHREAD_LIBS GTHREAD_CFLAGS DEPENDENCIES GTK_LIBS GTK_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG LN_S am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX EGREP GREP CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_deprecated enable_binreloc enable_static enable_shared with_pic enable_fast_install with_gnu_ld with_sysroot enable_libtool_lock enable_plugins enable_vte with_vte_module_path enable_socket enable_the_force enable_nls ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP CXX CXXFLAGS CCC PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR GTK_CFLAGS GTK_LIBS GTHREAD_CFLAGS GTHREAD_LIBS CXXCPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures Geany 1.23.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/geany] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of Geany 1.23.1:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: `make V=1') --disable-silent-rules verbose build output (undo: `make V=0') --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --disable-deprecated Disable deprecated GTK functions. --enable-binreloc compile with binary relocation support [default=no] --enable-static[=PKGS] build static libraries [default=no] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --disable-plugins compile without plugin support [default=no] --enable-vte enable if you want virtual terminal support [default=yes] --enable-socket enable if you want to detect a running instance [default=yes] --enable-the-force enable if you are Luke Skywalker and the force is with you [default=no] --disable-nls do not use Native Language Support Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot=DIR Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-vte-module-path=PATH Path to a loadable libvte [default=None] Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path GTK_CFLAGS C compiler flags for GTK, overriding pkg-config GTK_LIBS linker flags for GTK, overriding pkg-config GTHREAD_CFLAGS C compiler flags for GTHREAD, overriding pkg-config GTHREAD_LIBS linker flags for GTHREAD, overriding pkg-config CXXCPP C++ preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF Geany configure 1.23.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## --------------------------------------------------------------------------- ## ## Report this to https://sourceforge.net/tracker/?group_id=153444&atid=787791 ## ## --------------------------------------------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by Geany $as_me 1.23.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in build-aux "$srcdir"/build-aux; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-aux \"$srcdir\"/build-aux" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. am__api_version='1.11' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='geany' VERSION='1.23.1' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' ac_config_headers="$ac_config_headers config.h" # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "x$prefix" = xNONE; then prefix=$ac_default_prefix fi if test "x$exec_prefix" = xNONE; then exec_prefix=$prefix fi if test -z "${docdir}"; then docdir='${datadir}/doc/${PACKAGE}' fi _GEANY_STATUS="$_GEANY_STATUS Install Geany in:${prefix}" if test -n "${build}" -a -n "${target}"; then _GEANY_STATUS="$_GEANY_STATUS Building Geany on:${build}" _GEANY_STATUS="$_GEANY_STATUS Building Geany for:${target}" fi # why do we use this? DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" if test "x$ac_cv_header_minix_config_h" = xyes; then : MINIX=yes else MINIX= fi if test "$MINIX" = yes; then $as_echo "#define _POSIX_SOURCE 1" >>confdefs.h $as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h $as_echo "#define _MINIX 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 $as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } if ${ac_cv_safe_to_define___extensions__+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ # define __EXTENSIONS__ 1 $ac_includes_default int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_safe_to_define___extensions__=yes else ac_cv_safe_to_define___extensions__=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 $as_echo "$ac_cv_safe_to_define___extensions__" >&6; } test $ac_cv_safe_to_define___extensions__ = yes && $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h $as_echo "#define _ALL_SOURCE 1" >>confdefs.h $as_echo "#define _GNU_SOURCE 1" >>confdefs.h $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi # check for C++ compiler explicitly and fail if none is found, do this check # after AC_PROG_CXX has set the CXX environment variable if ! which $CXX >/dev/null 2>&1; then as_fn_error $? "No C++ compiler found. Please install a C++ compiler." "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # autoscan start # Checks for header files. for ac_header in fcntl.h fnmatch.h glob.h stdlib.h sys/time.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Checks for typedefs, structures, and compiler characteristics. ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" if test "x$ac_cv_type_off_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define off_t long int _ACEOF fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if ${ac_cv_struct_tm+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { struct tm tm; int *p = &tm.tm_sec; return !p; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_struct_tm=time.h else ac_cv_struct_tm=sys/time.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 $as_echo "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then $as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h fi # Checks for library functions. for ac_func in gethostname ftruncate fgetpos mkstemp strerror strstr do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # autoscan end # check for SVN revision REVISION="0" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Git revision" >&5 $as_echo_n "checking for Git revision... " >&6; } # try Git first GIT=`which git 2>/dev/null` if test -d ".git" -a "x${GIT}" != "x" -a -x "${GIT}"; then REVISION=`git rev-parse --short --revs-only HEAD || 0` fi if test "x${REVISION}" != "x0"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $REVISION" >&5 $as_echo "$REVISION" >&6; } _GEANY_STATUS="$_GEANY_STATUS Compiling Git revision:$REVISION" # call action-if-found CFLAGS="-g -DGEANY_DEBUG $CFLAGS" else REVISION="-1" { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } # call action-if-not-found fi cat >>confdefs.h <<_ACEOF #define REVISION "$REVISION" _ACEOF # GTK/GLib/GIO checks gtk_modules="gtk+-2.0 >= 2.16 glib-2.0 >= 2.20" gtk_modules_private="gio-2.0 >= 2.20 gmodule-2.0" if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK" >&5 $as_echo_n "checking for GTK... " >&6; } if test -n "$GTK_CFLAGS"; then pkg_cv_GTK_CFLAGS="$GTK_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$gtk_modules \$gtk_modules_private\""; } >&5 ($PKG_CONFIG --exists --print-errors "$gtk_modules $gtk_modules_private") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags "$gtk_modules $gtk_modules_private" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTK_LIBS"; then pkg_cv_GTK_LIBS="$GTK_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$gtk_modules \$gtk_modules_private\""; } >&5 ($PKG_CONFIG --exists --print-errors "$gtk_modules $gtk_modules_private") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs "$gtk_modules $gtk_modules_private" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$gtk_modules $gtk_modules_private" 2>&1` else GTK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$gtk_modules $gtk_modules_private" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ($gtk_modules $gtk_modules_private) were not met: $GTK_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTK_CFLAGS and GTK_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTK_CFLAGS and GTK_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GTK_CFLAGS=$pkg_cv_GTK_CFLAGS GTK_LIBS=$pkg_cv_GTK_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi DEPENDENCIES=$gtk_modules GTK_VERSION=`$PKG_CONFIG --modversion gtk+-2.0` _GEANY_STATUS="$_GEANY_STATUS Using GTK version:${GTK_VERSION}" # GTHREAD checks gthread_modules="gthread-2.0" pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTHREAD" >&5 $as_echo_n "checking for GTHREAD... " >&6; } if test -n "$GTHREAD_CFLAGS"; then pkg_cv_GTHREAD_CFLAGS="$GTHREAD_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$gthread_modules\""; } >&5 ($PKG_CONFIG --exists --print-errors "$gthread_modules") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTHREAD_CFLAGS=`$PKG_CONFIG --cflags "$gthread_modules" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTHREAD_LIBS"; then pkg_cv_GTHREAD_LIBS="$GTHREAD_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$gthread_modules\""; } >&5 ($PKG_CONFIG --exists --print-errors "$gthread_modules") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTHREAD_LIBS=`$PKG_CONFIG --libs "$gthread_modules" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTHREAD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$gthread_modules" 2>&1` else GTHREAD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$gthread_modules" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTHREAD_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ($gthread_modules) were not met: $GTHREAD_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTHREAD_CFLAGS and GTHREAD_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTHREAD_CFLAGS and GTHREAD_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GTHREAD_CFLAGS=$pkg_cv_GTHREAD_CFLAGS GTHREAD_LIBS=$pkg_cv_GTHREAD_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi # --disable-deprecated switch for GTK2 purification # Check whether --enable-deprecated was given. if test "${enable_deprecated+set}" = set; then : enableval=$enable_deprecated; GTK_CFLAGS="$GTK_CFLAGS -DG_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED" fi # Check for binary relocation support # Check whether --enable-binreloc was given. if test "${enable_binreloc+set}" = set; then : enableval=$enable_binreloc; enable_binreloc=$enableval else enable_binreloc=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether binary relocation support should be enabled" >&5 $as_echo_n "checking whether binary relocation support should be enabled... " >&6; } if test "$enable_binreloc" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker mappings at /proc/self/maps" >&5 $as_echo_n "checking for linker mappings at /proc/self/maps... " >&6; } if test -e /proc/self/maps; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "/proc/self/maps is not available. Binary relocation cannot be enabled." "$LINENO" 5 enable_binreloc="no" fi elif test "$enable_binreloc" = "auto"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes when available" >&5 $as_echo "yes when available" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker mappings at /proc/self/maps" >&5 $as_echo_n "checking for linker mappings at /proc/self/maps... " >&6; } if test -e /proc/self/maps; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } enable_binreloc=yes { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether everything is installed to the same prefix" >&5 $as_echo_n "checking whether everything is installed to the same prefix... " >&6; } if test "$bindir" = '${exec_prefix}/bin' -a "$sbindir" = '${exec_prefix}/sbin' -a \ "$datadir" = '${prefix}/share' -a "$libdir" = '${exec_prefix}/lib' -a \ "$libexecdir" = '${exec_prefix}/libexec' -a "$sysconfdir" = '${prefix}/etc' then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: Binary relocation support will be disabled." >&5 $as_echo "$as_me: Binary relocation support will be disabled." >&6;} enable_binreloc=no fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } enable_binreloc=no fi elif test "$enable_binreloc" = "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (unknown value \"$enable_binreloc\")" >&5 $as_echo "no (unknown value \"$enable_binreloc\")" >&6; } enable_binreloc=no fi if test "$enable_binreloc" = "yes"; then $as_echo "#define ENABLE_BINRELOC /**/" >>confdefs.h fi _GEANY_STATUS="$_GEANY_STATUS Enable binary relocation:$enable_binreloc" # CTags source compatibility (we actually use GRegex instead of POSIX regcomp) $as_echo "#define HAVE_REGCOMP 1" >>confdefs.h # Plugins support # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=no fi case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.2' macro_revision='1.3337' ltmain="$ac_aux_dir/ltmain.sh" # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case "$ECHO" in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test "$GCC" != yes; then reload_cmds=false fi ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 $as_echo "${with_sysroot}" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='${wl}--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi link_all_deplibs=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test x"$lt_cv_prog_compiler__b" = xyes; then archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test "$lt_cv_irix_exported_symbol" = yes; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([A-Za-z]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen="shl_load" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen="dlopen" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu else _lt_caught_CXX_error=yes fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec_CXX='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty # executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared # libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else ld_shlibs_CXX=no fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='${wl}-z,text' allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs_CXX=no ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink || test "$inherit_rpath_CXX" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_commands="$ac_config_commands libtool" # Only expand once: # Check whether --enable-plugins was given. if test "${enable_plugins+set}" = set; then : enableval=$enable_plugins; geany_enable_plugins=$enableval else geany_enable_plugins=yes fi case "$LIBTOOL" in #( *--silent*) : ;; #( *) : LIBTOOL="$LIBTOOL --silent" ;; esac if test "x$geany_enable_plugins" = "xyes" ; then $as_echo "#define HAVE_PLUGINS 1" >>confdefs.h if true; then PLUGINS_TRUE= PLUGINS_FALSE='#' else PLUGINS_TRUE='#' PLUGINS_FALSE= fi else if false; then PLUGINS_TRUE= PLUGINS_FALSE='#' else PLUGINS_TRUE='#' PLUGINS_FALSE= fi fi _GEANY_STATUS="$_GEANY_STATUS Build with plugin support:$geany_enable_plugins" # check for mingw specific settings # Check whether --enable-vte was given. if test "${enable_vte+set}" = set; then : enableval=$enable_vte; geany_enable_vte="$enableval" else geany_enable_vte="yes" fi # Check whether --with-vte-module-path was given. if test "${with_vte_module_path+set}" = set; then : withval=$with_vte_module_path; cat >>confdefs.h <<_ACEOF #define VTE_MODULE_PATH "$withval" _ACEOF fi # Check whether --enable-socket was given. if test "${enable_socket+set}" = set; then : enableval=$enable_socket; geany_enable_socket="$enableval" else geany_enable_socket="auto" fi case "${host}" in *mingw*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fnmatch in -liberty" >&5 $as_echo_n "checking for fnmatch in -liberty... " >&6; } if ${ac_cv_lib_iberty_fnmatch+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-liberty $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char fnmatch (); int main () { return fnmatch (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_iberty_fnmatch=yes else ac_cv_lib_iberty_fnmatch=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_iberty_fnmatch" >&5 $as_echo "$ac_cv_lib_iberty_fnmatch" >&6; } if test "x$ac_cv_lib_iberty_fnmatch" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBIBERTY 1 _ACEOF LIBS="-liberty $LIBS" else as_fn_error $? "fnmatch does not present in libiberty. You need to update it, read http://www.geany.org/Support/CrossCompile for details." "$LINENO" 5 fi $as_echo "#define WIN32 1" >>confdefs.h if test "x$_geany_enable_vte_done" = x; then if test -n "no"; then geany_enable_vte="no" elif test "x$geany_enable_vte" = xauto; then geany_enable_vte=yes fi if test "x$geany_enable_vte" = xyes; then $as_echo "#define HAVE_VTE 1" >>confdefs.h fi _GEANY_STATUS="$_GEANY_STATUS Use virtual terminal support:$geany_enable_vte" _geany_enable_vte_done=yes fi if test "x$_geany_enable_socket_done" = x; then if test -n "yes"; then geany_enable_socket="yes" elif test "x$geany_enable_socket" = xauto; then geany_enable_socket=yes fi if test "x$geany_enable_socket" = xyes; then $as_echo "#define HAVE_SOCKET 1" >>confdefs.h # this should bring in libsocket on Solaris: { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing connect" >&5 $as_echo_n "checking for library containing connect... " >&6; } if ${ac_cv_search_connect+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char connect (); int main () { return connect (); ; return 0; } _ACEOF for ac_lib in '' socket; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_connect=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_connect+:} false; then : break fi done if ${ac_cv_search_connect+:} false; then : else ac_cv_search_connect=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_connect" >&5 $as_echo "$ac_cv_search_connect" >&6; } ac_res=$ac_cv_search_connect if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi _GEANY_STATUS="$_GEANY_STATUS Use (UNIX domain) socket support:$geany_enable_socket" _geany_enable_socket_done=yes fi if true; then MINGW_TRUE= MINGW_FALSE='#' else MINGW_TRUE='#' MINGW_FALSE= fi ;; *) if false; then MINGW_TRUE= MINGW_FALSE='#' else MINGW_TRUE='#' MINGW_FALSE= fi ;; esac if test "x$_geany_enable_socket_done" = x; then if test -n ""; then geany_enable_socket="" elif test "x$geany_enable_socket" = xauto; then geany_enable_socket=yes fi if test "x$geany_enable_socket" = xyes; then $as_echo "#define HAVE_SOCKET 1" >>confdefs.h # this should bring in libsocket on Solaris: { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing connect" >&5 $as_echo_n "checking for library containing connect... " >&6; } if ${ac_cv_search_connect+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char connect (); int main () { return connect (); ; return 0; } _ACEOF for ac_lib in '' socket; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_connect=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_connect+:} false; then : break fi done if ${ac_cv_search_connect+:} false; then : else ac_cv_search_connect=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_connect" >&5 $as_echo "$ac_cv_search_connect" >&6; } ac_res=$ac_cv_search_connect if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi _GEANY_STATUS="$_GEANY_STATUS Use (UNIX domain) socket support:$geany_enable_socket" _geany_enable_socket_done=yes fi if test "x$_geany_enable_vte_done" = x; then if test -n ""; then geany_enable_vte="" elif test "x$geany_enable_vte" = xauto; then geany_enable_vte=yes fi if test "x$geany_enable_vte" = xyes; then $as_echo "#define HAVE_VTE 1" >>confdefs.h fi _GEANY_STATUS="$_GEANY_STATUS Use virtual terminal support:$geany_enable_vte" _geany_enable_vte_done=yes fi # Check whether --enable-the-force was given. if test "${enable_the_force+set}" = set; then : enableval=$enable_the_force; be_luke="$enableval" else be_luke="no" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the force is with you" >&5 $as_echo_n "checking whether the force is with you... " >&6; } if test "x$be_luke" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # i18n { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } case "$am__api_version" in 1.01234) as_fn_error $? "Automake 1.5 or newer is required to use intltool" "$LINENO" 5 ;; *) ;; esac INTLTOOL_REQUIRED_VERSION_AS_INT=`echo | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` INTLTOOL_APPLIED_VERSION=`intltool-update --version | head -1 | cut -d" " -f3` INTLTOOL_APPLIED_VERSION_AS_INT=`echo $INTLTOOL_APPLIED_VERSION | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'` if test -n ""; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intltool >= " >&5 $as_echo_n "checking for intltool >= ... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_APPLIED_VERSION found" >&5 $as_echo "$INTLTOOL_APPLIED_VERSION found" >&6; } test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" || as_fn_error $? "Your intltool is too old. You need intltool or later." "$LINENO" 5 fi # Extract the first word of "intltool-update", so it can be a program name with args. set dummy intltool-update; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_UPDATE+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_UPDATE in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_UPDATE="$INTLTOOL_UPDATE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_UPDATE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_UPDATE=$ac_cv_path_INTLTOOL_UPDATE if test -n "$INTLTOOL_UPDATE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_UPDATE" >&5 $as_echo "$INTLTOOL_UPDATE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "intltool-merge", so it can be a program name with args. set dummy intltool-merge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_MERGE+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_MERGE in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_MERGE="$INTLTOOL_MERGE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_MERGE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_MERGE=$ac_cv_path_INTLTOOL_MERGE if test -n "$INTLTOOL_MERGE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_MERGE" >&5 $as_echo "$INTLTOOL_MERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "intltool-extract", so it can be a program name with args. set dummy intltool-extract; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_EXTRACT+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_EXTRACT in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_EXTRACT="$INTLTOOL_EXTRACT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_EXTRACT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_EXTRACT=$ac_cv_path_INTLTOOL_EXTRACT if test -n "$INTLTOOL_EXTRACT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_EXTRACT" >&5 $as_echo "$INTLTOOL_EXTRACT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$INTLTOOL_UPDATE" -o -z "$INTLTOOL_MERGE" -o -z "$INTLTOOL_EXTRACT"; then as_fn_error $? "The intltool scripts were not found. Please install intltool." "$LINENO" 5 fi if test -z "$AM_DEFAULT_VERBOSITY"; then AM_DEFAULT_VERBOSITY=1 fi INTLTOOL_V_MERGE='$(INTLTOOL__v_MERGE_$(V))' INTLTOOL__v_MERGE_='$(INTLTOOL__v_MERGE_$(AM_DEFAULT_VERBOSITY))' INTLTOOL__v_MERGE_0='@echo " ITMRG " $@;' INTLTOOL_V_MERGE_OPTIONS='$(intltool__v_merge_options_$(V))' intltool__v_merge_options_='$(intltool__v_merge_options_$(AM_DEFAULT_VERBOSITY))' intltool__v_merge_options_0='-q' INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_KEYS_RULE='%.keys: %.keys.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_PROP_RULE='%.prop: %.prop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_OAF_RULE='%.oaf: %.oaf.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -p $(top_srcdir)/po $< $@' INTLTOOL_PONG_RULE='%.pong: %.pong.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SERVER_RULE='%.server: %.server.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SHEET_RULE='%.sheet: %.sheet.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_UI_RULE='%.ui: %.ui.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_XML_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge 5000; then INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u --no-translations $< $@' else INTLTOOL_XML_NOMERGE_RULE='%.xml: %.xml.in $(INTLTOOL_MERGE) ; $(INTLTOOL_V_MERGE)_it_tmp_dir=tmp.intltool.$$RANDOM && mkdir $$_it_tmp_dir && LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u $$_it_tmp_dir $< $@ && rmdir $$_it_tmp_dir' fi INTLTOOL_XAM_RULE='%.xam: %.xml.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_KBD_RULE='%.kbd: %.kbd.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_CAVES_RULE='%.caves: %.caves.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SCHEMAS_RULE='%.schemas: %.schemas.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_THEME_RULE='%.theme: %.theme.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_SERVICE_RULE='%.service: %.service.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' INTLTOOL_POLICY_RULE='%.policy: %.policy.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' # Check the gettext tools to make sure they are GNU # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case $XGETTEXT in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_XGETTEXT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi XGETTEXT=$ac_cv_path_XGETTEXT if test -n "$XGETTEXT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case $MSGMERGE in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MSGMERGE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MSGMERGE=$ac_cv_path_MSGMERGE if test -n "$MSGMERGE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $MSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_MSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MSGFMT=$ac_cv_path_MSGFMT if test -n "$MSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$XGETTEXT" -o -z "$MSGMERGE" -o -z "$MSGFMT"; then as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5 fi xgversion="`$XGETTEXT --version|grep '(GNU ' 2> /dev/null`" mmversion="`$MSGMERGE --version|grep '(GNU ' 2> /dev/null`" mfversion="`$MSGFMT --version|grep '(GNU ' 2> /dev/null`" if test -z "$xgversion" -o -z "$mmversion" -o -z "$mfversion"; then as_fn_error $? "GNU gettext tools not found; required for intltool" "$LINENO" 5 fi # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_INTLTOOL_PERL+:} false; then : $as_echo_n "(cached) " >&6 else case $INTLTOOL_PERL in [\\/]* | ?:[\\/]*) ac_cv_path_INTLTOOL_PERL="$INTLTOOL_PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_INTLTOOL_PERL="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi INTLTOOL_PERL=$ac_cv_path_INTLTOOL_PERL if test -n "$INTLTOOL_PERL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLTOOL_PERL" >&5 $as_echo "$INTLTOOL_PERL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$INTLTOOL_PERL"; then as_fn_error $? "perl not found" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl >= 5.8.1" >&5 $as_echo_n "checking for perl >= 5.8.1... " >&6; } $INTLTOOL_PERL -e "use 5.8.1;" > /dev/null 2>&1 if test $? -ne 0; then as_fn_error $? "perl 5.8.1 is required for intltool" "$LINENO" 5 else IT_PERL_VERSION=`$INTLTOOL_PERL -e "printf '%vd', $^V"` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $IT_PERL_VERSION" >&5 $as_echo "$IT_PERL_VERSION" >&6; } fi if test "x" != "xno-xml"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML::Parser" >&5 $as_echo_n "checking for XML::Parser... " >&6; } if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } else as_fn_error $? "XML::Parser perl module is required for intltool" "$LINENO" 5 fi fi # Substitute ALL_LINGUAS so we can use it in po/Makefile # Set DATADIRNAME correctly if it is not set yet # (copied from glib-gettext.m4) if test -z "$DATADIRNAME"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : DATADIRNAME=share else case $host in *-*-solaris*) ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : DATADIRNAME=share else DATADIRNAME=lib fi ;; *) DATADIRNAME=lib ;; esac fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi GETTEXT_PACKAGE="$PACKAGE" cat >>confdefs.h <<_ACEOF #define GETTEXT_PACKAGE "$GETTEXT_PACKAGE" _ACEOF if test -n "${LINGUAS}"; then ALL_LINGUAS="${LINGUAS}" else ALL_LINGUAS=`cd "$srcdir/po" 2>/dev/null && ls *.po 2>/dev/null | $AWK 'BEGIN { FS="."; ORS=" " } { print $1 }'` fi for ac_header in locale.h do : ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" if test "x$ac_cv_header_locale_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LOCALE_H 1 _ACEOF fi done if test $ac_cv_header_locale_h = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 $as_echo_n "checking for LC_MESSAGES... " >&6; } if ${am_cv_val_LC_MESSAGES+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return LC_MESSAGES ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_val_LC_MESSAGES=yes else am_cv_val_LC_MESSAGES=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5 $as_echo "$am_cv_val_LC_MESSAGES" >&6; } if test $am_cv_val_LC_MESSAGES = yes; then $as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h fi fi USE_NLS=yes gt_cv_have_gettext=no CATOBJEXT=NONE XGETTEXT=: INTLLIBS= ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default" if test "x$ac_cv_header_libintl_h" = xyes; then : gt_cv_func_dgettext_libintl="no" libintl_extra_libs="" # # First check in libc # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in libc" >&5 $as_echo_n "checking for ngettext in libc... " >&6; } if ${gt_cv_func_ngettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return !ngettext ("","", 1) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_ngettext_libc=yes else gt_cv_func_ngettext_libc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_ngettext_libc" >&5 $as_echo "$gt_cv_func_ngettext_libc" >&6; } if test "$gt_cv_func_ngettext_libc" = "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in libc" >&5 $as_echo_n "checking for dgettext in libc... " >&6; } if ${gt_cv_func_dgettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { return !dgettext ("","") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_dgettext_libc=yes else gt_cv_func_dgettext_libc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_dgettext_libc" >&5 $as_echo "$gt_cv_func_dgettext_libc" >&6; } fi if test "$gt_cv_func_ngettext_libc" = "yes" ; then for ac_func in bind_textdomain_codeset do : ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BIND_TEXTDOMAIN_CODESET 1 _ACEOF fi done fi # # If we don't have everything we want, check in libintl # if test "$gt_cv_func_dgettext_libc" != "yes" \ || test "$gt_cv_func_ngettext_libc" != "yes" \ || test "$ac_cv_func_bind_textdomain_codeset" != "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5 $as_echo_n "checking for bindtextdomain in -lintl... " >&6; } if ${ac_cv_lib_intl_bindtextdomain+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char bindtextdomain (); int main () { return bindtextdomain (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_bindtextdomain=yes else ac_cv_lib_intl_bindtextdomain=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5 $as_echo "$ac_cv_lib_intl_bindtextdomain" >&6; } if test "x$ac_cv_lib_intl_bindtextdomain" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 $as_echo_n "checking for ngettext in -lintl... " >&6; } if ${ac_cv_lib_intl_ngettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ngettext (); int main () { return ngettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_ngettext=yes else ac_cv_lib_intl_ngettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 $as_echo "$ac_cv_lib_intl_ngettext" >&6; } if test "x$ac_cv_lib_intl_ngettext" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5 $as_echo_n "checking for dgettext in -lintl... " >&6; } if ${ac_cv_lib_intl_dgettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dgettext (); int main () { return dgettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_dgettext=yes else ac_cv_lib_intl_dgettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dgettext" >&5 $as_echo "$ac_cv_lib_intl_dgettext" >&6; } if test "x$ac_cv_lib_intl_dgettext" = xyes; then : gt_cv_func_dgettext_libintl=yes fi fi fi if test "$gt_cv_func_dgettext_libintl" != "yes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -liconv is needed to use gettext" >&5 $as_echo_n "checking if -liconv is needed to use gettext... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 $as_echo "" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 $as_echo_n "checking for ngettext in -lintl... " >&6; } if ${ac_cv_lib_intl_ngettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl -liconv $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char ngettext (); int main () { return ngettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_ngettext=yes else ac_cv_lib_intl_ngettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 $as_echo "$ac_cv_lib_intl_ngettext" >&6; } if test "x$ac_cv_lib_intl_ngettext" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dcgettext in -lintl" >&5 $as_echo_n "checking for dcgettext in -lintl... " >&6; } if ${ac_cv_lib_intl_dcgettext+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl -liconv $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dcgettext (); int main () { return dcgettext (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_dcgettext=yes else ac_cv_lib_intl_dcgettext=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dcgettext" >&5 $as_echo "$ac_cv_lib_intl_dcgettext" >&6; } if test "x$ac_cv_lib_intl_dcgettext" = xyes; then : gt_cv_func_dgettext_libintl=yes libintl_extra_libs=-liconv else : fi else : fi fi # # If we found libintl, then check in it for bind_textdomain_codeset(); # we'll prefer libc if neither have bind_textdomain_codeset(), # and both have dgettext and ngettext # if test "$gt_cv_func_dgettext_libintl" = "yes" ; then glib_save_LIBS="$LIBS" LIBS="$LIBS -lintl $libintl_extra_libs" unset ac_cv_func_bind_textdomain_codeset for ac_func in bind_textdomain_codeset do : ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_BIND_TEXTDOMAIN_CODESET 1 _ACEOF fi done LIBS="$glib_save_LIBS" if test "$ac_cv_func_bind_textdomain_codeset" = "yes" ; then gt_cv_func_dgettext_libc=no else if test "$gt_cv_func_dgettext_libc" = "yes" \ && test "$gt_cv_func_ngettext_libc" = "yes"; then gt_cv_func_dgettext_libintl=no fi fi fi fi if test "$gt_cv_func_dgettext_libc" = "yes" \ || test "$gt_cv_func_dgettext_libintl" = "yes"; then gt_cv_have_gettext=yes fi if test "$gt_cv_func_dgettext_libintl" = "yes"; then INTLLIBS="-lintl $libintl_extra_libs" fi if test "$gt_cv_have_gettext" = "yes"; then $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in /*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then ac_cv_path_MSGFMT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$MSGFMT" != "no"; then glib_save_LIBS="$LIBS" LIBS="$LIBS $INTLLIBS" for ac_func in dcgettext do : ac_fn_c_check_func "$LINENO" "dcgettext" "ac_cv_func_dcgettext" if test "x$ac_cv_func_dcgettext" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DCGETTEXT 1 _ACEOF fi done MSGFMT_OPTS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking if msgfmt accepts -c" >&5 $as_echo_n "checking if msgfmt accepts -c... " >&6; } cat >conftest.foo <<_ACEOF msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: test 1.0\n" "PO-Revision-Date: 2007-02-15 12:01+0100\n" "Last-Translator: test \n" "Language-Team: C \n" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" _ACEOF if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$MSGFMT -c -o /dev/null conftest.foo"; } >&5 ($MSGFMT -c -o /dev/null conftest.foo) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then MSGFMT_OPTS=-c; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } echo "$as_me: failed input was:" >&5 sed 's/^/| /' conftest.foo >&5 fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in /*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then ac_cv_path_XGETTEXT="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { extern int _nl_msg_cat_cntr; return _nl_msg_cat_cntr ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : CATOBJEXT=.gmo DATADIRNAME=share else case $host in *-*-solaris*) ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : CATOBJEXT=.gmo DATADIRNAME=share else CATOBJEXT=.mo DATADIRNAME=lib fi ;; *-*-openbsd*) CATOBJEXT=.mo DATADIRNAME=share ;; *) CATOBJEXT=.mo DATADIRNAME=lib ;; esac fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$glib_save_LIBS" INSTOBJEXT=.mo else gt_cv_have_gettext=no fi fi fi if test "$gt_cv_have_gettext" = "yes" ; then $as_echo "#define ENABLE_NLS 1" >>confdefs.h fi if test "$XGETTEXT" != ":"; then if $XGETTEXT --omit-header /dev/null 2> /dev/null; then : ; else { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 $as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } XGETTEXT=":" fi fi # We need to process the po/ directory. POSUB=po ac_config_commands="$ac_config_commands default-1" for lang in $ALL_LINGUAS; do GMOFILES="$GMOFILES $lang.gmo" POFILES="$POFILES $lang.po" done if test "$gt_cv_have_gettext" = "yes"; then if test "x$ALL_LINGUAS" = "x"; then LINGUAS= else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5 $as_echo_n "checking for catalogs to be installed... " >&6; } NEW_LINGUAS= for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "${LINGUAS-%UNSET%}"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then NEW_LINGUAS="$NEW_LINGUAS $presentlang" fi done LINGUAS=$NEW_LINGUAS { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5 $as_echo "$LINGUAS" >&6; } fi if test -n "$LINGUAS"; then for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done fi fi MKINSTALLDIRS= if test -n "$ac_aux_dir"; then MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi test -d po || mkdir po if test "x$srcdir" != "x."; then if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then posrcprefix="$srcdir/" else posrcprefix="../$srcdir/" fi else posrcprefix="../" fi rm -f po/POTFILES sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ < $srcdir/po/POTFILES.in > po/POTFILES # workaround for intltool bug (http://bugzilla.gnome.org/show_bug.cgi?id=490845) if test "x$MSGFMT" = "xno"; then as_fn_error $? "msgfmt not found. Please install the gettext package." "$LINENO" 5 fi # intltool hack to define install_sh on Debian/Ubuntu systems if test "x$install_sh" = "x"; then install_sh="`pwd`/install-sh" fi GEANY_DATA_DIR=`eval echo ${datarootdir}/geany` # Output ac_config_files="$ac_config_files Makefile icons/Makefile icons/16x16/Makefile icons/24x24/Makefile icons/32x32/Makefile icons/48x48/Makefile icons/scalable/Makefile icons/tango/Makefile icons/tango/16x16/Makefile icons/tango/24x24/Makefile icons/tango/32x32/Makefile icons/tango/48x48/Makefile icons/tango/scalable/Makefile tagmanager/Makefile tagmanager/ctags/Makefile tagmanager/mio/Makefile tagmanager/src/Makefile scintilla/Makefile scintilla/include/Makefile src/Makefile plugins/Makefile po/Makefile.in doc/Makefile doc/geany.1 geany.spec geany.pc doc/Doxyfile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${PLUGINS_TRUE}" && test -z "${PLUGINS_FALSE}"; then as_fn_error $? "conditional \"PLUGINS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${PLUGINS_TRUE}" && test -z "${PLUGINS_FALSE}"; then as_fn_error $? "conditional \"PLUGINS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${MINGW_TRUE}" && test -z "${MINGW_FALSE}"; then as_fn_error $? "conditional \"MINGW\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${MINGW_TRUE}" && test -z "${MINGW_FALSE}"; then as_fn_error $? "conditional \"MINGW\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi ac_config_commands="$ac_config_commands po/stamp-it" : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by Geany $as_me 1.23.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ Geany config.status 1.23.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ nm_file_list_spec \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_separator_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec \ reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX \ postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "icons/Makefile") CONFIG_FILES="$CONFIG_FILES icons/Makefile" ;; "icons/16x16/Makefile") CONFIG_FILES="$CONFIG_FILES icons/16x16/Makefile" ;; "icons/24x24/Makefile") CONFIG_FILES="$CONFIG_FILES icons/24x24/Makefile" ;; "icons/32x32/Makefile") CONFIG_FILES="$CONFIG_FILES icons/32x32/Makefile" ;; "icons/48x48/Makefile") CONFIG_FILES="$CONFIG_FILES icons/48x48/Makefile" ;; "icons/scalable/Makefile") CONFIG_FILES="$CONFIG_FILES icons/scalable/Makefile" ;; "icons/tango/Makefile") CONFIG_FILES="$CONFIG_FILES icons/tango/Makefile" ;; "icons/tango/16x16/Makefile") CONFIG_FILES="$CONFIG_FILES icons/tango/16x16/Makefile" ;; "icons/tango/24x24/Makefile") CONFIG_FILES="$CONFIG_FILES icons/tango/24x24/Makefile" ;; "icons/tango/32x32/Makefile") CONFIG_FILES="$CONFIG_FILES icons/tango/32x32/Makefile" ;; "icons/tango/48x48/Makefile") CONFIG_FILES="$CONFIG_FILES icons/tango/48x48/Makefile" ;; "icons/tango/scalable/Makefile") CONFIG_FILES="$CONFIG_FILES icons/tango/scalable/Makefile" ;; "tagmanager/Makefile") CONFIG_FILES="$CONFIG_FILES tagmanager/Makefile" ;; "tagmanager/ctags/Makefile") CONFIG_FILES="$CONFIG_FILES tagmanager/ctags/Makefile" ;; "tagmanager/mio/Makefile") CONFIG_FILES="$CONFIG_FILES tagmanager/mio/Makefile" ;; "tagmanager/src/Makefile") CONFIG_FILES="$CONFIG_FILES tagmanager/src/Makefile" ;; "scintilla/Makefile") CONFIG_FILES="$CONFIG_FILES scintilla/Makefile" ;; "scintilla/include/Makefile") CONFIG_FILES="$CONFIG_FILES scintilla/include/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "plugins/Makefile") CONFIG_FILES="$CONFIG_FILES plugins/Makefile" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "doc/geany.1") CONFIG_FILES="$CONFIG_FILES doc/geany.1" ;; "geany.spec") CONFIG_FILES="$CONFIG_FILES geany.spec" ;; "geany.pc") CONFIG_FILES="$CONFIG_FILES geany.pc" ;; "doc/Doxyfile") CONFIG_FILES="$CONFIG_FILES doc/Doxyfile" ;; "po/stamp-it") CONFIG_COMMANDS="$CONFIG_COMMANDS po/stamp-it" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool 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. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool 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 GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="CXX " # ### BEGIN LIBTOOL CONFIG # Whether or not to build static libraries. build_old_libs=$enable_static # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and in which our libraries should be installed. lt_sysroot=$lt_sysroot # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) if test x"$xsi_shell" = xyes; then sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ func_dirname ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ } # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_basename ()$/,/^} # func_basename /c\ func_basename ()\ {\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ func_dirname_and_basename ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ func_stripname ()\ {\ \ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ \ # positional parameters, so assign one to ordinary parameter first.\ \ func_stripname_result=${3}\ \ func_stripname_result=${func_stripname_result#"${1}"}\ \ func_stripname_result=${func_stripname_result%"${2}"}\ } # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ func_split_long_opt ()\ {\ \ func_split_long_opt_name=${1%%=*}\ \ func_split_long_opt_arg=${1#*=}\ } # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ func_split_short_opt ()\ {\ \ func_split_short_opt_arg=${1#??}\ \ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ } # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ func_lo2o ()\ {\ \ case ${1} in\ \ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ \ *) func_lo2o_result=${1} ;;\ \ esac\ } # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_xform ()$/,/^} # func_xform /c\ func_xform ()\ {\ func_xform_result=${1%.*}.lo\ } # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_arith ()$/,/^} # func_arith /c\ func_arith ()\ {\ func_arith_result=$(( $* ))\ } # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_len ()$/,/^} # func_len /c\ func_len ()\ {\ func_len_result=${#1}\ } # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$lt_shell_append" = xyes; then sed -e '/^func_append ()$/,/^} # func_append /c\ func_append ()\ {\ eval "${1}+=\\${2}"\ } # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ func_append_quoted ()\ {\ \ func_quote_for_eval "${2}"\ \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ } # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 $as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} fi mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; "default-1":C) case "$CONFIG_FILES" in *po/Makefile.in*) sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile esac ;; "po/stamp-it":C) if ! grep "^# INTLTOOL_MAKEFILE$" "po/Makefile.in" > /dev/null ; then as_fn_error $? "po/Makefile.in.in was not created by intltoolize." "$LINENO" 5 fi rm -f "po/stamp-it" "po/stamp-it.tmp" "po/POTFILES" "po/Makefile.tmp" >"po/stamp-it.tmp" sed '/^#/d s/^[[].*] *// /^[ ]*$/d '"s|^| $ac_top_srcdir/|" \ "$srcdir/po/POTFILES.in" | sed '$!s/$/ \\/' >"po/POTFILES" sed '/^POTFILES =/,/[^\\]$/ { /^POTFILES =/!d r po/POTFILES } ' "po/Makefile.in" >"po/Makefile" rm -f "po/Makefile.tmp" mv "po/stamp-it.tmp" "po/stamp-it" ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi # Summary # Count the max lengths dlen=0 vlen=0 while read l; do d=`echo "$l" | cut -d: -f1` v=`echo "$l" | cut -d: -f2` dl=${#d} vl=${#v} test $dlen -lt $dl && dlen=$dl test $vlen -lt $vl && vlen=$vl done << EOF $_GEANY_STATUS EOF # Print a nice top bar # description + ' : ' + value total=`expr $dlen + 3 + $vlen` for i in `seq 1 $total`; do echo -n '-'; done echo # And print the actual content # format is: # key1 : value1 # second key : second value while read l; do test -z "$l" && continue d=`echo "$l" | cut -d: -f1` v=`echo "$l" | cut -d: -f2` printf '%-*s : %s\n' $dlen "$d" "$v" done << EOF $_GEANY_STATUS EOF echo "" echo "Configuration is done OK." echo "" geany-1.23.1+dfsg/intltool-merge.in0000644000175000017500000000000012146146117017332 0ustar hyperairhyperairgeany-1.23.1+dfsg/wscript0000644000175000017500000007162412146147733015510 0ustar hyperairhyperair# -*- coding: utf-8 -*- # # WAF build script - this file is part of Geany, a fast and lightweight IDE # # Copyright 2008-2012 Enrico Tröger # Copyright 2008-2012 Nick Treleaven # # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. """ This is a WAF build script (http://code.google.com/p/waf/). It can be used as an alternative build system to autotools for Geany. It does not (yet) cover all of the autotools tests and configure options but all important things are working. "make dist" should be done with autotools, most other targets and functions should work better (regarding performance and flexibility) or at least equally. Missing features: --enable-binreloc, make targets: dist, pdf (in doc/) Known issues: Dependency handling is buggy, e.g. if src/document.h is changed, depending source files are not rebuilt (maybe Waf bug). The code of this file itself loosely follows PEP 8 with some exceptions (line width 100 characters and some other minor things). Requires WAF 1.6.1 and Python 2.5 (or later). """ import sys import os import tempfile from waflib import Logs, Options, Scripting, Utils from waflib.Configure import ConfigurationContext from waflib.Errors import WafError from waflib.TaskGen import feature APPNAME = 'geany' VERSION = '1.23.1' LINGUAS_FILE = 'po/LINGUAS' MINIMUM_GTK_VERSION = '2.16.0' MINIMUM_GLIB_VERSION = '2.20.0' top = '.' out = '_build_' mio_sources = set(['tagmanager/mio/mio.c']) ctags_sources = set([ 'tagmanager/ctags/abaqus.c', 'tagmanager/ctags/args.c', 'tagmanager/ctags/abc.c', 'tagmanager/ctags/actionscript.c', 'tagmanager/ctags/asciidoc.c', 'tagmanager/ctags/asm.c', 'tagmanager/ctags/basic.c', 'tagmanager/ctags/c.c', 'tagmanager/ctags/cobol.c', 'tagmanager/ctags/conf.c', 'tagmanager/ctags/css.c', 'tagmanager/ctags/ctags.c', 'tagmanager/ctags/diff.c', 'tagmanager/ctags/docbook.c', 'tagmanager/ctags/entry.c', 'tagmanager/ctags/fortran.c', 'tagmanager/ctags/get.c', 'tagmanager/ctags/haskell.c', 'tagmanager/ctags/haxe.c', 'tagmanager/ctags/html.c', 'tagmanager/ctags/js.c', 'tagmanager/ctags/keyword.c', 'tagmanager/ctags/latex.c', 'tagmanager/ctags/lregex.c', 'tagmanager/ctags/lua.c', 'tagmanager/ctags/make.c', 'tagmanager/ctags/markdown.c', 'tagmanager/ctags/matlab.c', 'tagmanager/ctags/nsis.c', 'tagmanager/ctags/nestlevel.c', 'tagmanager/ctags/objc.c', 'tagmanager/ctags/options.c', 'tagmanager/ctags/parse.c', 'tagmanager/ctags/pascal.c', 'tagmanager/ctags/r.c', 'tagmanager/ctags/perl.c', 'tagmanager/ctags/php.c', 'tagmanager/ctags/python.c', 'tagmanager/ctags/read.c', 'tagmanager/ctags/rest.c', 'tagmanager/ctags/ruby.c', 'tagmanager/ctags/sh.c', 'tagmanager/ctags/sort.c', 'tagmanager/ctags/sql.c', 'tagmanager/ctags/strlist.c', 'tagmanager/ctags/txt2tags.c', 'tagmanager/ctags/tcl.c', 'tagmanager/ctags/vhdl.c', 'tagmanager/ctags/verilog.c', 'tagmanager/ctags/vstring.c']) tagmanager_sources = set([ 'tagmanager/src/tm_file_entry.c', 'tagmanager/src/tm_project.c', 'tagmanager/src/tm_source_file.c', 'tagmanager/src/tm_symbol.c', 'tagmanager/src/tm_tag.c', 'tagmanager/src/tm_tagmanager.c', 'tagmanager/src/tm_work_object.c', 'tagmanager/src/tm_workspace.c']) scintilla_sources = set(['scintilla/gtk/scintilla-marshal.c']) geany_sources = set([ 'src/about.c', 'src/build.c', 'src/callbacks.c', 'src/dialogs.c', 'src/document.c', 'src/editor.c', 'src/encodings.c', 'src/filetypes.c', 'src/geanyentryaction.c', 'src/geanymenubuttonaction.c', 'src/geanyobject.c', 'src/geanywraplabel.c', 'src/highlighting.c', 'src/keybindings.c', 'src/keyfile.c', 'src/log.c', 'src/main.c', 'src/msgwindow.c', 'src/navqueue.c', 'src/notebook.c', 'src/plugins.c', 'src/pluginutils.c', 'src/prefix.c', 'src/prefs.c', 'src/printing.c', 'src/project.c', 'src/sciwrappers.c', 'src/search.c', 'src/socket.c', 'src/stash.c', 'src/symbols.c', 'src/templates.c', 'src/toolbar.c', 'src/tools.c', 'src/sidebar.c', 'src/ui_utils.c', 'src/utils.c']) geany_icons = { 'hicolor/16x16/apps': ['16x16/classviewer-class.png', '16x16/classviewer-macro.png', '16x16/classviewer-member.png', '16x16/classviewer-method.png', '16x16/classviewer-namespace.png', '16x16/classviewer-other.png', '16x16/classviewer-struct.png', '16x16/classviewer-var.png', '16x16/geany.png'], 'hicolor/16x16/actions': ['16x16/geany-build.png', '16x16/geany-close-all.png', '16x16/geany-save-all.png'], 'hicolor/24x24/actions': ['24x24/geany-build.png', '24x24/geany-close-all.png', '24x24/geany-save-all.png'], 'hicolor/32x32/actions': ['32x32/geany-build.png', '32x32/geany-close-all.png', '32x32/geany-save-all.png'], 'hicolor/48x48/actions': ['48x48/geany-build.png', '48x48/geany-close-all.png', '48x48/geany-save-all.png'], 'hicolor/48x48/apps': ['48x48/geany.png'], 'hicolor/scalable/apps': ['scalable/geany.svg'], 'hicolor/scalable/actions': ['scalable/geany-build.svg', 'scalable/geany-close-all.svg', 'scalable/geany-save-all.svg'], 'Tango/16x16/actions': ['tango/16x16/geany-save-all.png'], 'Tango/24x24/actions': ['tango/24x24/geany-save-all.png'], 'Tango/32x32/actions': ['tango/32x32/geany-save-all.png'], 'Tango/48x48/actions': ['tango/48x48/geany-save-all.png'], 'Tango/scalable/actions': ['tango/scalable/geany-save-all.svg'] } geany_icons_indexes = { 'hicolor': ['index.theme'], 'Tango': ['tango/index.theme'] } def configure(conf): conf.check_waf_version(mini='1.6.1') conf.load('compiler_c') is_win32 = _target_is_win32(conf) conf.check_cc(header_name='fcntl.h', mandatory=False) conf.check_cc(header_name='fnmatch.h', mandatory=False) conf.check_cc(header_name='glob.h', mandatory=False) conf.check_cc(header_name='sys/time.h', mandatory=False) conf.check_cc(header_name='sys/types.h', mandatory=False) conf.check_cc(header_name='sys/stat.h', mandatory=False) conf.define('HAVE_STDLIB_H', 1) # are there systems without stdlib.h? conf.define('STDC_HEADERS', 1) # an optimistic guess ;-) _add_to_env_and_define(conf, 'HAVE_REGCOMP', 1) # needed for CTags conf.check_cc(function_name='fgetpos', header_name='stdio.h', mandatory=False) conf.check_cc(function_name='ftruncate', header_name='unistd.h', mandatory=False) conf.check_cc(function_name='gethostname', header_name='unistd.h', mandatory=False) conf.check_cc(function_name='mkstemp', header_name='stdlib.h', mandatory=False) conf.check_cc(function_name='strstr', header_name='string.h') # check sunOS socket support if Options.platform == 'sunos': conf.check_cc(function_name='socket', lib='socket', header_name='sys/socket.h', uselib_store='SUNOS_SOCKET', mandatory=True) # check for cxx after the header and function checks have been done to ensure they are # checked with cc not cxx conf.load('compiler_cxx') if is_win32: conf.load('winres') _load_intltool_if_available(conf) # GTK / GIO version check conf.check_cfg(package='gtk+-2.0', atleast_version=MINIMUM_GTK_VERSION, uselib_store='GTK', mandatory=True, args='--cflags --libs') conf.check_cfg(package='glib-2.0', atleast_version=MINIMUM_GLIB_VERSION, uselib_store='GLIB', mandatory=True, args='--cflags --libs') conf.check_cfg(package='gmodule-2.0', uselib_store='GMODULE', mandatory=True, args='--cflags --libs') conf.check_cfg(package='gio-2.0', uselib_store='GIO', args='--cflags --libs', mandatory=True) gtk_version = conf.check_cfg(modversion='gtk+-2.0', uselib_store='GTK') or 'Unknown' conf.check_cfg(package='gthread-2.0', uselib_store='GTHREAD', args='--cflags --libs') # Windows specials if is_win32: if conf.env['PREFIX'].lower() == tempfile.gettempdir().lower(): # overwrite default prefix on Windows (tempfile.gettempdir() is the Waf default) new_prefix = os.path.join(str(conf.root), '%s-%s' % (APPNAME, VERSION)) _add_to_env_and_define(conf, 'PREFIX', new_prefix, quote=True) _add_to_env_and_define(conf, 'BINDIR', os.path.join(new_prefix, 'bin'), quote=True) _add_to_env_and_define(conf, 'DOCDIR', os.path.join(conf.env['PREFIX'], 'doc'), quote=True) _add_to_env_and_define(conf, 'LIBDIR', conf.env['PREFIX'], quote=True) conf.define('LOCALEDIR', os.path.join('share' 'locale'), quote=True) # overwrite LOCALEDIR to install message catalogues properly conf.env['LOCALEDIR'] = os.path.join(conf.env['PREFIX'], 'share/locale') # DATADIR is defined in objidl.h, so we remove it from config.h but keep it in env conf.undefine('DATADIR') conf.env['DATADIR'] = os.path.join(conf.env['PREFIX'], 'data') conf.env.append_value('LINKFLAGS_cprogram', ['-mwindows']) conf.env.append_value('LIB_WIN32', ['wsock32', 'uuid', 'ole32', 'iberty']) else: conf.env['cshlib_PATTERN'] = '%s.so' # DATADIR and LOCALEDIR are defined by the intltool tool # but they are not added to the environment, so we need to _add_define_to_env(conf, 'DATADIR') _add_define_to_env(conf, 'LOCALEDIR') docdir = os.path.join(conf.env['DATADIR'], 'doc', 'geany') libdir = os.path.join(conf.env['PREFIX'], 'lib') mandir = os.path.join(conf.env['DATADIR'], 'man') _define_from_opt(conf, 'DOCDIR', conf.options.docdir, docdir) _define_from_opt(conf, 'LIBDIR', conf.options.libdir, libdir) _define_from_opt(conf, 'MANDIR', conf.options.mandir, mandir) revision = _get_git_rev(conf) conf.define('ENABLE_NLS', 1) conf.define('GEANY_LOCALEDIR', '' if is_win32 else conf.env['LOCALEDIR'], quote=True) conf.define('GEANY_DATADIR', 'data' if is_win32 else conf.env['DATADIR'], quote=True) conf.define('GEANY_DOCDIR', conf.env['DOCDIR'], quote=True) conf.define('GEANY_LIBDIR', '' if is_win32 else conf.env['LIBDIR'], quote=True) conf.define('GEANY_PREFIX', '' if is_win32 else conf.env['PREFIX'], quote=True) conf.define('PACKAGE', APPNAME, quote=True) conf.define('VERSION', VERSION, quote=True) conf.define('REVISION', revision or '-1', quote=True) conf.define('GETTEXT_PACKAGE', APPNAME, quote=True) # no VTE on Windows if is_win32: conf.options.no_vte = True _define_from_opt(conf, 'HAVE_PLUGINS', not conf.options.no_plugins, None) _define_from_opt(conf, 'HAVE_SOCKET', not conf.options.no_socket, None) _define_from_opt(conf, 'HAVE_VTE', not conf.options.no_vte, None) conf.write_config_header('config.h', remove=False) # some more compiler flags conf.env.append_value('CFLAGS', ['-DHAVE_CONFIG_H']) if revision is not None: conf.env.append_value('CFLAGS', ['-g', '-DGEANY_DEBUG']) # Scintilla flags conf.env.append_value('CFLAGS', ['-DGTK']) conf.env.append_value('CXXFLAGS', ['-DNDEBUG', '-DGTK', '-DSCI_LEXER', '-DG_THREADS_IMPL_NONE']) # summary Logs.pprint('BLUE', 'Summary:') conf.msg('Install Geany ' + VERSION + ' in', conf.env['PREFIX']) conf.msg('Using GTK version', gtk_version) conf.msg('Build with plugin support', conf.options.no_plugins and 'no' or 'yes') conf.msg('Use virtual terminal support', conf.options.no_vte and 'no' or 'yes') if revision is not None: conf.msg('Compiling Git revision', revision) def options(opt): opt.tool_options('compiler_cc') opt.tool_options('compiler_cxx') opt.tool_options('intltool') # Features opt.add_option('--disable-plugins', action='store_true', default=False, help='compile without plugin support [default: No]', dest='no_plugins') opt.add_option('--disable-socket', action='store_true', default=False, help='compile without support to detect a running instance [[default: No]', dest='no_socket') opt.add_option('--disable-vte', action='store_true', default=False, help='compile without support for an embedded virtual terminal [[default: No]', dest='no_vte') # Paths opt.add_option('--mandir', type='string', default='', help='man documentation', dest='mandir') opt.add_option('--docdir', type='string', default='', help='documentation root', dest='docdir') opt.add_option('--libdir', type='string', default='', help='object code libraries', dest='libdir') # Actions opt.add_option('--hackingdoc', action='store_true', default=False, help='generate HTML documentation from HACKING file', dest='hackingdoc') def build(bld): is_win32 = _target_is_win32(bld) if bld.cmd == 'clean': _remove_linguas_file() if bld.cmd in ('install', 'uninstall'): bld.add_post_fun(_post_install) def build_plugin(plugin_name, install=True): if install: instpath = '${PREFIX}/lib' if is_win32 else '${LIBDIR}/geany' else: instpath = None bld.new_task_gen( features = ['c', 'cshlib'], source = 'plugins/%s.c' % plugin_name, includes = ['.', 'src/', 'scintilla/include', 'tagmanager/src'], defines = 'G_LOG_DOMAIN="%s"' % plugin_name, target = plugin_name, uselib = ['GTK', 'GLIB', 'GMODULE'], install_path = instpath) # CTags bld.new_task_gen( features = ['c', 'cstlib'], source = ctags_sources, name = 'ctags', target = 'ctags', includes = ['.', 'tagmanager', 'tagmanager/ctags'], defines = 'G_LOG_DOMAIN="CTags"', uselib = ['GLIB'], install_path = None) # do not install this library # Tagmanager bld.new_task_gen( features = ['c', 'cstlib'], source = tagmanager_sources, name = 'tagmanager', target = 'tagmanager', includes = ['.', 'tagmanager', 'tagmanager/ctags'], defines = 'G_LOG_DOMAIN="Tagmanager"', uselib = ['GTK', 'GLIB'], install_path = None) # do not install this library # MIO bld.new_task_gen( features = ['c', 'cstlib'], source = mio_sources, name = 'mio', target = 'mio', includes = ['.', 'tagmanager/mio/'], defines = 'G_LOG_DOMAIN="MIO"', uselib = ['GTK', 'GLIB'], install_path = None) # do not install this library # Scintilla files = bld.srcnode.ant_glob('scintilla/**/*.cxx', src=True, dir=False) scintilla_sources.update(files) bld.new_task_gen( features = ['c', 'cxx', 'cxxstlib'], name = 'scintilla', target = 'scintilla', source = scintilla_sources, includes = ['.', 'scintilla/include', 'scintilla/src', 'scintilla/lexlib'], uselib = ['GTK', 'GLIB', 'GMODULE'], install_path = None) # do not install this library # Geany if bld.env['HAVE_VTE'] == 1: geany_sources.add('src/vte.c') if is_win32: geany_sources.add('src/win32.c') geany_sources.add('geany_private.rc') bld.new_task_gen( features = ['c', 'cxx', 'cprogram'], name = 'geany', target = 'geany', source = geany_sources, includes = ['.', 'scintilla/include', 'tagmanager/src'], defines = ['G_LOG_DOMAIN="Geany"', 'GEANY_PRIVATE'], uselib = ['GTK', 'GLIB', 'GMODULE', 'GIO', 'GTHREAD', 'WIN32', 'SUNOS_SOCKET'], use = ['scintilla', 'ctags', 'tagmanager', 'mio']) # geanyfunctions.h bld.new_task_gen( source = ['plugins/genapi.py', 'src/plugins.c'], name = 'geanyfunctions.h', before = ['c', 'cxx'], cwd = '%s/plugins' % bld.path.abspath(), rule = '%s genapi.py -q' % sys.executable) # Plugins if bld.env['HAVE_PLUGINS'] == 1: build_plugin('classbuilder') build_plugin('demoplugin', False) build_plugin('export') build_plugin('filebrowser') build_plugin('htmlchars') build_plugin('saveactions') build_plugin('splitwindow') # Translations if bld.env['INTLTOOL']: bld.new_task_gen( features = ['linguas', 'intltool_po'], podir = 'po', install_path = '${LOCALEDIR}', appname = 'geany') # geany.pc bld.new_task_gen( source = 'geany.pc.in', dct = {'VERSION': VERSION, 'DEPENDENCIES': 'gtk+-2.0 >= %s glib-2.0 >= %s' % \ (MINIMUM_GTK_VERSION, MINIMUM_GLIB_VERSION), 'prefix': bld.env['PREFIX'], 'exec_prefix': '${prefix}', 'libdir': '${exec_prefix}/lib', 'includedir': '${prefix}/include', 'datarootdir': '${prefix}/share', 'datadir': '${datarootdir}', 'localedir': '${datarootdir}/locale'}) if not is_win32: # geany.desktop if bld.env['INTLTOOL']: bld.new_task_gen( features = 'intltool_in', source = 'geany.desktop.in', flags = ['-d', '-q', '-u', '-c'], install_path = '${DATADIR}/applications') # geany.1 bld.new_task_gen( features = 'subst', source = 'doc/geany.1.in', target = 'geany.1', dct = {'VERSION': VERSION, 'GEANY_DATA_DIR': bld.env['DATADIR'] + '/geany'}, install_path = '${MANDIR}/man1') # geany.spec bld.new_task_gen( features = 'subst', source = 'geany.spec.in', target = 'geany.spec', install_path = None, dct = {'VERSION': VERSION}) # Doxyfile bld.new_task_gen( features = 'subst', source = 'doc/Doxyfile.in', target = 'doc/Doxyfile', install_path = None, dct = {'VERSION': VERSION}) ### # Install files ### if not is_win32: # Headers bld.install_files('${PREFIX}/include/geany', ''' src/document.h src/editor.h src/encodings.h src/filetypes.h src/geany.h src/highlighting.h src/keybindings.h src/msgwindow.h src/plugindata.h src/prefs.h src/project.h src/search.h src/stash.h src/support.h src/templates.h src/toolbar.h src/ui_utils.h src/utils.h src/build.h plugins/geanyplugin.h plugins/geanyfunctions.h''') bld.install_files('${PREFIX}/include/geany/scintilla', ''' scintilla/include/SciLexer.h scintilla/include/Scintilla.h scintilla/include/Scintilla.iface scintilla/include/ScintillaWidget.h ''') bld.install_files('${PREFIX}/include/geany/tagmanager', ''' tagmanager/src/tm_file_entry.h tagmanager/src/tm_project.h tagmanager/src/tm_source_file.h tagmanager/src/tm_symbol.h tagmanager/src/tm_tag.h tagmanager/src/tm_tagmanager.h tagmanager/src/tm_work_object.h tagmanager/src/tm_workspace.h ''') # Docs base_dir = '${PREFIX}' if is_win32 else '${DOCDIR}' ext = '.txt' if is_win32 else '' html_dir = '' if is_win32 else 'html/' html_name = 'Manual.html' if is_win32 else 'index.html' for filename in 'AUTHORS ChangeLog COPYING README NEWS THANKS TODO'.split(): basename = _uc_first(filename, bld) destination_filename = '%s%s' % (basename, ext) destination = os.path.join(base_dir, destination_filename) bld.install_as(destination, filename) start_dir = bld.path.find_dir('doc/images') bld.install_files('${DOCDIR}/%simages' % html_dir, start_dir.ant_glob('*.png'), cwd=start_dir) bld.install_as('${DOCDIR}/%s' % _uc_first('manual.txt', bld), 'doc/geany.txt') bld.install_as('${DOCDIR}/%s%s' % (html_dir, html_name), 'doc/geany.html') bld.install_as('${DOCDIR}/ScintillaLicense.txt', 'scintilla/License.txt') if is_win32: bld.install_as('${DOCDIR}/ReadMe.I18n.txt', 'README.I18N') bld.install_as('${DOCDIR}/Hacking.txt', 'HACKING') # Data data_dir = '' if is_win32 else 'geany' start_dir = bld.path.find_dir('data') bld.install_as('${DATADIR}/%s/GPL-2' % data_dir, 'COPYING') bld.install_files('${DATADIR}/%s' % data_dir, start_dir.ant_glob('filetype*'), cwd=start_dir) bld.install_files('${DATADIR}/%s' % data_dir, start_dir.ant_glob('*.tags'), cwd=start_dir) bld.install_files('${DATADIR}/%s' % data_dir, 'data/geany.glade') bld.install_files('${DATADIR}/%s' % data_dir, 'data/geany.gtkrc') bld.install_files('${DATADIR}/%s' % data_dir, 'data/snippets.conf') bld.install_files('${DATADIR}/%s' % data_dir, 'data/ui_toolbar.xml') start_dir = bld.path.find_dir('data/colorschemes') template_dest = '${DATADIR}/%s/colorschemes' % data_dir bld.install_files(template_dest, start_dir.ant_glob('*'), cwd=start_dir) start_dir = bld.path.find_dir('data/templates') template_dest = '${DATADIR}/%s/templates' % data_dir bld.install_files(template_dest, start_dir.ant_glob('**/*'), cwd=start_dir, relative_trick=True) # Icons for dest, srcs in geany_icons.items(): dest_dir = os.path.join('${PREFIX}/share/icons' if is_win32 else '${DATADIR}/icons', dest) bld.install_files(dest_dir, srcs, cwd=bld.path.find_dir('icons')) # install theme indexes on Windows if is_win32: for dest, srcs in geany_icons_indexes.items(): bld.install_files(os.path.join('${PREFIX}/share/icons', dest), srcs, cwd=bld.path.find_dir('icons')) def distclean(ctx): Scripting.distclean(ctx) _remove_linguas_file() def _remove_linguas_file(): # remove LINGUAS file as well try: os.unlink(LINGUAS_FILE) except OSError: pass @feature('linguas') def write_linguas_file(self): if os.path.exists(LINGUAS_FILE): return linguas = '' if 'LINGUAS' in self.env: files = self.env['LINGUAS'] for po_filename in files.split(' '): if os.path.exists('po/%s.po' % po_filename): linguas += '%s ' % po_filename else: files = os.listdir('%s/po' % self.path.abspath()) files.sort() for filename in files: if filename.endswith('.po'): linguas += '%s ' % filename[:-3] file_h = open(LINGUAS_FILE, 'w') file_h.write('# This file is autogenerated. Do not edit.\n%s\n' % linguas) file_h.close() def _post_install(ctx): is_win32 = _target_is_win32(ctx) if is_win32: return for d in 'hicolor', 'Tango': theme_dir = Utils.subst_vars('${DATADIR}/icons/' + d, ctx.env) icon_cache_updated = False if not ctx.options.destdir: ctx.exec_command('gtk-update-icon-cache -q -f -t %s' % theme_dir) Logs.pprint('GREEN', 'GTK icon cache updated.') icon_cache_updated = True if not icon_cache_updated: Logs.pprint('YELLOW', 'Icon cache not updated. After install, run this:') Logs.pprint('YELLOW', 'gtk-update-icon-cache -q -f -t %s' % theme_dir) def updatepo(ctx): """update the message catalogs for internationalization""" potfile = '%s.pot' % APPNAME os.chdir('%s/po' % top) try: try: old_size = os.stat(potfile).st_size except OSError: old_size = 0 ctx.exec_command('intltool-update --pot -g %s' % APPNAME) size_new = os.stat(potfile).st_size if size_new != old_size: Logs.pprint('CYAN', 'Updated POT file.') Logs.pprint('CYAN', 'Updating translations') ret = ctx.exec_command('intltool-update -r -g %s' % APPNAME) if ret != 0: Logs.pprint('RED', 'Updating translations failed') else: Logs.pprint('CYAN', 'POT file is up to date.') except OSError: Logs.pprint('RED', 'Failed to generate pot file.') def apidoc(ctx): """generate API reference documentation""" basedir = ctx.path.abspath() doxygen = _find_program(ctx, 'doxygen') doxyfile = '%s/%s/doc/Doxyfile' % (basedir, out) os.chdir('doc') Logs.pprint('CYAN', 'Generating API documentation') ret = ctx.exec_command('%s %s' % (doxygen, doxyfile)) if ret != 0: raise WafError('Generating API documentation failed') # update hacking.html cmd = _find_rst2html(ctx) ctx.exec_command('%s -stg --stylesheet=geany.css %s %s' % (cmd, '../HACKING', 'hacking.html')) os.chdir('..') def htmldoc(ctx): """generate HTML documentation""" # first try rst2html.py as it is the upstream default, fall back to rst2html cmd = _find_rst2html(ctx) os.chdir('doc') Logs.pprint('CYAN', 'Generating HTML documentation') ctx.exec_command('%s -stg --stylesheet=geany.css %s %s' % (cmd, 'geany.txt', 'geany.html')) os.chdir('..') def _find_program(ctx, cmd, **kw): def noop(*args): pass ctx = ConfigurationContext() ctx.to_log = noop ctx.msg = noop return ctx.find_program(cmd, **kw) def _find_rst2html(ctx): cmds = ['rst2html.py', 'rst2html'] for command in cmds: cmd = _find_program(ctx, command, mandatory=False) if cmd: break if not cmd: raise WafError( 'rst2html.py could not be found. Please install the Python docutils package.') return cmd def _add_define_to_env(conf, key): value = conf.get_define(key) # strip quotes value = value.replace('"', '') conf.env[key] = value def _add_to_env_and_define(conf, key, value, quote=False): conf.define(key, value, quote) conf.env[key] = value def _define_from_opt(conf, define_name, opt_value, default_value, quote=1): value = default_value if opt_value: if isinstance(opt_value, bool): opt_value = 1 value = opt_value if value is not None: _add_to_env_and_define(conf, define_name, value, quote) else: conf.undefine(define_name) def _get_git_rev(conf): if not os.path.isdir('.git'): return try: cmd = 'git rev-parse --short --revs-only HEAD' revision = conf.cmd_and_log(cmd).strip() except WafError: return None else: return revision def _load_intltool_if_available(conf): try: conf.check_tool('intltool') if 'LINGUAS' in os.environ: conf.env['LINGUAS'] = os.environ['LINGUAS'] except WafError: # on Windows, we don't hard depend on intltool, on all other platforms raise an error if not _target_is_win32(conf): raise def _target_is_win32(ctx): if 'is_win32' in ctx.env: # cached return ctx.env['is_win32'] is_win32 = None if sys.platform == 'win32': is_win32 = True if is_win32 is None: if ctx.env and 'CC' in ctx.env: env_cc = ctx.env['CC'] if not isinstance(env_cc, str): env_cc = ''.join(env_cc) is_win32 = (env_cc.find('mingw') != -1) if is_win32 is None: is_win32 = False # cache for future checks ctx.env['is_win32'] = is_win32 return is_win32 def _uc_first(string, ctx): if _target_is_win32(ctx): return string.title() return string geany-1.23.1+dfsg/COPYING0000644000175000017500000004310612146146074015114 0ustar hyperairhyperair GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 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. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 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. 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. 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: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) 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. c) 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. 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: a) 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, b) 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, c) 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. 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. 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. 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. 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. 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. 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. 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. NO WARRANTY 11. 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. 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. Copyright (C) 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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. , 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. geany-1.23.1+dfsg/README0000644000175000017500000000711212146146074014736 0ustar hyperairhyperairGeany - A fast and lightweight IDE ---------------------------------- About ----- 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 it is using only the GTK2 toolkit and therefore you need only the GTK2 runtime libraries to run Geany. Features -------- 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 - folding - many supported filetypes like C, Java, PHP, HTML, Python, Perl, Pascal - symbol lists - embedded terminal emulation Requirements ------------ For compiling Geany yourself, you will need the GTK (>= 2.16.0) libraries and header files. You will also need its dependency libraries and header files, such as Pango, Glib and ATK. 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 needed for the required Scintilla library included. The GNU versions of these tools are recommended. Installation ------------ Installing Geany is done by the following three commands: $ ./configure $ make (as root) % make install For more configuration details run $ ./configure --help If there are any errors during compilation, check your build environment and try to find the error, otherwise contact the mailing list or one of the authors. See the manual for details (geany.txt/geany.html). Usage ----- To run Geany just type $ geany on a console or use the applications menu from your desktop environment. There a few command line options. See the manual page of Geany or run $ geany --help for details. Or look into the documention in the doc/ directory. The most important option probably is -c or --config, where you can specify an alternate configuration directory. Windows ------- Geany runs also under Windows. To download the binary with all necessary files, visit Geany's homepage. But you should know, that the Windows version is not yet well tested and there are some features missing: - build support (implemented but might be still buggy) - embedded terminal emulation (VTE) - Windows 9x users: in order to run Geany on Windows 95, 98 or ME you need to install the file SHFolder.dll either in the Geany installation directory or in your Windows directory. For more information please visit http://support.microsoft.com/kb/241733. 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. The included Scintilla library (found in the subdirectory scintilla/) has its own license, which can be found in the file scintilla/License.txt included with the source code of this program. Ideas, questions, patches and bug reports ----------------------------------------- See http://www.geany.org/ If you add something, or fix a bug, please send a patch (in 'diff -u' format) to the mailing list or one of the authors. Also see the HACKING file. -- 2005-2012 by Enrico Tröger, Nick Treleaven, Colomban Wendling, Matthew Brush and Frank Lanitz enrico(dot)troeger(at)uvena(dot)de nick(dot)treleaven(at)btinternet(dot)com lists(dot)ban(at)herbesfolles(dot)org mbrush(at)codebrainz(dot)ca frank(at)frank(dot)uvena(dot)de geany-1.23.1+dfsg/README.I18N0000644000175000017500000000522112146146074015413 0ustar hyperairhyperairQuick Guide for new translations -------------------------------- If you would like to translate Geany into another language, have a look at the language statistics page at [1] first to see if your desired language already exists. If it already exists, please read the "Notes for updating translations" section. Otherwise, get the SVN version of Geany, change to the po directory and start the new translation with: $ msginit -l ll_CC -o ll.po -i geany.pot Fill in ll with the language code and CC with the country code. For example, to translate Geany into Italian you would type: $ msginit -l it_IT -o it.po -i geany.pot This will create a file it.po. This file can be opened with a text editor (e.g. Geany ;-)) or a graphical program like PoEdit [2]. There are also several other GUI programs for working on translations. You don't need to modify the file po/LINGUAS, it is regenerated automatically on the next build. When you have finished editing the file, check the file with: $ msgfmt -c --check-accelerators=_ it.po Please take care of menu accelerators(strings containing a "_"). The "_" character should also be in your translation. Additionally, it would be nice if these accelerators are not twice for two strings inside a dialog or sub menu. You can also use intl_stats.sh, e.g. by running the following command in the top source directory of Geany: $ po/intl_stats.sh -a it This will print some information about the Italian translation and checks for menu accelerators. When you have finished your work - which doesn't mean you finished the translation, you will not have to work alone - send the file to the translation mailing list [3] or directly to Frank Lanitz [4] and he will add the translation to Geany then. It is a good idea to let any translator and Frank know before you start or while translating, because they can give you hints on translating and Frank can ensure that a translation is not already in progress. Notes for updating translations ------------------------------- If you want to update an existing translation, please contact the translation mailing list [3] and/or Frank Lanitz [4] directly. He is supervising all translation issues and will contact the maintainer of the translation you want to update to avoid any conflicts. Some translation statistics can be found at: http://i18n.geany.org/ I18n mailing list ----------------- There is also a mailing list dedicated to translation issues. Please visit http://www.geany.org/Support/MailingList#geany-i18 for more information. [1] http://i18n.geany.org/ [2] http://www.poedit.net/ [3] http://www.geany.org/Support/MailingList#geany-i18 [4] Frank Lanitz geany-1.23.1+dfsg/ChangeLog.pre-1-220000644000175000017500000075134312146146074017010 0ustar hyperairhyperair2011-10-07 Nick Treleaven * src/keybindings.c, src/sidebar.c, src/dialogs.c, src/callbacks.c, src/notebook.c, src/document.c, src/document.h, src/editor.c: Add document_show_tab(). 2011-10-06 Nick Treleaven * doc/Makefile.am, doc/makefile.win32: Add doc/makefile.win32 for docs generation. * scintilla/Makefile.am, src/Makefile.am, tagmanager/mio/Makefile.am, tagmanager/Makefile.am, Makefile.am: Fix missing tagmanager/mio/makefile.win32 in EXTRA_DIST. Include makefile.win32 in EXTRA_DIST recursively, not at top-level. 2011-10-06 Colomban Wendling * autogen.sh, configure.ac: Modernize configure.ac a bit. * configure.ac, m4/geany-revision.m4, m4/geany-binreloc.m4, m4/geany-gnu-regex.m4, m4/geany-plugins.m4, m4/geany-i18n.m4, m4/geany-mingw.m4, m4/geany-socket.m4, m4/geany-vte.m4, m4/geany-utils.m4, m4/geany-status.m4, m4/geany-the-force.m4: Extract some configure logic to separate files for better readability. 2011-10-05 Nick Treleaven * tagmanager/lregex.c, tagmanager/php.c: Fix CTags bug 2970274 - when using addCallbackRegex the callback receives less than the number of matches. The number is still not correct (due to POSIX regex compatibility) but at least includes all non-empty matches now. http://sourceforge.net/tracker/index.php?func=detail&aid=2970274 &group_id=6556&atid=106556 2011-10-04 Nick Treleaven * tagmanager/js.c: Update from CTags SVN jscript.c. 2011-10-03 Colomban Wendling * TODO, configure.ac, doc/geany.txt, geany.nsi, geany_private.rc, src/geany.h, win32-config.h, wscript: Post-release version bump. * src/callbacks.c: Fix "toggle case" when there is no selection. 2011-10-03 Nick Treleaven * Merge branches/unstable: - tagmanager/php.c: Fix parsing keyword-qualified functions strictly, e.g. don't parse 'staticfunction' or 'fatfunction'. - src/utils.c, src/utils.h, src/editor.c: Use GRegex for snippet indentation replacement - fixes wrong behaviour with Mac line endings. - tagmanager/lregex.c, TODO: Use GRegex for CTags instead of POSIX regex - GRegex is more powerful. This also fixes a (HTML) performance issue on Windows. Geany will now print a debug warning when using the "b" CTags regex flag option for non-extended syntax. This is not currently used by Geany's parsers. Note: GNU regex can't be removed yet as it's still used elsewhere by Geany. - src/build.c, doc/pluginsignals.c: When saving on build, prompt for a filename if necessary. Emit the "build-start" signal only if saving succeeds. - src/build.c: Use #ifdef SYNC_SPAWN instead of G_OS_WIN32 for easier testing with glib's asynchronous spawning (which doesn't work on Windows). - src/win32.c, src/win32.h, src/dialogs.c: Use GTK unsaved file dialog on Windows too because the button names should be specific. * src/build.c, src/keybindings.c, src/keybindings.h, src/prefs.c: Support visual reordering of keybinding groups without breaking the plugin ABI. Reorder Project group to follow main menu order. Move Focus, Notebook tab groups last as they don't have corresponding menu items. Use keybindings_get_core_group() for fixed group IDs instead of indexing keybinding_groups. Make keybindings_lookup_item() only work with a GEANY_KEY_GROUP_ ID, not an index into keybinding_groups. 2011-10-02 Colomban Wendling * doc/geany.txt, doc/geany.html: Add myself as an author. * New release: Geany 0.21 "Gromia". 2011-10-01 Enrico Tröger * doc/images/*.png: Update documentation images. * doc/geany.txt, doc/geany.html: Update documentation for new images. 2011-09-28 Colomban Wendling * src/utils.c: Fix utils_string_replace_all() to accept a NULL replacement again. 2011-09-26 Nick Treleaven * src/editor.c: Fix not converting \n to document line endings in snippets. * src/editor.c: Fix not indenting snippet contents for documents with non-\n line endings. 2011-09-22 Nick Treleaven * src/stash.c, src/keyfile.c, src/keyfile.h, src/ui_utils.c: Add configuration_add_various_pref_group(). * src/win32.c: Fix \0 char in format string - save as dialog filter bug. 2011-09-20 Nick Treleaven * src/keyfile.c: Rename use_safe_file_saving various pref to use_atomic_file_saving as it's not 'safe'. Use old pref if new one is missing for compatibility with Geany <= 0.20. * src/prefs.c, src/stash.h, src/stash.c: Fix making various prefs tree sync with data values when showing the prefs dialog (patch by Dimitar Zhekov, thanks). 2011-09-17 Frank Lanitz * po/fa.po, THANKS, src/about.c: Adding Persian translation. Thanks to Moein Owhadi Kareshk * THANKS: Adding Giuliano Manzitti to THANKS-file. 2011-09-16 Colomban Wendling * src/ui_utils.c: Fix document sensitivity of a few menu items. 2011-09-16 Nick Treleaven * src/interface.c, geany.glade: Change various prefs label to /warn/ the user to read the manual. 2011-09-15 Colomban Wendling * src/utils.c: Ask the user to configure a valid browser command if spawning it fails rather than falling back to some arbitrary hardcoded defaults. 2011-09-14 Nick Treleaven * src/win32.c: Fix uninitialized font size & other fields. Remove unhooked font dialog apply button. 2011-09-13 Colomban Wendling * data/filetype_extensions.conf: Add Markdown extensions from Shared MIME-Info database (closes #3405321). * src/filetypes.c: Add missing MIME type to a few filetypes. * doc/geany.txt, doc/geany.html: Fix a few typos. 2011-09-12 Colomban Wendling * src/symbols.c: Fix updating symbol list for overloaded C++ symbols (closes #3406644). 2011-09-02 Colomban Wendling * src/ui_utils.c: Fix check for enabling MIME type based icons. * src/encodings.c, src/filetypes.c: Plug a few memory leaks. 2011-08-25 Colomban Wendling * src/utils.h: Fix foreach_ptr_array() not to crash on arrays with 0 elements. 2011-08-25 Colomban Wendling * src/document.c, src/filetypes.c, src/filetypes.h, doc/geany.txt, doc/geany.html, data/filetypes.*: Add support for filetype-specific indentation settings (closes #3339420 and #3390435). * src/callbacks.c, src/editor.c, src/editor.h: Add editor_set_indent_width() to only set indentation width. * src/callbacks.c, src/callbacks.h, src/document.c, src/document.h, src/interface.c, geany.glade: Add menu items to detect indentation settings from document's content. 2011-08-24 Colomban Wendling * src/editor.c: Make completion and word completion support non-ASCII characters (closes #3313351). 2011-08-21 Colomban Wendling * src/callbacks.c, src/editor.c, src/editor.h, src/keybindings.c: Fix search for the current word if it isn't composed of only GEANY_WORDCHARS (closes #3386129). 2011-08-20 Colomban Wendling * tagmanager/haskell.c: Fix tags for one-letter Haskell symbols (closes #3289160). 2011-08-19 Frank Lanitz * doc/plugins.dox: Update of wording to fix some grammatical issues etc. on plugin howto. Patch provided by Matthew Brush. Thanks. * data/filetypes.Cython.conf: Extend list of primary keywords. Patch by Alexander Eberspächer. Thanks. 2011-08-19 Colomban Wendling * data/filetype_extensions.conf, data/filetypes.Cython.conf, data/filetypes.python: Add Cython filetype (patch by Matthew Brush, thanks). * src/symbols.c, tagmanager/include/tm_workspace.h, tagmanager/tm_workspace.c: Create temporary files used for generating global tags files in the system directory for temp files. * tagmanager/diff.c: Don't make tags for /dev/null in diff files but for the new file instead (Based on a patch by Yang Hong, thanks). 2011-08-15 Frank Lanitz * doc/plugins.dox: Update API version used inside plugin howto to a more recent version (API v211). 2011-08-13 Colomban Wendling * src/msgwindow.c, src/msgwindow.h, src/ui_utils.c, src/ui_utils.h: Focus the editor upon double click on the message and compiler windows (patch by Dimitar Zhekov, thanks). 2011-08-03 Colomban Wendling * src/geany.h, plugins/classbuilder.c, plugins/export.c, plugins/filebrowser.c, plugins/htmlchars.c, plugins/saveactions.c, plugins/splitwindow.c: Only include config.h when building Geany (closes #3384026). 2011-07-31 Frank Lanitz * doc/plugins.dox: Adding some content about PLUGIN_SET_TRANSLATABLE_INFO() into plugin HowTo as well as a hint to make usage of main_locale_init(). 2011-07-28 Colomban Wendling * src/build.c, src/build.h, src/editor.c, src/interface.c, src/keyfile.c, src/prefs.c, src/stash.c, src/stash.h, src/ui_utils.c, geany.glade, doc/geany.txt, doc/geany.html: Allow to edit formerly hidden preferences in the prefs dialog (closes #3313315, patch by Dimitar Zhekov and myself, thanks!). * src/document.c: Improve indentation width detection to better deal with Java and Vala files. 2011-06-26 Colomban Wendling * src/highlighting.c: Recognize C# and Vala raw and verbatim strings as string styles. * src/editor.c: Fix indentation brace matching (closes #3309606). 2011-06-26 Enrico Tröger * src/callbacks.c, doc/geany.txt, doc/geany.html, README, HACKING, geany.pc.in: More GTK 2.8 => GTK 2.12 transition. 2011-06-20 Colomban Wendling * src/document.c, src/document.h, src/keyfile.c, doc/geany.txt, doc/geany.html: Add an hidden pref to choose between GIO and plain C unsafe file saving. * configure.ac, src/document.c, win32-config.h: Completely drop HAVE_GIO checks. 2011-06-18 Colomban Wendling * src/document.c, src/document.h, src/editor.c: Remove support of size being -1 in document_open_file_list(). * src/utils.c src/utils.h: Remove support of size being -1 in utils_get_line_endings(). * src/stash.c, src/stash.h: Make StashWidgetID map to gconstpointer, allowing use of const strings as the widget key. 2011-06-16 Colomban Wendling * src/document.c, src/main.c, src/ui_utils.c, src/utils.c: Remove most of the checks for GIO. * src/win32.c: Remove last GLib >= 2.16 check. 2011-06-15 Enrico Tröger * tagmanager/python.c: Fix two bugs with triple quoted strings within comments and missing indentation within triple quoted strings (#3316966, synced from CTags SVN, patch by Elias Pschernig, thanks). 2011-06-14 Enrico Tröger * data/filetypes.python: Add Cython keywords. 2011-06-13 Colomban Wendling * configure.ac, src/Makefile.am, src/makefile.win32, wscript: Bump dependencies to GTK >= 2.12, GLib >= 2.16 and GIO. * plugins/export.c, plugins/filebrowser.c, plugins/splitwindow.c, src/build.c, src/dialogs.c, src/document.c, src/highlighting.c, src/printing.c, src/project.c, src/search.c, src/ui_utils.c, src/vte.c: Deprecate ui_widget_set_tooltip_text() in favor of gtk_widget_set_tooltip_text(). * configure.ac, doc/geany.html, doc/geany.txt, src/callbacks.c, src/keyfile.c, src/main.c, src/prefs.c, src/printing.c, src/printing.h: Enable GTK printing support unconditionally. * doc/geany.html, doc/geany.txt: Stop talking about pre-GTK 2.12 tricks. * geany.glade, src/interface.c: Fix Printing preferences page alignment. * src/notebook.c: Remove pre-GTK 2.10 tab DnD support. * src/pluginutils.c, tagmanager/tm_file_entry.c, tagmanager/tm_symbol.c, tagmanager/tm_tag.c: Unconditionally use GSlice allocator. 2011-06-11 Colomban Wendling * src/dialogs.c, src/main.c, src/ui_utils.h: Always destroy open and save dialog after use. This also helps working around a long-living GTK+ bug, hopefully closing #3311258, #3304273, #3201050, #3163742, #3153120 and #2985896. 2011-06-03 Colomban Wendling * src/callbacks.c, src/document.c, src/document.h, src/editor.c, src/search.c, src/search.h: Show the actual text the user searched for in messages rather than the internal one (patch by Eugene Arshinov, thanks). * src/search.c: Also use the actual user search in the combo box history. 2011-06-02 Enrico Tröger * src/document.c, src/document.h, src/ui_utils.c, src/ui_utils.h: Add ui_focus_current_document() and document_grab_focus(). * src/project.c: Focus the editor widget after loading project session files. * scripts/create_py_tags.py: Ignore tags ending with an underscore. Dynamically determine the path of Python's standard library instead of hardcoding it. Parse all modules of the Python standard library instead of a hardcoded list of filenames. 2011-05-30 Enrico Tröger * data/filetypes.java: Move keyword 'enum' to primary keywords (closes #3305737). 2011-05-29 Enrico Tröger * tagmanager/python.c: When checking for literal strings to ignore, consider also unicode, binary and raw strings. * src/plugins.c: Define and use get_plugin_path() always and move platform dependent code into the function definition. Do not add active plugins to the list of plugins when they are already in the list (closes #3308191). Check whether the custom plugin path is one of the user or system plugin paths and if so, ignore it. 2011-05-27 Colomban Wendling * src/prefs.c: Fix preferences help button when activated with the keyboard. 2011-05-22 Enrico Tröger * src/about.c, src/build.c, tagmanager/tm_workspace.c: Remove unused variables (patch by Eugene Arshinov, thanks). * src/stash.c: Remove unused variables (suggested by Eugene Arshinov). * src/ui_utils.c, doc/geany.txt, doc/geany.html: Do not allow 'Save All' even if 'allow_always_save' is set (patch by Dimitar Zhekov, thanks). * data/filetypes.java: Add 'enum' to secondary keywords (closes #3305737, patch by Matthew Brush, thanks). 2011-05-12 Colomban Wendling * src/encodings.c: Update the HTML content-type encoding detection regexp to accept some more valid inputs (closes #3300703). 2011-05-11 Colomban Wendling * src/plugins.c: Improve the plugin manager dialog a little. * src/geanywraplabel.c, src/geanywraplabel.h, src/keybindings.c, src/plugins.c: Cleanup GeanyWrapLabel a bit. 2011-05-09 Colomban Wendling * plugins/splitwindow.c: Remove widget reparenting in Split Window plugin. This fixes plugin issues on Windows (patch by Matthew Brush, thanks - closes #2725342). * plugins/Makefile.am, plugins/makefile.win32, wscript: Enable SplitWindow build on Windows again (re-apply Enrico's patch). 2011-05-08 Enrico Tröger * HACKING: Add note about patching Glade 2.12 to compile it with newer GTK versions. 2011-05-06 Nick Treleaven * src/callbacks.c: Fix 'Toolbar Preferences' popup menu item (oops). 2011-05-03 Colomban Wendling * doc/geany.txt, doc/geany.html: Update the documentation for project patterns and recent FIF dialog changes. 2011-05-03 Nick Treleaven * src/highlighting.c, doc/geany.txt, doc/geany.html: Allow translations for color scheme [theme_info] keys. * src/build.c, src/filetypes.c, src/filetypes.h, src/main.c: Save filetype build commands straight after editing them instead of at shutdown (patch by Dimitar Zhekov, thanks). 2011-05-02 Colomban Wendling * src/plugindata.h: Bump plugin API version so a plugin can know the project file patterns are visible by the user. 2011-05-01 Colomban Wendling * src/search.c: Fix pattern filtering when not searching in subdirectories. 2011-04-30 Colomban Wendling * src/project.c: Fix project patterns and make them visible (based on a patch by Jiří Techet, thanks). * src/search.c: Use project patterns in the FIF dialog (based on a patch by Jiří Techet, thanks). * src/msgwindow.c: Open the file in the msgwindow even if no line number is specified. 2011-04-30 Nick Treleaven * src/filetypes.c, data/filetype_extensions.conf: Revert 'Compiled' filetype group back to 'Programming' (couldn't agree on whether e.g. Java is a compiled language). * doc/geany.txt, doc/geany.html: Add section 'Filetype group membership'. * src/highlighting.c, doc/geany.txt, doc/geany.html, data/colorschemes/alt.conf: Read color scheme name and description for menu item label and tooltip (based on patch by Matthew Brush, thanks). 2011-04-29 Nick Treleaven * src/filetypes.c, src/filetypes.h: Remove now unnecessary Custom filetype group. * src/filetypes.c: Move text markup languages into Markup filetype group. Move some programming language filetypes out of the Miscellaneous group. Fix filetype title for some languages. Don't use 'Languages' for Miscellaneous group label. These changes mostly proposed by Matthew Brush (thanks). * src/filetypes.c: Make custom filetype titles use 'source file' only if their group is Compiled or Script. Use 'source file' for reStructuredText title. 2011-04-26 Nick Treleaven * src/filetypes.c, src/filetypes.h, src/main.c, data/filetype_extensions.conf: Make filetype group membership configurable using [Groups] in filetype_extensions.conf. Read filetype_extensions.conf when calling filetypes_init_types(), don't require doclist initialization. * src/filetypes.c: Change Programming Languages filetype group label -> Compiled Languages. Use 'source file' title for custom filetypes. * src/prefs.c, doc/geany.txt, doc/geany.html: Remove Preferences label warning about restarting after editing template data - this is no longer necessary. 2011-04-26 Colomban Wendling * src/callbacks.c, src/document.c, src/document.h, src/documentprivate.h, src/editor.c, src/sidebar.c: Make sure to update the tag list only for the current document, avoiding idle updates to show the tag list for the wrong document. * src/callbacks.c, src/document.c, src/documentprivate.h, src/sidebar.c: Avoid changing the tag tree if it's not the one of the current document, fixing showing the wrong tag list when reloading configuration files. 2011-04-25 Nick Treleaven * src/utils.c: Fix warning in utils_find_open_xml_tag() with malformed tags like <~foo> (oops). 2011-04-24 Colomban Wendling * src/editor.c: Don't update the tag list when the user is typing (patch by Yura Siamashka, thanks). * src/filetypes.c: When copying filetype groups, add keys from both system and user ones, making sure user's ones have precedence over system ones. 2011-04-23 Nick Treleaven * src/utils.c, src/utils.h, src/plugindata.h, src/plugins.c, plugins/geanyfunctions.h: Add utils_find_open_xml_tag_pos() API function (patch by Eugene Arshinov, thanks). * src/templates.c: Replace dates on template insertion, not when loading templates. 2011-04-19 Nick Treleaven * src/editor.c: Fix multiple snippet cursor positions for Tabs + Spaces mode. Simplify editor_insert_snippet() code now we use cursor marker strings. * src/utils.c, src/utils.h, src/editor.c: Add utils_string_find() to search in a fixed range. Change utils_string_replace() to just replace a fixed number of characters. 2011-04-17 Enrico Tröger * src/plugindata.h, src/document.c, src/plugins.c, src/document.h, plugins/geanyfunctions.h: Add document_compare_by_tab_order() and document_compare_by_tab_order_reverse() to the plugin API. * src/ui_utils.c: Use document_compare_by_tab_order() as default compare function to sort the document list in the document notebook tab menu, this fixes the currently broken default ordering. 2011-04-15 Nick Treleaven * src/utils.c, src/utils.h, src/editor.c: Add function utils_string_replace() to replace in a fixed range. Remove utils_string_replace_helper() and update cursor marker code. 2011-04-14 Nick Treleaven * src/editor.c: Fix snippets bug: {ob}pc{cb} replaced by '%' instead of {pc}. Refactor snippets_make_replacements() using geany_cursor_marker. 2011-04-13 Colomban Wendling * src/editor.c: Avoid triggering autocompletion on PHP open tags (closes #3199442). 2011-04-13 Nick Treleaven * src/document.c: Update dox for document_compare_by_display_name() with warning about parameter addresses. * src/document.h: Use brackets for DOC_FILENAME() macro 'doc' argument. * src/templates.c, src/utils.c, src/toolbar.c, src/utils.h, src/keyfile.c, src/filetypes.c, src/editor.c, src/symbols.c: Make utils_build_path() return a copy for safety. * src/keybindings.c: Fix Ctrl-Shift-[CV] keybindings to work outside the VTE. 2011-04-12 Enrico Tröger * src/document.c: Fix wrong casting of array pointers, thanks Nick. * src/plugindata.h, src/callbacks.c, src/document.c, src/plugins.c, src/document.h: Rename document_sort_by_display_name() into document_compare_by_display_name(), thanks again Nick. 2011-04-11 Colomban Wendling * src/document.c, src/document.h, src/editor.c, src/keybindings.c: Revert r5642 "Don't update parent WorkObjects when updating one in real-time" because it broke calltips. 2011-04-11 Nick Treleaven * plugins/filebrowser.c: Update path when saving a new document for the first time if the follow path option is enabled. * src/about.c, src/keyfile.c, THANKS: Store VTE path with the session (based on patch by Nicolas Sierro, thanks). There's still a bug with loading a project at startup; closing the project doesn't restore old VTE path. * src/filetypes.c, src/filetypes.h: Refactor with filetypes_get_filename(). Make filetypes_get_conf_extension() static. * src/utils.c, src/utils.h, src/filetypes.c: Make utils_make_filename() return a copy for safety. 2011-04-10 Enrico Tröger * src/editor.c: Ignore scrolling events in on_update_ui(). * src/geanyobject.c, src/plugindata.h, src/geanyobject.h, src/document.c, doc/pluginsignals.c: Add and use signal "document-reload" to the plugin API. * src/symbols.c, tagmanager/sql.c: Fix mapping of SQL tags for Geany's symbol list (closes #3216474). * src/ui_utils.h, src/plugindata.h, src/document.c, src/plugins.c, src/document.h, src/ui_utils.c, plugins/geanyfunctions.h: Add ui_menu_add_document_items_sorted() and document_sort_by_display_name() to the plugin API. 2011-04-08 Colomban Wendling * scintilla/lexers/LexCPP.cxx: Make highlighting of triple-quoted verbatim an option (Backport from Scintilla HG 3602:5536ed81a85b). * src/highlighting.c: Add highlight for triple-quoted verbatims. * data/filetypes.c, data/filetypes.vala, data/filetypes.Genie.conf, data/filetypes.Scala.conf: Highlight triple-quoted verbatims in Vala, Genie and Scala filtypes. * data/filetypes.Genie.conf: Copy C styling rather than redefining the styles. * src/editor.c: Don't set font twice for line numbers and braces. 2011-04-05 Nick Treleaven * src/templates.c: Remove TEMPLATES_GET_FILENAME() macro. * src/search.c: Don't auto-enable case-sensitive option when enabling regex in Find/Replace dialogs. 2011-04-04 Enrico Tröger * scintilla/gtk/ScintillaGTK.cxx: Fix X PRIMARY selection issue when Scintilla widget is unrealized/re-realized (Backport from Scintilla HG, original patch by Matthew Brush). Reset cursors when Scintilla widget is realized (Backport from Scintilla HG, original patch by Matthew Brush). 2011-04-04 Colomban Wendling * scintilla/gtk/PlatGTK.cxx: Fix font rendering in Scintilla when using Cairo. 2011-04-04 Nick Treleaven * src/interface.c, geany.glade: Make Project->Properties the last menu item so it's faster to use. 2011-04-03 Enrico Tröger * scintilla/*: Update Scintilla to version 2.25. * version.txt, Makefile.am: Add Scintilla's version.txt file. * scintilla/makefile.win32, tagmanager/makefile.win32, makefile.win32: Replace escape character '\' by slash '/' in paths in the Windows Makefiles (patch by Matthew Brush, thanks). * src/tools.c: Reflect the existence of the entered command in `Set Custom Commands` dialog as well using the yes/no icon. 2011-04-03 Colomban Wendling * src/main.c, src/prefs.c, src/tools.c: Fix loading and updating menu accelerators for custom commands. * src/prefs.c: Don't allow editing keybinding column of group rows. * src/tools.c: Fix ID of newly added commands in the `Set Custom Commands` dialog. 2011-04-02 Colomban Wendling * src/tools.c, doc/geany.txt, doc/geany.html: Improve the `Set Custom Commands` dialog. 2011-04-01 Nick Treleaven * src/interface.c, src/interface.h, geany.glade: Rename Preferences dialog Interface subtab More -> Notebook tabs. * src/toolbar.c, src/dialogs.c: Use mimetype icon in File Properties dialog. * doc/geany.txt, doc/geany.html: Fix title capitalization. * src/interface.c, doc/geany.txt, doc/geany.html, geany.glade: Move Preferences dialog Toolbar tab under Interface tab. * src/build.c: Tweak some build dialog labels: Clear -> Reset. Fix capitalization. Use filetype name instead of title. * src/templates.c, src/templates.h, doc/geany.txt, doc/geany.html: Remove old filetype templates support - users can use custom file templates instead. 2011-04-01 Colomban Wendling * src/encodings.c: Update regex used to find encodings for it to allow the encoding to be quoted, adding support for XML (closes #3183506). * src/encodings.c: Implement charset name normalization in order to better deal with badly-written encoding names (i.e. names found by regex search). This also makes encodings_get_idx_from_charset() and encodings_get_from_charset() more permissive regarding the passed-in encoding name. * src/encodings.c: Always try to honor the charset found in the document, even if the document can be loaded as UTF-8. This make files encoded with e.g. ISO-8859-1 that have the proper information in them but only use the UTF-8 compatible part of ISO-8859-1 to be properly loaded as ISO-8859-1, rather than UTF-8. Also fix check for locale encoding. * src/tools.c, doc/geany.txt, doc/geany.html: Make `Send selection to` send the current line if there is no selection. 2011-03-31 Nick Treleaven * plugins/filebrowser.c: Make 'Hide object files' preference configurable with file extensions. * plugins/filebrowser.c: Fix applying default setting for hide_object_files (oops). Fix warning when enabling plugin from the Plugin Manager. * plugins/filebrowser.c: Fix optimization for filter check when pattern is '*'. Use foreach_strv() instead of foreach_c_array(). * plugins/filebrowser.c: Don't hide directories matching hidden file extensions e.g. foo.o. Refactor with check_object(). 2011-03-30 Nick Treleaven * src/editor.c: Use STYLE_MAX instead of 127 for editor_set_font(). This fixes a crash in the Split Window plugin when changing filetype (patch by Matthew Brush, thanks; fixes #3255968). * plugins/splitwindow.c: Update styles when the filetype changes (based on patch by Matthew Brush, thanks). * plugins/saveactions.c: Fix Instant Save preferences combo box filetype order. * plugins/filebrowser.c: Remove macro CHECK_READ_SETTING(). 2011-03-30 Colomban Wendling * src/plugindata.h, src/pluginprivate.h, src/plugins.c, src/pluginutils.c, src/pluginutils.h plugins/geanyfunctions.h: Add plugin_idle_add(), plugin_timeout_add() and plugin_timeout_add_seconds() to the plugin API. These are convenience wrappers to ensure the added timeouts are properly removed when unloading the plugin, preventing possible crashes. * plugins/splitwindow.c: Use new plugin_idle_add(), preventing an unlikely crash. * doc/pluginsymbols.c, src/sciwrappers.c: Fix a few Doxygen warnings. * plugins/saveactions.c: Properly use 0 as the invalid timeout source ID. 2011-03-29 Nick Treleaven * doc/geany.txt, doc/geany.html: Add #reading-styles-from-another-filetype subsection, based on patch by Matthew Brush (thanks). * doc/geany.txt, doc/geany.html: Add #filenames subsection for filetype definition files explaining the filename extensions and special cases. * src/plugindata.h, src/filetypes.c, src/filetypes.h, src/plugins.c, src/main.c, plugins/geanyfunctions.h: Add filetypes_get_sorted_by_name() to API. Fix --ft-names sorting to print in name order, not title order. 2011-03-28 Colomban Wendling * src/document.c, src/document.h, src/editor.c, src/keybindings.c: Don't update parent WorkObjects when updating one in real-time. This should fix some performance issues if a WorkObject has many parents. 2011-03-27 Enrico Tröger * src/makefile.win32, src/main.c, src/Makefile.am, configure.ac, wscript: Initialize GLib's Gthread system early at startup in case any plugins need it. * src/keybindings.c, src/keybindings.h, src/plugindata.h, doc/geany.txt, doc/geany.html: Add new keybinding 'Remove Markers and Error Indicators'. 2011-03-26 Colomban Wendling * src/sidebar.c: Fix the sidebar popup menu to properly use the currently selected item rather than the previous one. Also change the hack used for the selection to be updated in the input handlers to call the GtkTreeView's handler manually rather than doing the actual job in IDLE callbacks for the TreeView's handler to have run. * doc/geany.html, doc/geany.txt, geany.glade, src/document.c, src/editor.h, src/interface.c, src/interface.h, src/keyfile.c, src/project.c: Add possibility to detect the indentation width from the file content (not supported if indentation type is tabs only). * plugins/splitwindow.c: Enable code folding in splitview window (based on a patch by Matthew Brush, thanks! - closes #3097780). Fix confusing terminology in Split Window plugin menu labels (patch by Matthew Brush - closes #2796316). Don't unsplit when closing the displayed document but rather pick the new current one if any. 2011-03-25 Colomban Wendling * data/filetypes.vala: Update Vala keywords (based on a patch from Matthew Brush, thanks). * data/document.c: Small code cleanups. 2011-03-24 Nick Treleaven * plugins/filebrowser.c: Add history to filter entry. * src/keybindings.c, src/vte.c: Add fixed shortcuts for VTE copy (Ctrl-Shift-C) and paste (Ctrl-Shift-V). * src/keybindings.c: Make VTE copy/paste shortcuts work if 'Override Geany keybindings' is not set. 2011-03-24 Colomban Wendling * doc/geany.txt, doc/geany.html: Update the documentation to talk about real-time tag parsing. * doc/geany.txt, doc/geany.html, src/callbacks.c, src/callbacks.h, src/document.c, src/document.h, src/geanyentryaction.c, src/search.c, src/toolbar.c, src/ui_utils.c, src/ui_utils.h: Make Shift-Enter in search dialog and toolbar search entries search backwards. * plugins/filebrowser.c, plugins/saveactions.c, src/callbacks.c, src/dialogs.c, src/document.c, src/document.h, src/editor.c, src/encodings.c, src/filetypes.c, src/highlighting.c, src/log.c, src/main.c, src/plugins.c, src/printing.c, src/project.c, src/search.c, src/socket.c, src/toolbar.c, src/utils.c, src/utils.h: Improve usage of G_LIKELY() and G_UNLIKELY() macros. 2011-03-22 Nick Treleaven * src/main.c: Make --ft-names list filetypes alphabetically. * plugins/filebrowser.c: Allow multiple file filters to be separated by a space for consistency with Find in Files file patterns. ';' is still allowed also. 2011-03-20 Colomban Wendling * data/filetypes.*, doc/geany.txt, doc/geany.html, src/callbacks.c, src/filetypes.c, src/filetypes.h, src/templates.c: Add new filetype setting "comment_single" to provide separated single-line and multiline comment support. Single-line are used in priority to comment code, and multiline to make template comments. * src/editor.c, src/search.c, tagmanager/diff.c: Don't use strlen(..) > 0 or == 0, simply check the first character against 0. * src/document.c: Update forced indent settings when setting the filetype. This makes documents created or set to a filetype with forced indent setting (Makefile, F77) to have the correct setting right away. 2011-03-19 Colomban Wendling * src/callbacks.c: Create a new undo action when inserting templates, making sure the user can undo the template insertion without also undoing a previous action. 2011-03-18 Colomban Wendling * src/document.c, src/encodings.c, src/encodings.h: Move document encoding conversion with BOM support to encodings.[ch] as encodings_convert_to_utf8_auto(). * src/templates.c: Properly convert template files to UTF-8 on loading, fixing encoding issues if templates files are not encoded in UTF-8. 2011-03-18 Enrico Tröger * data/templates/files/main.vala: Add file template for Vala (patch by Mark Trompell, thanks). 2011-03-17 Nick Treleaven * src/utils.c, src/utils.h, src/filetypes.c: Support copying filetype definition file group keys from a system keyfile with e.g. [styling=C]. Add function utils_make_filename() for building filenames easily. * THANKS, plugins/classbuilder.c: Improve Class Builder plugin dialog UI using a table (patch by Matthew Brush, thanks). * plugins/classbuilder.c: Fix GLib warning when creating classes and no documents are open (patch by Matthew Brush, thanks). * plugins/classbuilder.c: Undo patch change to cc_option_label_new() to append a ':' colon to label text because this unnecessarily causes string translations to be updated. * src/interface.c, geany.glade: Fix wrong label capitalization for Toolbar Preferences dialog tab and 2 other labels. * data/filetypes.Scala.conf, data/filetype_extensions.conf: Add Scala custom filetype, based on file by werg (thanks). (This uses the newly added [styling=C] syntax). * src/filetypes.c: Make special case for filetypes.matlab instead of truncating all filetype config filenames at slash. * src/filetypes.c: Fix generating tag files and --ft-names option by ensuring GTK is initialized before calling ui_get_mime_icon(). 2011-03-15 Frank Lanitz * THANKS, src/about.c: Adding Wei-Lun Chao as current maintainer for traditional Chinese translation. 2011-03-15 Colomban Wendling * src/templates.c, src/templates.h: Use the same indentation for all templates (part of FR#3193527; from a patch by Matthew Brush, thanks). * src/plugins.c: Always keep the list of loaded plugin sorted by name. 2011-03-12 Enrico Tröger * data/filetype_extensions.conf: Add Markdown extension. 2011-03-10 Colomban Wendling * src/toolbar.c: Correctly expand the menubar if the toolbar is appended to it but not visible (closes #3204955). * plugins/filebrowser.c, src/editor.c, src/plugins.c, src/symbols.c, src/tools.c, src/utils.c: Prefer prepend elements to lists rather than append them, for better performances. 2011-03-08 Enrico Tröger * src/geany.h: Fix wrong code example in the API docs (spotted by Matthew Brush, thanks). 2011-03-07 Colomban Wendling * tagmanager/mio/mio-memory.c: Import upstream MIO changes not to require a C99 compiler. 2011-03-06 Colomban Wendling * src/symbols.c: When sorting tags by line, also sort by scope if line is the same, avoiding wrong sorting if a parent tag is on the same line than its children, and one of it's children would be sorted before alphabetically (closes #3193982). 2011-03-06 Enrico Tröger * src/interface.c, geany.glade: Fix typo. * src/search.c: Remember Find and Replace options across restarts (patch by Dimitar Zhekov, thanks). Cleanup. Respect saved state of 'Case sensitive' option when using the 'Regular expressions' option as well. * plugins/export.c: Add option to insert line numbers (closes #3197150). Cleanup. Use the full filename and add the extension of the export format. Fix off-by-one bug which hidden the last empty line of a document. 2011-03-05 Colomban Wendling * configure.ac, wscript, makefile.win32, src/Makefile.am, src/makefile.win32, tagmanager/Makefile.am, tagmanager/c.c, tagmanager/entry.c, tagmanager/entry.h, tagmanager/fortran.c, tagmanager/get.c, tagmanager/get.h, tagmanager/js.c, tagmanager/lregex.c, tagmanager/makefile.win32, tagmanager/parse.c, tagmanager/read.c, tagmanager/read.h, tagmanager/sort.c, tagmanager/sql.c, tagmanager/strlist.c, tagmanager/mio/*: Move most of TagManager's I/O to MIO. * src/document.c: Enable in-memory tag parsing. * geany.glade, src/editor.c, src/editor.h, src/interface.c, src/keyfile.c: Add possibility to update symbol list in IDLE time, enabled by default using a minimal delay of 250ms. * src/symbols.c: Improve implementation of hide_empty_rows() to do all in one shot. * tagmanager/include/tm_tag.h, tagmanager/tm_project.c, tagmanager/tm_source_file.c, tagmanager/tm_tag.c, tagmanager/tm_workspace.c: Make TMTag reference-counted. * src/sidebar.c, src/symbols.c, tagmanager/include/tm_tag.h, tagmanager/tm_tag.c: Provide a GType for TMTag and use it in the tag store to make sure the tags it holds are always valid. * src/sidebar.c: Don't remove and add the symbols tree view if we re-add the same one. * src/sidebar.c, src/sidebar.h, src/symbols.c: Update the symbol list rather than clearing and re-building it. There is room for improvement in the implementation side, but it is harder to do, probably a future improvement. * tagmanager/c.c: Fix suffix of anonymous symbols (structs, enums, ...). * tagmanager/c.c: Plug a memory leak. 2011-03-02 Enrico Tröger * plugins/saveactions.c: Fix wrong warning on empty backup directory setting if 'Backup Copy' is not enabled at all. * AUTHORS, src/about.c, README.Packagers, README: Welcome Colomban Wendling, a new Geany developer. 2011-02-22 Nick Treleaven * src/templates.c: Fix segfault when inserting e.g. fileheader template when the template file is empty (#3070913, thanks to lphilpot). 2011-02-21 Enrico Tröger * plugins/filebrowser.c: Add support for multiple file filters, separated by semicolon (based on a patch by Grigory Javadyan, thanks). 2011-02-07 Nick Treleaven * data/filetype_extensions.conf: Fix detecting Matlab and Txt2Tags extensions by default (#3167315, #3154637). 2011-02-06 Frank Lanitz * tagmanager/latex.c: Add a workaround for #3066566 to prevent Geany from crashing during loading of a LaTeX-file containing linebreaks inside headings. 2011-02-06 Enrico Tröger * tagmanager/php.c: Fix memory leaks (reported by an anonymous IRC user). * doc/geany.txt, doc/geany.html: Replace '+' by '-' in the Scintilla Keybindings section to be consistent with the other mentioned keybindings. * src/project.c: Improve error checking when trying to write project files (patch by Colomban Wendling, thanks). Add a warning if writing the project file fails on close. * src/utils.c, src/utils.h, src/project.c, src/main.c, src/socket.c: Rename utils_is_file_writeable() into utils_is_file_writable(). 2011-01-30 Enrico Tröger * src/editor.c: Ensure the editor widget has the focus when the editor menu is called. * scintilla/lexers/LexCOBOL.cxx, scintilla/src/Catalogue.cxx, scintilla/Makefile.am, scintilla/makefile.win32, src/highlighting.c, src/plugindata.h, src/filetypes.c, src/filetypes.h, src/editor.c, src/symbols.c, tagmanager/parsers.h, tagmanager/makefile.win32, tagmanager/cobol.c, tagmanager/Makefile.am, data/filetypes.cobol, data/filetype_extensions.conf, wscript: Add filetype Cobol (based on a patch by Seth Keiper). 2011-01-20 Enrico Tröger * plugins/filebrowser.c: Add '.pyc' to the list of hidden object files (patch by Filip Gruszczyński, thanks). 2011-01-19 Enrico Tröger * *.*: Update copyright information. * configure.ac, doc/geany.html, doc/geany.txt, geany.nsi, geany_private.rc, win32-config.h, wscript, src/geany.h: Post-release version bump. 2011-01-18 Enrico Tröger * src/highlighting.c, data/filetypes.javascript: Add and use secondary keywords for filetype JavaScript, update and sanitize JavaScript keyword lists (patch by Jason Oster, thank you). 2011-01-11 Frank Lanitz * THANKS, src/about.c: Added Rafael Peregrino da Silva to list of contributors for Brazilian Portuguese (pt_BR) translation. 2011-01-10 Nick Treleaven * src/toolbar.c, src/ui_utils.c, src/about.c, THANKS: Add Save As toolbar button option (patch by Matthew Brush, thanks; #3153490). * scintilla/*, src/utils.c, src/notebook.c, data/filetypes.cpp, data/filetypes.vala, data/filetypes.glsl, data/filetypes.cs, data/filetypes.c, wscript: Merge unstable branch: - src/utils.c: Fix detecting non-lowercase self-closing tags e.g.
(#2226117). - src/notebook.c: Add 'Open in New Window' command in the notebook tab menu (based on patch by Matthew Brush, thanks - #3118059). - data/filetypes.cpp, data/filetypes.vala, data/filetypes.glsl, data/filetypes.cs, data/filetypes.c: Disable preprocessor #define tracking for the CPP lexer (enabled by default in Scintilla). - scintilla/*, wscript: Update Scintilla to version 2.22. Use Scintilla's directory structure mostly and only remove unused lexers. 2011-01-05 Nick Treleaven * New release: Geany 0.20 "Disra". 2011-01-04 Nick Treleaven * src/plugins.c: Add debug message with the number of compatible plugins in each plugin search path when showing the Plugin Manager dialog. 2010-12-30 Nick Treleaven * doc/geany.txt, doc/geany.html: Move and update 'Custom filetypes' section. Add 'Creating a custom filetype from an existing filetype' section. 2010-12-24 Nick Treleaven * src/interface.c, src/keybindings.c, geany.glade: Add Edit->Insert Alternative White Space menu item (was previously removed from Edit->Commands submenu). 2010-12-22 Nick Treleaven * src/interface.c, geany.glade: Split Preferences dialog Interface tab into subnotebook to reduce height of dialog (fixes #3141277). Reuses existing strings. * src/editor.c: Scroll to the current line when moving the cursor to the next cursor position in a snippet (#3139490). * doc/geany.txt, doc/geany.html: Add short 'View menu' section and 'Color schemes menu' section. * src/plugindata.h, src/plugins.c, plugins/geanyfunctions.h: Add filetypes_get_display_name() to API. 2010-12-09 Nick Treleaven * src/build.c: Reduce Set Build Commands dialog column 1 width by using '#' label. Fix memory leak. * src/build.c: Use italic for note labels in the Build Commands dialog. 2010-12-08 Nick Treleaven * src/build.c, src/build.h: Replace doc-comments with '/* *' comments to show there's no build API for plugins. 2010-12-07 Nick Treleaven * src/keybindings.c, src/callbacks.c, src/vte.h, src/main.c: Fix segfaults when using 'Send Selection to Terminal' and the VTE is not loaded, and when using Ctrl-A after enabling the 'Load VTE' pref (patch by Dimitar Zhekov, thanks). * src/build.c, src/keyfile.c: Fix some more wrong uses of vte_info.load_vte instead of vte_info.have_vte. * src/main.c: Disable 'Send Selection to Terminal' item when not available instead of removing it to avoid trailing separator. * doc/geany.txt, doc/geany.html: Add 'Configuration file paths' section and link to it instead of repeating typical system data and user config directory paths. List 2 Tools->Configuration Files menu items. Add 'Plugin Manager' section break. Edit some related sections. * doc/geany.txt, doc/geany.html: Update Ignore Tags section with example and menu item. * doc/geany.txt, doc/geany.html: List 'Tools->Configuration Files->filetypes.common' menu item. 2010-12-06 Nick Treleaven * src/document.c: Improve error message for document_save_file() if doc->file_name is NULL (reusing existing strings). Add warning about this in the API docs. 2010-12-03 Nick Treleaven * scintilla/ScintillaGTK.cxx: Backport Scintilla HG fix: Remove styling idle in destructor to avoid crashing when idle called after ScintillaGTK instance destroyed (fixes #3111058). This prevents a crash when closing a modified document (usually without a trailing newline) and choosing Save. 2010-12-01 Nick Treleaven * src/document.c: Warn about file truncation if unsafe file saving fails. 2010-11-30 Nick Treleaven * src/utils.c: Check result of fclose() for utils_write_file(). 2010-11-28 Enrico Tröger * win32-config.h: Enable GIO and built-in regex support on Windows when compiling without Waf. 2010-11-25 Enrico Tröger * geany_private.rc: Reformat and improve the Windows resource file. 2010-11-24 Nick Treleaven * data/filetype_extensions.conf: Add *.latex pattern. * src/interface.c, geany.glade: Add note to indentation prefs page about using Project->Apply Default Indentation for currently open documents. 2010-11-23 Nick Treleaven * src/interface.c, src/keybindings.c, src/callbacks.c, src/callbacks.h, geany.glade: Add 'Mark All' Search menu command. * src/symbols.c, doc/geany.txt, doc/geany.html: If the current word's tag is on the current line, make Go to Tag Definition look for a tag declaration instead, as this is more useful. Likewise make Go to Tag Declaration search for a tag definition in this case also. * src/interface.c, doc/geany.txt, doc/geany.html, geany.glade: Don't use 'Enable' in pref labels when unnecessary. Rename XML/HTML tag autocompletion -> auto-closing. * src/keyfile.c, src/document.c, src/document.h, doc/geany.txt, doc/geany.html: Add gio_unsafe_save_backup hidden pref (patch by Lex Trotman, thanks). * src/keybindings.c, src/editor.c, src/editor.h: Add editor_get_prefs() instead of editor_get_long_line_*() functions. This general function can be extended to support various project and document overrides. * src/keybindings.c, src/project.c, src/prefs.c, src/keyfile.c, src/editor.c, src/editor.h: Remove unnecessary 'global' from long line editor pref field names. 2010-11-22 Nick Treleaven * doc/geany.txt, doc/geany.html: Explain how to grep the source for Scintilla lexer properties. * src/sidebar.c, src/callbacks.c, src/main.c: Fix auto-displaying of sidebar tab bar when sidebar is reshown. Only auto-display symbols and documents tabs when showing the sidebar if there are no plugin tabs. Don't hide the sidebar on startup if only plugin tabs are visible (fixes #3101867). * src/plugindata.h: Make GEANY_API_VERSION, GEANY_ABI_VERSION macros instead of enums so you can protect code with '#if GEANY_API_VERSION >= 200'. * src/plugindata.h: Warn about preprocessor testing GEANY_API_VERSION below 200 because those tests will always fail. 2010-11-21 Enrico Tröger * data/filetypes.xml: Add 'instanceof' keyword for PHP (closes #3109330). 2010-11-18 Nick Treleaven * src/build.c, src/dialogs.c, src/dialogs.h, src/callbacks.c: Re-focus Set Build Commands/Project dialogs after editing a build command label. Add 'parent' argument to some dialogs_show_input*() functions because the dialog parent may not always be the main window. * src/build.c, src/dialogs.c, src/callbacks.c: Don't change default build command entry color when cancelling label editing. Make dialogs_show_input() return NULL when cancelled. * tagmanager/php.c: Parse PHP final functions (fixes #3111171). * src/dialogs.c, src/plugindata.h, src/plugins.c, plugins/geanyfunctions.h: Add dialogs_show_input() to API. 2010-11-17 Nick Treleaven * src/build.c, doc/geany.txt, doc/geany.html: Change 'Non-Filetype Commands' to 'Independent Commands' in the Set Build Commands dialog. * doc/geany.txt, doc/geany.html: Use 'Filetype build commands' and 'Independent build commands'. Fix saying project *independent* execute can only be set by hand. 2010-11-16 Nick Treleaven * src/keybindings.c, src/editor.c, src/editor.h: Make Reflow Lines/Block command use the current indented block, not the whole paragraph, which could have mixed indentation. Fix memory leak and off-by-one bug on first line when using Select Paragraph command. * src/utils.c, src/highlighting.c, src/highlighting.h, src/plugindata.h, src/plugins.c, src/editor.c, src/editor.h, plugins/geanyfunctions.h: Add API functions (patch by Eugene Arshinov, thanks): Move editor.c: is_{string,comment,code}_style() functions to highlighting.c, add to API. Add editor_find_snippet(), editor_insert_snippet(), utils_find_open_xml_tag() to API. 2010-11-15 Nick Treleaven * src/editor.c, doc/geany.txt, doc/geany.html: Don't use XML tag auto-indentation when ' * waf: Update Waf to current SVN version. 2010-11-11 Enrico Tröger * waf, wscript: Update Waf to version 1.6.1. Update wscript for new Waf version, make it Python 3 compatible. 2010-11-11 Nick Treleaven * src/document.c: Display better error messages when saving a document fails (patch by Dimitar Zhekov, thanks). * src/editor.c: Fix wrong snippet indentation when original cursor line has non-indentation whitespace (patch by david, thanks). * doc/geany.txt, doc/geany.html, data/filetypes.php, data/filetypes.docbook, data/filetypes.xml, data/filetypes.html: Enable XML tag autoindentation for PHP, Docbook and add docs for this setting (patch by Eugene Arshinov, thanks). 2010-11-10 Nick Treleaven * src/templates.c, src/document.c: Use LF line endings for templates internally instead of default pref because the default can change. This fixes missing line endings sometimes when changing default setting. * src/document.c: Fix not reporting an error message when saving a document fails. Check result of fclose(). * src/filetypesprivate.h, src/filetypes.c, src/editor.c, data/filetypes.xml, data/filetypes.html: Add xml_indent_tags filetype setting for documents using the HTML/XML lexers (patch by Eugene Arshinov, thanks). * src/document.c: Set errno to 0 before doing disk I/O to prevent confusing error messages on save failure. 2010-11-09 Nick Treleaven * src/templates.c, src/filetypes.c: Save build commands for filetype None (patch by Lex, thanks). Make filetypes_get_conf_extension() return "common" for filetype None. * src/templates.c: Convert line endings for file templates. Fix line endings when using file header template in a file template (oops). * src/utils.c, src/utils.h: Make utils_ensure_same_eol_characters() convert all wrong line endings to the desired one, not just the most common one. 2010-11-08 Nick Treleaven * src/editor.c: Respect 'Smart' home key for Shift+Alt+Home (patch by Dimitar Zhekov, thanks). * src/interface.c, src/keybindings.c, src/ui_utils.c, geany.glade: Restore top-level editor popup item 'Find Document Usage'. * src/interface.c, src/ui_utils.c, geany.glade: Remove duplicates in 'Insert Comments' editor popup menu; rename submenu 'More'. Separate main menu insertion comments depending on number of times used in a document. * data/filetypes.*, data/colorschemes/alt.conf: Rename word/word2 named styles to keyword/keyword2. * doc/geany.txt, doc/geany.html: Mention that indentation settings can be overridden per-project. * src/interface.c, src/callbacks.c, src/callbacks.h, src/document.c, doc/geany.txt, doc/geany.html, geany.glade: Add 'Project->Apply Default Indentation' menu command to override every document's indentation settings. Improve 'Indentation' section docs. 2010-11-06 Enrico Tröger * src/document.c: Fix build with GTK 2.12: explicitly include gio.h if GIO is available and to be used regardless of the USE_GIO_FILEMON flag. * wscript: Fix installation of template files. Show which regex implementation is used. * src/ui_utils.c: Use non-GIO mime-type icon lookup if GIO lookup fails. * autogen.sh: Allow skipping configure during autogen by setting NOCONFIGURE=1 (thanks to Chow Loong Jin). 2010-11-07 Nick Treleaven * src/document.c: Make use_safe_file_saving hidden pref apply even when GIO is available, because g_file_replace_contents() doesn't handle disk space exhaustion. * src/main.c: Show GIO/built-in regex support in startup debug message as well as for --version. * doc/geany.txt, doc/geany.html: Add docs for the HTMLChars plugin (patch by Frank). 2010-11-04 Nick Treleaven * src/filetypes.c: Do not translate 'name' field for filetype None because it is used for hash table lookup. This fixes missing files in the Open dialog for the 'All files' filter with non-English locales (thanks to Sardem FF7, fixes #3094771). * src/filetypes.c, src/filetypes.h, src/document.c, src/symbols.c, src/ui_utils.c: Add filetypes_get_display_name() to get translations for filetype None. * src/document.c: Fix resource leak when saving files with GIO (patch by Colomban Wendling, thanks). 2010-11-02 Nick Treleaven * src/plugindata.h, src/plugins.c, plugins/geanyfunctions.h: Add sci_get_lexer() to plugin API. * plugins/htmlchars.c: Only automatically replace characters when the current document is a Markup document. * plugins/htmlchars.c: Rename submenu item labels to be more descriptive. * src/keybindings.c: Fix Alt+[0-9] switching tabs when other modifiers are also held. * src/ui_utils.c: Don't allow pasting of numbers followed by other characters in the Go to Line dialog/field (patch by Dimitar Zhekov, thanks). * src/main.c: Print "GIO" and "built-in regex" if enabled with --version. * src/document.c: Use g_file_replace_contents() if available to save documents - this should help workaround bugs in GVFS (based on patch by Alexey Antipov, thanks). Needs testing. * src/templates.c: Fix wrongly adding newlines for templates on disk that don't have LF line endings when default line endings are not LF, e.g. Windows. 2010-11-01 Nick Treleaven * src/utils.c, src/main.c: Remove trailing directory separator for app->datadir and app->docdir for consistency with the other directory fields. * src/filetypes.c: Detect user and system filetype configuration files as Conf filetype. * src/editor.c: Respect 'Smart' home key for Shift+Home (fixes #3100290). 2010-11-01 Frank Lanitz * data/filetypes.ada: Fix comments for Ada. Thanks to Jonas Baggett for reporting. 2010-10-29 Nick Treleaven * Makefile.am: Add install-data-only target to only install data/* to speed up testing. * src/editor.c: Fix not autocompleting when breaking lines. * data/filetypes.java, data/filetypes.cpp, data/filetypes.vala, data/colorschemes/alt.conf, data/filetypes.haxe, data/filetypes.common, data/filetypes.glsl, data/filetypes.actionscript, data/filetypes.cs, data/filetypes.ferite, data/filetypes.c, data/filetypes.javascript, data/filetypes.Genie.conf: Add named style 'extra', use for C-like filetypes. 2010-10-28 Nick Treleaven * data/filetypes.xml: Match data-* and aria-* as HTML attributes. * data/colorschemes/alt.conf, data/filetypes.common, data/filetypes.python: Make Python use named styles for color scheme support - use alt.conf color scheme if you want the old colors. Add named style 'function'. * src/plugindata.h: Move plugin_set_info prototype and parenthesize arguments for PLUGIN_SET_TRANSLATABLE_INFO (based on patch by Colomban Wendling, thanks). Fix putting pointer symbol before name, not after type. 2010-10-27 Nick Treleaven * src/filetypes.c, src/ui_utils.c: Fix notebook tab menu icons using theme for "text/plain" filetypes. Make filetype mime_type "text/plain" instead of NULL. 2010-10-26 Nick Treleaven * src/interface.c, doc/geany.txt, doc/geany.html, geany.glade: Edit XML tag autocompletion pref and tooltip to include HTML. * doc/geany.txt, doc/geany.html: Add docs for 'Ensure consistent line endings' pref. * src/keyfile.c: Change default for 'Override Geany keybindings' to on. * src/filetypes.c: Sort filetypes_by_title last instead of on insertion to prevent exponential time. * src/ui_utils.h, src/filetypes.c, src/filetypes.h, src/ui_utils.c: Add filetype mimetype field (patch by Colomban Wendling, thanks). * src/sidebar.c, src/document.c: Show mimetype icon in sidebar Documents list (patch by Colomban Wendling, thanks). * src/ui_utils.c: Add notebook tab document icons (based on patch by Colomban Wendling, thanks). * src/filetypes.c: Leave text/plain mime_type fields as NULL (like custom filetypes). 2010-10-25 Nick Treleaven * src/editor.c, data/snippets.conf: Move HTML automatic
tag completion into a 'table' snippet so the user can decide when to use it (patch by Eugene Arshinov, thanks). * src/interface.c, src/prefs.c, src/about.c, src/keyfile.c, src/document.c, src/document.h, THANKS, geany.glade: Add 'Ensure consistent line endings' file saving pref (patch by Manuel Bua, thanks). * src/utils.c, src/utils.h, src/editor.c: Auto-indent after an HTML/XML line with a missing closing tag (patch by Eugene Arshinov, thanks). Behaviour only applies if XML tag autoclosing is off. * src/templates.c, src/build.c, src/document.c, src/editor.c, src/symbols.c, plugins/saveactions.c: Remove unnecessary uses of FILETYPE_ID() macro with GeanyDocument::file_type. * data/filetypes.xml: Add HTML5 attributes (thanks to Ross McKay). 2010-10-22 Nick Treleaven * src/prefs.c: Fix not changing edited keybindings when cancelling the Preferences dialog. * data/filetypes.xml: Add HTML5 element names (thanks to Ross McKay). 2010-10-21 Nick Treleaven * src/utils.c, src/filetypes.c: Remove filetype default extensions from code. * src/filetypes.c: Allow 'Foo=' in filetype_extensions.conf to remove all patterns. * src/prefs.c: Refactor shared code with kb_cell_edited_cb(). 2010-10-20 Nick Treleaven * src/highlighting.c: Use radio buttons for View->Editor->Color Schemes menu. Don't hide the menu when only the default item is available. * data/colorschemes, data/colorschemes/alt.conf, wscript, Makefile.am: Add alternative color scheme based on Python colors. * scintilla/LexErlang.cxx, scintilla/makefile.win32, scintilla/KeyWords.cxx, scintilla/Makefile.am, src/highlighting.c, src/about.c, src/filetypes.c, src/filetypes.h, THANKS, data/filetype_extensions.conf, data/filetypes.erlang, wscript: Add Erlang filetype (patch by Taylor Venable, thanks). * src/filetypes.c, data/filetypes.*: Move filetype 'extension' default into data files. * src/filetypes.c, data/filetypes.vala: Move filetype comment_{open,close} defaults into data files. 2010-10-18 Nick Treleaven * data/filetypes.c, data/filetypes.d: Add missing C99 keyword 'restrict' (#3046716). Add missing D1 keywords 'ref' and 'macro'. Add D2 keywords. * tagmanager/c.c: Parse Vala functions with contracts (#3080232). * src/project.c: Fix saving project indent prefs straight after using project properties. * src/highlighting.c, src/filetypes.c: Prevent debug message about a missing 'default' named style when using just a user color scheme file. 2010-10-16 Enrico Tröger * src/search.c: Fix off-by-one bug in 'search_mark_all'. 2010-10-15 Nick Treleaven * tagmanager/get.c: Ignore D /+ +/ comments. * tagmanager/c.c: Ignore D unittest blocks. Parse D template functions with constraints. * src/keybindings.c, src/keybindings.h, doc/geany.txt, doc/geany.html: Add 'Insert New Line Before/After Current' keybindings (based on patch by Eugene Arshinov, thanks). * src/document.c: Use secondary text for 'file not found on disk' dialog. 2010-10-08 Nick Treleaven * src/stash.c: Fix build with GLib 2.8. 2010-10-07 Nick Treleaven * src/ui_utils.h, src/socket.c, src/Makefile.am, src/ui_utils.c, configure.ac, doc/geany.txt, doc/geany.html, wscript, TODO: Revert X11 workspace socket support as it needs more work; moved to workspace-sockets branch. 2010-10-06 Nick Treleaven * src/geanywraplabel.c: Fix build with GLib 2.8. * src/dialogs.c, src/about.c, THANKS: Group Open dialog encoding options by submenus (patch by Adam Ples, thanks; #3047717). * scintilla/LexLisp.cxx, scintilla/makefile.win32, scintilla/KeyWords.cxx, scintilla/Makefile.am, src/highlighting.c, src/about.c, src/filetypes.c, src/filetypes.h, THANKS, data/filetype_extensions.conf, data/filetypes.lisp, wscript: Add Lisp filetype (patch by Mário Silva, thanks). Note: Lisp lexer was taken from Scintilla instead. 2010-10-06 Frank Lanitz * po/kk.po, THANKS, src/about.c: Added Kazakh translation. Thanks to Baurzhan Muftakhidinov for providing. 2010-10-05 Nick Treleaven * src/utils.c, src/utils.h, src/highlighting.c, src/editor.c: Don't cache overridden lexer properties. Add foreach_strv() to plugin API. Add utils_strv_join(). * tagmanager/basic.c: Parse property, constructor, destructor as functions (patch by pottersson, thanks; #2992167). 2010-10-01 Nick Treleaven * src/tools.c, doc/geany.txt, doc/geany.html: Fix passing quoted arguments when using 'Send Selection to'. This means sed 's/\./(dot)/g' now works. * src/editor.c: Add snippet keybinding support for keys in user snippets.conf (based on patch by Eugene Arshinov, thanks). No docs yet. * doc/geany.txt, doc/geany.html: Add some subheadings for Snippets section. * doc/geany.txt, doc/geany.html: Add snippet keybindings docs. * src/highlighting.c, src/utils.h: Move foreach_strv to utils.h. * src/editor.c, data/snippets.conf: Read snippet keybindings from system keyfile also. Add keybinding example to default snippet.conf. 2010-09-30 Nick Treleaven * src/utils.h, src/filetypesprivate.h, src/filetypes.c, src/filetypes.h, src/document.c, doc/geany.txt, doc/geany.html, data/filetypes.txt2tags, data/filetypes.markdown, data/filetypes.restructuredtext: Add symbol_list_sort_mode per-filetype setting, set to sort by line number by default for Markdown, reStructuredText and Txt2Tags. Add utils_get_setting() macro for reading a key from a home or system keyfile. Move GeanyFiletypePrivate to filetypesprivate.h. * src/Makefile.am, src/ui_utils.c, configure.ac, wscript: Link with X11 if found to fix linking with a recent GNU ld. * src/document.c: Avoid delay and redrawing when automatically opening a new document after closing one. * scintilla/LexForth.cxx, scintilla/makefile.win32, scintilla/KeyWords.cxx, scintilla/Makefile.am, src/highlighting.c, src/about.c, src/filetypes.c, src/filetypes.h, THANKS, data/filetypes.forth, data/filetype_extensions.conf, wscript: Add Forth filetype (patch by Thomas Huth, thanks). * src/tools.c: Remove unnecessary 'fix' from r5224 as it breaks configuring custom commands for 'Send Selection to' (oops). 2010-09-25 Enrico Tröger * src/editor.c: When commenting/uncommenting with single-line comment characters, ignore any end of line characters before evaluating the current line. * data/filetypes.python: Simplify Python Compile/Syntax Check command. 2010-09-23 Nick Treleaven * src/keyfile.c, src/search.c, src/search.h, doc/geany.txt, doc/geany.html: Add hidden pref 'find_selection_type' with option to repeat last search when there's no selection. Change default Find Selection behaviour to not let the X selection override the current word (can be confusing). Add docs for Find Selection commands. * src/document.c: Fix segfault on idle callback when quitting. * src/interface.c, src/keybindings.c, geany.glade: Move 'Edit->Commands->Insert Alternative White Space' to editor popup Insert menu. * src/interface.c, geany.glade: Move editor popup menu Insert Comments submenu to top of Insert menu. * src/ui_utils.h, src/document.c, src/ui_utils.c, doc/geany.txt, doc/geany.html: Add hidden pref new_document_after_close for whether to open a new document automatically, off by default. * HACKING: Add 'Bugs to watch out for' section. 2010-09-22 Nick Treleaven * src/stash.c, doc/Makefile.am, doc/stash-example.c, doc/stash-gui-example.c: Improve Stash GUI example. 2010-09-21 Nick Treleaven * src/interface.c, geany.glade: Move Go to Marker menu items to Search menu. Rename popup editor menu item Commands -> Edit. * src/callbacks.c, src/search.c, src/search.h: Move find_again() to search.c. * src/search.c: Make Find Selected commands repeat the last search if the selection was lost. * doc/geany.txt, doc/geany.html: Add docs for Find Selection keybindings. * src/interface.c, src/keybindings.c, geany.glade: Unify Find Selection strings. * src/interface.c, src/ui_utils.c, geany.glade: Group editor popup Insert commands in a submenu, with extra items for the most commonly used Insert Comments commands. Show Edit->Commands before Format in menubar Edit menu (to match keybindings order). Show Open Selected F_ile popup item below submenus. 2010-09-20 Nick Treleaven * src/ui_utils.c: Refactor shared submenu code with GeanySharedMenu array. * src/interface.c, src/ui_utils.c, geany.glade: Add Search submenu for Find Selected, Find Usage, Go to Tag items, shared with the editor popup menu. * src/document.c: Open a new document automatically after closing all documents. 2010-09-16 Nick Treleaven * src/callbacks.c: Prompt for reloading if the document has an undo stack to avoid losing undo ability on accidental reloading (patch by Colomban Wendling, thanks). * src/project.c, src/geanyobject.c, src/geanyobject.h, doc/pluginsignals.c: Add plugin signals project-dialog-create and project-dialog-confirmed so plugins can append a Project Properties notebook tab (patch by Jiří Techet, thanks). * src/ui_utils.h, src/plugindata.h, src/main.c: Add main_widgets.project_menu to API (patch by Jiří Techet, thanks). * src/plugindata.h, src/msgwindow.c, src/msgwindow.h, src/search.c, src/plugins.c, plugins/geanyfunctions.h: Add msgwin_set_messages_dir() to API (patch by Jiří Techet, thanks). 2010-09-15 Nick Treleaven * src/keyfile.c: Save document indent width with the session. * src/ui_utils.h, src/socket.c, src/ui_utils.c, doc/geany.txt, doc/geany.html, TODO: Use a separate socket per workspace on X (patch by Erik de Castro Lopo, thanks). 2010-09-14 Nick Treleaven * src/main.c: Ignore directories passed on the command-line (based on patch by Erik de Castro Lopo, thanks). * tagmanager/c.c: Parse D function template names. * src/interface.c, src/callbacks.c, src/callbacks.h, src/keyfile.c, src/document.c, src/editor.c, src/editor.h, src/ui_utils.c, geany.glade: Allow per-document indent width setting (patch by Jiří Techet, updated by Erik de Castro Lopo - thanks). * src/interface.c, src/callbacks.c, src/callbacks.h, geany.glade: Combine indent width menu item callbacks. * src/interface.c, geany.glade: Don't translate indent width menu items as they are now used for atoi(). 2010-09-13 Nick Treleaven * src/interface.c, src/keybindings.c, src/ui_utils.c, geany.glade: Remove 3 popup menu items to save space: Find Document Usage because Find Usage can be used instead. Go to Tag Declaration because Go to Tag Definition is more common. Go to Line because the toolbar item can be used instead. * src/tools.c, src/search.c, tagmanager/python.c: Fix some 'possible' NULL pointer dereferences (based on patch by Erik de Castro Lopo). * src/keybindings.c, src/keybindings.h, src/prefs.c: Simplify keybindings_check_event(). 2010-09-09 Nick Treleaven * src/build.c: Use up/down icons for Previous/Next Error. * src/interface.c, src/keybindings.c, src/callbacks.c, src/callbacks.h, src/ui_utils.c, doc/geany.txt, doc/geany.html, geany.glade: Add Find Usage and Go to Tag items to Search menu for easier discovery. * tagmanager/tm_symbol.c: Fix possible NULL dereference. * HACKING: Add link to glade-2.12.2.tar.gz on geany.org. * doc/geany.txt, doc/geany.html: Mention the filetype wordchars setting can be overridden by the whitespace_chars filetypes.common setting. * src/highlighting.c, src/encodings.c, tagmanager/tm_file_entry.c: Remove NULL checks when calling g_free() (patch by Erik de Castro Lopo, thanks). * src/document.c: Show Save As when saving if the document filename doesn't have an absolute path, so command-line new files can be saved without a prompt, but file templates still prompt the user. 2010-09-09 Frank Lanitz * src/build.c: Fix a memory leak. Based on input by Daniel Marjamäki. Thanks for the catch. 2010-09-08 Nick Treleaven * src/ui_utils.h, src/msgwindow.c, src/msgwindow.h, src/main.c: Add GeanyMainWidgets::message_window_notebook for plugins to append a new notebook page (#3061342). * src/document.c: Add Close button to the detected file changed dialog. * src/interface.c, geany.glade: Add separator between Find Previous and Find in Files. Add up/down icons for Previous/Next Message. 2010-08-29 Enrico Tröger * data/snippets.conf: Add dummy entry for "do" snippet for Haskell to explicitly avoid the default completion. 2010-08-25 Nick Treleaven * src/build.c: Fix broken editing of build menu labels. * src/encodings.c, src/filetypes.c, configure.ac: Auto-enable building with included regex if no regcomp function is found. Remove checks for HAVE_REGCOMP in Geany source (not TagManager) - regex support is required. * tagmanager/make.c: Backport fix for possible infinite loop from CTags. * scintilla/PlatGTK.cxx: Backport list box memory leak fixes from Scintilla 2.20. 2010-08-24 Nick Treleaven * src/project.c: Make the Properties dialog filename a label and put it first (patch by Jiří Techet, thanks). * src/build.c, src/build.h, src/project.c, doc/geany.txt, doc/geany.html: Remove the "Set build working directories" button from the project properties dialog (patch by Jiří Techet, thanks). * src/search.c: Include all files if the Find in Files pattern field is enabled and empty. * src/filetypes.c: Rename Matlab -> Matlab/Octave. Datafile name remains the same. 2010-08-23 Nick Treleaven * scintilla/LexTxt2tags.cxx, scintilla/makefile.win32, scintilla/include/SciLexer.h, scintilla/include/Scintilla.iface, scintilla/KeyWords.cxx, scintilla/Makefile.am, src/highlighting.c, data/filetypes.txt2tags, wscript: Add lexer for Txt2Tags (patch by Forgeot Eric, thanks - #3020632). * m4, configure.ac, Makefile.am: Use AC_CONFIG_MACRO_DIR (patch by Erik de Castro Lopo, thanks). * src/callbacks.c: Only prompt for reloading if the document has unsaved changes (patch by Jiří Techet, thanks). 2010-08-21 Frank Lanitz * src/plugindata.h: Apply a patch by Jiří Techet which is preventing warnings when using -Wmissing-prototypes on compiling. Thanks. 2010-08-20 Nick Treleaven * scintilla/KeyWords.cxx: Link Octave instead of Matlab. Add comment about not being autogenerated. Minor changes to fit Scintilla order. * src/build.c, src/build.h: Replace GeanyBuildCommand::entries array with separate fields. Similar to r5077 in the bs2 branch, but with less loop unrolling. * src/build.c: Remove buildcmd_* accessor functions. 2010-08-17 Nick Treleaven * src/highlighting.c, src/editor.c: Use Octave lexer instead of Matlab to support Octave # comment char. 2010-08-16 Nick Treleaven * src/filetypes.c: Fix segfault on Tools->Reload Configuration when no documents are open (#3037079). * scintilla/LexMarkdown.cxx: Fix infinite loop in Markdown lexer (patch by Colomban Wendling, thanks). * src/build.c: Fix saving non-project filetype error regex. * src/build.c: Fix memory leak in read_regex(). 2010-08-15 Enrico Tröger * wscript: Check for libsocket on OpenSolaris to fix build. * src/encodings.c: Rewrite the logic to auto detect encodings a bit to make it more readable and fix a slightly wrong detection on Windows (closes #3019573). * plugins/geanyfunctions.h, src/editor.c, src/plugindata.h, src/plugins.c: Add editor_goto_pos() to the plugin API. 2010-08-13 Nick Treleaven * configure.ac: Check for git-svn repo, not just git because find-rev doesn't always fail with a git-only repo. 2010-08-12 Frank Lanitz * src/search.c: Fix a memory leak based on input by Daniel Marjamäki. Thanks. 2010-08-11 Nick Treleaven * doc/geany.txt, doc/geany.html: Reorder Focus keybindings. 2010-08-10 Frank Lanitz * autogen.sh: Applying a patch by Erik de Castro Lopo for checking against pkg-config when running autogen.sh. Thanks for the patch. * src/log.c: Applying a patch by Colomban Wendling to print out log domains. Thanks. 2010-08-10 Nick Treleaven * src/keybindings.c, src/keybindings.h, src/prefs.c, src/plugindata.h: Use single binding_ids keybinding array instead of individual arrays for core keybindings. This allows the keybinding IDs to be merged into one enum; the order of keybindings is now just the order they are added to each group. Keybindings can be reordered without breaking the plugin ABI but groups must stay the same. * src/stash.c: Fix writing the default value when a key is missing for hidden prefs, even if it was overridden when it was originally read. * src/keyfile.c, src/ui_utils.c, doc/geany.txt, doc/geany.html: Move some interface hidden prefs to ui_utils.c. * src/editor.c: Revert r4840 scope completion mode as it sometimes breaks autocompletion. * src/keybindings.h, src/plugindata.h: Randomly sort keybinding IDs to show there should be no order. * src/keybindings.c: Reorder Focus keybindings. 2010-08-05 Enrico Tröger * src/ui_utils.c, src/ui_utils.h: Make ui_label_new_bold() a function. Escape the name of the current document for markup when using document name for menu items (closes #3038844). * src/vte.c: Inherit 'beep on errors' preference for the audible bell preference for the VTE (closes #3038215). 2010-08-01 Enrico Tröger * src/utils.c, src/utils.h: Add utils_get_eol_char(). * plugins/geanyfunctions.h, src/document.c, src/editor.c, src/editor.h, src/plugindata.h, src/plugins.c, src/templates.c, src/utils.c, src/utils.h: Ensure inserted templates always have proper line ending characters according to the current document's preference. This is also fixes problems with templates on Windows which had always Unix line ending characters but now since they are read from files, these have Windows line ending characters and had been converted twice. 2010-07-31 Enrico Tröger * src/vte.c: Fix build with GTK 2.8, use the stock icon name directly instead of the macro. Though, the icon is still missing for GTK 2.8. * src/templates.c: Make make_comment_block() work with a GString. This is not yet perfect but a bit better than before. 2010-07-29 Enrico Tröger * src/keybindings.c, src/vte.c, src/vte.h: Implement 'Select All' for the VTE widget. 2010-07-25 Enrico Tröger * geany.nsi: Fix missing template files in the Windows installer. 2010-07-18 Enrico Tröger * data/filetypes.python: Update list of Python builtins, based on Python 2.6. 2010-07-13 Enrico Tröger * src/filetypes.c: On Windows, convert filetype extensions read from config files to lower case (closes #3028856). 2010-07-12 Nick Treleaven * src/keybindings.c: Focus toolbar item when pressing Go to Line keybinding only when it's not in the toolbar's drop down overflow menu (fixes #3027454). 2010-07-11 Lex Trotman * src/build.c: Fix build menu translation problems. 2010-07-10 Enrico Tröger * wscript: Fix './waf install'. 2010-07-09 Nick Treleaven * src/editor.c: Fix scrolling the editor line in view after loading a session and switching document tabs. Note this causes repainting so needs improvement. * doc/geany.txt, doc/geany.html: Add note to restart Geany after installing/updating before editing hidden prefs. * src/ui_utils.h, src/main.c, src/ui_utils.c: Use Stash to save statusbar_template setting, instead of the load/save-settings signal. Add ui_init_prefs(). 2010-07-08 Nick Treleaven * src/ui_utils.c, doc/geany.txt, doc/geany.html: Fix writing empty hidden pref "statusbar_template" key so users can find it (patch by Dimitar Zhekov, thanks). * src/ui_utils.c, src/ui_utils.h, src/main.c: Add ui_finalize(), free string (patch by Dimitar Zhekov, thanks). 2010-07-07 Nick Treleaven * src/build.c, src/project.c, src/project.h: Show the Project Properties build tab when choosing 'Set Build Commands' for now to prevent confusion with non-project commands. 2010-07-06 Nick Treleaven * src/search.c, doc/geany.txt, doc/geany.html: Fix Grep --exclude-dir example. 2010-07-05 Nick Treleaven * src/sidebar.c: Add sidebar Documents popup menu item 'Find in Files'. * src/keyfile.c, src/main.c, src/editor.c: Don't unnecessarily test G_FILE_TEST_IS_SYMLINK when testing G_FILE_TEST_IS_REGULAR (patch by Dimitar Zhekov, thanks). 2010-07-02 Nick Treleaven * doc/geany.txt, doc/geany.html: Fix wording - restarting is required for hidden prefs. File templates don't need manual reloading anymore. * src/ui_utils.c: Fix only adding project base path to Find in Files history if it isn't already there (oops). * src/msgwindow.c: Parse lines in the Messages window even if Find in Files hasn't been used yet (patch by Jiří Techet, thanks). 2010-07-01 Nick Treleaven * scintilla/LexCPP.cxx, src/highlighting.c: Add C++ lexer property fold.cpp.comment.explicit (patch sent); set it disabled. * src/utils.h, src/highlighting.c, doc/geany.txt, doc/geany.html, data/filetypes.common: Add filetypes.common fold_symbol_highlight color setting. Add API macro foreach_range(). * src/printing.c, doc/geany.txt, doc/geany.html: Always use white background color when printing (except for text with a white foreground) to save ink (should fix #2968998). * src/build.c, src/build.h, doc/geany.txt, doc/geany.html: Limit build error editor indicators to 50, but parse all errors in the Compiler tab (fixes #3019823). 2010-06-30 Nick Treleaven * src/highlighting.c: Re-enable fold.comment for lexers - it was disabled to prevent C //{ explicit folding, but that also disables stream comment folding /* */. * tagmanager/tm_workspace.c, tagmanager/get.c: Use g_free instead of free (patch by Daniel Marjamäki, thanks). * src/editor.c: Use SCI_SETFIRSTVISIBLELINE for editor_scroll_to_line(). Note this doesn't affect the bug with document switching not scrolling cursor in view after loading a session. 2010-06-29 Nick Treleaven * src/ui_utils.c, THANKS, doc/geany.txt, doc/geany.html: Add statusbar_template hidden pref (based on patch by Dimitar Zhekov, thanks). * src/ui_utils.c, doc/geany.txt, doc/geany.html: Add spaces after RO when using %r in statusbar_template setting. Add space between encoding and BOM. Note \t means tab for default text. 2010-06-28 Nick Treleaven * src/search.c: Restore tabbing past Find in Files combo box drop down menus. 2010-06-25 Nick Treleaven * src/sciwrappers.c, src/plugindata.h, src/pluginutils.c, src/main.c, doc/pluginsignals.c, doc/pluginsymbols.c, doc/Makefile.am, doc/plugins.dox: Move plugin signals docs to pluginsignals.c, using function pointer syntax instead of @signaldef as this puts a summary of the signal names at the top of the page and sorts alphabetically. (Note: the syntax is similar to Vala signal syntax). 2010-06-24 Lex Trotman * src/build.c Make default dialog entries use GTK_STATE_INSENSITIVE color not a fixed color (Suggestion by Ditmar Zhekov) 2010-06-23 Nick Treleaven * src/search.c, doc/geany.txt, doc/geany.html: Implement Find in Files file pattern search. * src/search.c: Add file pattern to combo box history. * src/dialogs.c, src/vte.c, src/search.c, src/ui_utils.c, plugins/export.c: Use ui_hookup_widget() instead of g_object_set_data_full() for widgets. 2010-06-22 Nick Treleaven * src/search.c: Add Files checkbox and combo to Find in Files dialog, currently does nothing & is disabled. Don't try to focus the next entry on pressing tab anymore as this is more complicated now. 2010-06-21 Nick Treleaven * src/search.c: Put Find in Files Search field above Directory field. * src/search.c, doc/geany.txt: Simplify FIF 'Fixed strings, Grep regular expressions, Extended regular expressions' radio buttons with a 'Use regular expressions' checkbox. This uses the extended syntax (which is the same as the Find/Replace regex syntax). * src/search.c: Move 2 Find in Files checkboxes for even spacing. 2010-06-20 Frank Lanitz * tagmanager/tm_work_object.c: Change of description of tm_get_real_path(). Patch by Dimitar Zhekov. Thanks. 2010-06-18 Nick Treleaven * src/ui_utils.h, src/dialogs.c, src/plugindata.h, src/search.c, src/plugins.c, src/ui_utils.c, plugins/geanyfunctions.h: Add ui_combo_box_add_to_history() to API. * plugins/filebrowser.c: Add history to path entry. * src/plugindata.h, src/plugins.c, doc/plugins.dox: Fix not loading plugins built against a newer API when Geany doesn't provide the required version given in PLUGIN_VERSION_CHECK(). Improve documentation for PLUGIN_VERSION_CHECK(). * plugins/filebrowser.c: Allow Find in Files when no items are selected. * src/build.c, src/geanyobject.c, src/geanyobject.h, doc/plugins.dox: Add API signal "build-start" (patch by Jiří Techet, thanks). 2010-06-17 Nick Treleaven * src/sidebar.c: Replace /home/user with ~ in the documents list (patch by Jon Strait, thanks). * src/build.c: Make default Build dialog entries grey, not light grey (too hard to read on a white background). * src/ui_utils.c: Display 'new instance' on title bar (patch by Eugene Arshinov, thanks). * src/ui_utils.c: Remove any duplicate on adding to combo box histories. 2010-06-16 Nick Treleaven * src/notebook.c: Align notebook tab close buttons centred vertically - thanks to Robux.Biz (galyuk). * Merge unstable branch: - src/build.c: Make build config entries light grey until set. - src/keybindings.c, src/about.c, THANKS: Fix the wrong file being put on top of the stack when switching tabs too quickly (patch from Jiří Techet, thanks). - src/templates.c, data/templates/gpl, data/templates/function, data/templates/changelog, data/templates/bsd, data/templates/fileheader, wscript, Makefile.am: Move general templates from source code into files. Load general templates from system path instead of creating them in the user's config dir. 2010-06-12 Enrico Tröger * po/POTFILES.skip: Add doc/stash-example.c to fix 'make distcheck'. * geany.nsi: Change the RequestExecutionLevel for the Windows installer to 'highest'. * New release: Geany 0.19 "Vellam". * configure.ac, doc/geany.html, doc/geany.txt, geany.nsi, geany_private.rc, win32-config.h, wscript, src/geany.h: Post-release version bump. 2010-06-10 Nick Treleaven * src/editor.c: Group undo action for Insert Multiline Comment. 2010-06-08 Nick Treleaven * Makefile.am: Don't individually install data/*.tags as all data/* files will be installed anyway. 2010-06-07 Frank Lanitz * tagmanager/tm_project.c: Fix a double free. (patch by Daniel Marjamaki, thanks). 2010-06-06 Enrico Tröger * tagmanager/tm_workspace.c: Fix two memory leaks (patch by Daniel Marjamaki, thanks). * src/sidebar.c: Fix reducing paths to project name in the Documents list (patch by Eugene Arshinov, thanks). * src/symbols.c: Fix crash when trying to sort NULL pointers as tags in the Symbols list (closes #3011986). * NEWS, scintilla/*, scintilla/include/*, src/plugindata.h: Update Scintilla to version 2.12. * wscript, scintilla/Makefile.am, scintilla/makefile.win32, scintilla/LexCrontab.cxx: Remove unused Crontab lexer. * data/filetypes.css, src/highlighting.c: Add new style "media" for filetype CSS. 2010-06-04 Nick Treleaven * doc/geany.txt, doc/geany.html: Build section: minor rewording, formatting fixes; move some sentences. 2010-06-03 Enrico Tröger * src/build.c: Explicitly try to localise build menu item labels with gettext to enforce getting default labels translated. * tagmanager/tm_workspace.c: Fix not closed FILE pointer on early exit (patch by Daniel Marjamaki, thanks). * doc/images/*.png: Update images for Geany 0.19. * src/sidebar.c: Destroy the default symbol list treeview only once (fixes gtk_widget_destroy warning on exit). 2010-05-30 Enrico Tröger * tagmanager/sort.c: Replace free() by g_free() (patch by Daniel Marjamaki, thanks). * tagmanager/c.c: Fix parsing of C++ classes contain attributes with bitfields (patch by Lex Trotman, thanks). * src/plugindata.h, src/plugins.c: Add PLUGIN_SET_TRANSLATABLE_INFO macro to the plugin API so plugins' meta information can be translated already in the plugin manager dialog (patch by Colomban Wendling, thanks). 2010-05-29 Enrico Tröger * src/main.c: Print locale information in debug output. * src/build.c: Fix some labels which were marked as translatable but were not handled properly by gettext(). Add a missing const. * src/msgwindow.c: Try to convert text into UTF-8 before adding it to the Compiler and Messages Window (closes #3007919). 2010-05-25 Enrico Tröger * plugins/Makefile.am, src/Makefile.am, tagmanager/Makefile.am, wscript: Pass G_LOG_DOMAIN to source files for better logging. 2010-05-24 Frank Lanitz * THANKS, src/about.c: Update of translation credits to reflect a change on Spanish translation team better. 2010-05-23 Lex Trotman * src/build.c: Fix infinite loop reading build command output 2010-05-23 Enrico Tröger * src/msgwindow.c: Fix duplicate accelerators for Clear and Copy in the Messages Window popup menu. * src/pluginutils.c: Expand child widgets in the Plugin Preferences dialog (patch by Colomban Wendling, thanks). 2010-05-22 Enrico Tröger * src/ui_utils.c: Fix Undo/Redo button state after the last document has been closed. Add Print and Replace toolbar items to the list of document sensitive widgets. * src/toolbar.c: Fix crash when the toolbar is reloaded without any open documents. * src/build.c: Fix Run toolbar item sensitivity after the last document has been closed. * plugins/classbuilder.c: Remove two unnecessary g_strdups(). * doc/geany.html, doc/geany.txt, src/keyfile.c, src/msgwindow.c, src/plugindata.h, src/ui_utils.h: Add hidden preference to disable automatic scrolling in the Compiler tab (closes #3004714). 2010-05-19 Frank Lanitz * plugins/classbuilder.c: Fix a memory leak. (patch by Daniel Marjamaki, thanks) 2010-05-16 Enrico Tröger * src/prefs.c, src/project.c: win32.h can be included unconditionally. * src/sidebar.c: Fix project base_path detection if the path has a trailing slash. * src/document.c, src/editor.c, src/project.c: Small improvements to speed up quit process with many open documents. Avoid calling gtk_notebook_remove_page() on exit as it takes a lot of time. * src/geanymenubuttonaction.c: Explicitly check for the type when iterating the action's proxies. For some reason on Windows, a GtkImageMenuItem proxy is created. * geany.pc.in, wscript, plugins/Makefile.am, src/Makefile.am, src/plugindata.h, scintilla/*, scintilla/include/*: Update Scintilla to version 2.11. * plugins/Makefile.am, plugins/makefile.win32, src/Makefile.am, src/makefile.win32: Add new GTK define also for Mingw cross compilation and makefile.win32 based Windows builds. * plugins/filebrowser.c: Implement reading and evaluating hidden file attribute on Windows. Fix broken "Go Up" if the current path ends with a slash. * THANKS, src/about.c, src/prefix.c: Replace free() by g_free() (patch by Daniel Marjamaki, thanks). * geany.glade, src/document.h, src/interface.c, src/keyfile.c, src/main.c, src/notebook.c, src/prefs.c: Add preference to add new document tabs beside the current one (patch by Colomban Wendling, thanks). * geany.glade, src/dialogs.c, src/geany.h, src/interface.c, src/keyfile.c, src/prefs.c, src/ui_utils.h: Add a preference for choosing between GTK and native File Open/Save dialogs (only available on Windows). * doc/geany.html, doc/geany.txt: Update documentation. 2010-05-15 Enrico Tröger * src/win32.c: Sort file filters for the native Windows file open dialog by name. Don't use file filters for the native Windows Save As dialog. * src/dialogs.c, src/win32.c, src/win32.h: Remove old code. Pass and use also parent and title arguments to win32_show_document_open_dialog(). * src/dialogs.c: Call handle_save_as() only when the Save As dialog was not cancelled. * src/toolbar.c: Improve adding/removing of the special separator between menubar and toolbar when the toolbar is appended to the menubar. * src/toolbar.c, src/templates.c: Explicitly disconnect menus from GeanyMenuButtonAction on quit to not trigger updating the menus on each item removal. 2010-05-15 Frank Lanitz * src/support.h: Replace one non breaking space by normal space. Patch by Daniel Marjamaki. 2010-05-14 Enrico Tröger * plugins/classbuilder.c: Don't make the 'Create Class' menu item document-sensitive (patch by Colomban Wendling, thanks). Add namespace support for GTK+ classes. Add GET_CLASS() macro for GTK+ classes. Add typedef of the private structure in the header file instead of declaring it (all the above from a patch by Colomban Wendling, thanks). * src/highlighting.c: Set common default "fold.comment" to 0 to disable it. This can be overridden if desired. * src/sidebar.c: Improve sorting of document list items (patch by Colomban Wendling, thanks). * src/main.c: Remove unnecessary textdomain() call. 2010-05-11 Nick Treleaven * src/search.c: Fix search_find_text not returning -1 when match is out of range. This fixes invalid memory reads and wrong template filename wildcard replacement. * src/search.c, src/document.c: Only replace template filename matching start of word on saving. * plugins/filebrowser.c: Add 'Refresh' popup menu item (part of geany-plugins #2999858). * src/build.c, src/build.h, src/project.c: Make some ugly build.h global variables static. * src/build.c, src/build.h, src/project.c: Add Build prefix for TableFields, TableData. 2010-05-10 Enrico Tröger * src/dialogs.c: Fix Cancel on Goto Line dialog (patch by Dimitar Zhekov, thanks). * src/dialogs.c, src/win32.c, src/win32.h: (Re-)Implement a (still basic) native Windows Save As dialog when compiled with GEANY_USE_WIN32_DIALOG. 2010-05-09 Enrico Tröger * THANKS, src/about.c, plugins/classbuilder.c: Add support for creating PHP classes (patch by Ondrej Donek, thanks). * src/ui_utils.h, src/ui_utils.c: Add public, generic callback ui_editable_insert_text_callback() to restrict GtkEntry text inputs to +/- and numeric values only. * src/dialogs.h, src/dialogs.c: Add special variant dialogs_show_input_goto_line() to use a normal GtkEntry together with dialogs_show_input_goto_line() for text input. * src/geanyentryaction.c, src/callbacks.c, src/editor.c, src/editor.h: Allow '+' as values for Goto Line inputs to jump relative to the current line (closes #2997238). 2010-05-08 Enrico Tröger * src/highlighting.c: Apply foreground and background colours of the folding margin style properly (closes #2998347). * src/utils.c: Don't auto-close short XML tags (closes #2994852). * THANKS, src/about.c, src/keybindings.c: Improve jumping to matching braces by consistently position the cursor before or after the matching brace dependent where it was before (patch by Dimitar Zhekov, thanks). * src/main.c: Fix crash when generating global tags files (patch by Colomban Wendling, thanks). 2010-05-07 Nick Treleaven * src/templates.c: Avoid connecting signals more than once. 2010-05-06 Enrico Tröger * wscript: Don't ignore the 'intltool' check on non-Windows systems, instead raise a configure error. 2010-05-06 Nick Treleaven * src/build.c: Fix marking some strings as translatable (cannot be done in the ASSIGNIF macro). * src/templates.c, doc/geany.txt, doc/geany.html: Reload templates if saving a document in the templates config dir. 2010-05-05 Nick Treleaven * src/search.c, src/search.h, src/document.c, doc/geany.txt, doc/geany.html: Fix replacing {filename} template wildcard for custom file templates with non-default file extension. Add search_find_text() for POSIX regex searches. * src/templates.c, doc/geany.txt, doc/geany.html: Add {project}, {description} template wildcards (#2954737). * doc/geany.txt, doc/geany.html: Divide template wildcards into groups. * src/plugindata.h, src/plugins.c, src/symbols.c, plugins/geanyfunctions.h: Add symbols_get_context_separator() to plugin API (patch by Colomban Wendling, thanks). 2010-05-03 Nick Treleaven * src/keybindings.c: Fix setting wrong accelerator for 2 Edit->Commands items (patch by Anonymous, thanks; #2995593). * src/sciwrappers.c, src/plugindata.h, src/plugins.c, plugins/geanyfunctions.h: Add sci_set_line_indentation(), sci_get_line_indentation() to API (patch by Colomban Wendling, thanks). 2010-04-30 Nick Treleaven * src/editor.c: Warn user if hidden hard tab width setting is not 8. 2010-04-28 Nick Treleaven * src/interface.c, src/project.c, src/keyfile.c, geany.glade, doc/geany.txt, doc/geany.html: Hide 'Tabs and Spaces: Hard tab width' preference - it should always be 8. (Hidden setting kept in case users have modified it). 2010-04-28 Nick Treleaven * doc/geany.txt, doc/geany.html: Add Folding section link to filetypes.common custom settings. 2010-04-27 Enrico Tröger * src/callbacks.c: When switching documents, don't call document_set_text_changed() as this does much more than necessary. Instead call the necessary UI update functions explicitly. 2010-04-27 Nick Treleaven * tagmanager/vstring.c: Fix invalid memory read (patch by Colomban Wendling, thanks). 2010-04-25 Enrico Tröger * src/build.c, src/dialogs.c, src/msgwindow.c, src/ui_utils.c: Replace g_vsnprintf() by g_strdup_vprintf() to avoid truncated strings in case of reaching the buffer size limit (part of #2979697). * src/win32.c: Change the limit for the command line length when executing commands to a maximum of 32768 characters (closes #2979697). Fix broken opening URLs e.g. when using the 'builtin' Run command. * tagmanager/ctags.c: Change eFree() to simply ignore NULL pointers instead of asserting. * src/main.c: Remove malloc() fallback since we completely rely on g_malloc() nowadays. * plugins/export.c, plugins/filebrowser.c, plugins/htmlchars.c, plugins/saveactions.c: Make string arguments const where appropriate (patch by Colomban Wendling, thanks). * src/build.c, src/build.h, src/callbacks.c, src/editor.c, src/encodings.c, src/encodings.h, src/gb.c, src/geanyentryaction.c, src/geanymenubuttonaction.c, src/geanyobject.c, src/geanywraplabel.c, src/keyfile.c, src/project.c, src/sidebar.c, src/socket.c, src/symbols.c, src/templates.c, src/ui_utils.c: Make string arguments const where appropriate (patch by Colomban Wendling, thanks). 2010-04-22 Nick Treleaven * src/plugindata.h, src/pluginutils.c, src/pluginutils.h, THANKS: Make plugin_signal_connect() string argument const (patch by Colomban Wendling, thanks). * src/keybindings.c, src/keybindings.h, src/plugindata.h: Constify some more string pointers in the API (patch by Colomban Wendling, thanks). * src/templates.c, src/templates.h, src/editor.c, doc/geany.txt, doc/geany.html: Support {pc} wildcard in snippets to escape percent char. * src/editor.c: Recalculate line margin width when zooming (fixes #2990553). * src/highlighting.c, doc/geany.txt, doc/geany.html, data/filetypes.common: Support more folding icon styles: arrows, +/- and no lines (#2935059). 2010-04-21 Enrico Tröger * src/socket.c: Fix Windows build by properly guarding Unix-only code. 2010-04-21 Nick Treleaven * src/templates.c, doc/geany.txt, doc/geany.html: Support {ob} and {cb} in fileheader and file templates; they are replaced last with { and }. This allows 'escaping' of wildcard strings. * src/editor.c, plugins/classbuilder.c: Fix Class Builder plugin to use correct indentation instead of always tabs. Make editor_insert_text_block() only replace leading tabs for the 'Tabs' indent type; also group edits for undo. * src/templates.c, src/templates.h, src/editor.c, doc/geany.txt, doc/geany.html: Support {ob} and {cb} wildcards for snippets too (fixes #2937008). 2010-04-19 Enrico Tröger * tagmanager/pascal.c: More fixes to prevent possible crashes by trying to free NULL pointers. * src/sidebar.c: Automatically show and hide the sidebar notebook tabs according to the amount of visible pages (patch by Adrian Dimitrov, thanks). * src/editor.c: Add a static global variable to monitor autocompletion mode in order to prevent cancellation of the struct/class (C/C++) auto completion list (patch by Thomas Martitz, thanks). * src/socket.c: When starting and trying to access the Unix Domain socket of a potentially running instance, first compare file ownership with the user id of the running process to prevent accessing a wrong socket file (part of #2985463, this might not yet be the final solution). 2010-04-19 Nick Treleaven * plugins/filebrowser.c: Synchronize popup menu and plugin preferences dialog 'Show Hidden Files' option (fixes #2989288). 2010-04-18 Enrico Tröger * tagmanager/entry.c, tagmanager/entry.h, tagmanager/include/tm_source_file.h, tagmanager/parse.c, tagmanager/parse.h, tagmanager/tm_source_file.c: Add tm_source_file_set_tag_arglist() to manually set the argument list of a tag. * tagmanager/python.c: Use tm_source_file_set_tag_arglist() to set the argument list field of Python class tags to the argument list of their __init__() methods. Backport a fix from CTags SVN to prevent possible crashes by trying to free NULL pointers. 2010-04-17 Enrico Tröger * tagmanager/txt2tags.c: Remove duplicate code from Txt2Tags parser. Remove the title control characters ('=') when parsing titles. Also parse numbered titles (closes #2984703). * doc/geany.html, doc/geany.txt, src/keybindings.c, src/keybindings.h, src/plugindata.h: Add 'Remove Markers' and 'Remove Error Indicators' keybindings. Add missing documentation for 'Reset Zoom' keybinding. * tagmanager/php.c: Another attempt to fix the PHP parser regexp for parsing functions. Fix wrong parsing of function arguments when those contain nested brackets (as reported by Harold Aling). * src/notebook.c: Fix Ctrl-Click on notebook tab if Numpad is active. 2010-04-11 Enrico Tröger * geany.glade, doc/geany.txt, plugins/geanyfunctions.h, src/callbacks.c, src/interface.c, src/keyfile.c, src/plugindata.h, src/plugins.c, src/prefs.c, src/toolbar.c, src/toolbar.h, src/ui_utils.c, src/ui_utils.h: Add option 'System Default' for toolbar icon style and size to use the GTK default value. * geany.glade, src/callbacks.c, src/callbacks.h, src/interface.c, src/toolbar.c, src/toolbar.h: Shorten the toolbar popup menu, only provide items for Toolbar Preferences and to Hide the toolbar. * src/toolbar.c: Instantly update the toolbar icon size and style when the corresponding global GTK settings are changed. * doc/geany.1.in, doc/geany.txt, src/main.c, src/main.h, src/plugindata.h, src/socket.c: Add new command line option --list-documents to return a list of currently opened documents (closes #2979933). 2010-04-09 Frank Lanitz * plugins/htmlchars.c: Make plugin remember whether replacement of special characters was activated even after restart of Geany or reloading of plugin. 2010-04-09 Nick Treleaven * src/editor.c: Fix inserting snippets with an indent when using Mac CR line endings. * src/callbacks.c: Update status bar after using Document->Set Line Endings. * src/editor.c: Improve API docs for editor_insert_text_block(). 2010-04-08 Nick Treleaven * src/editor.c: Refactor snippets_complete_constructs(). Remove an unnecessary TODO. * src/editor.c: Fix indenting a snippet when there is whitespace after the snippet key name. 2010-04-07 Enrico Tröger * doc/geany.txt, doc/geany.html: Improve wording. * src/build.c, src/msgwindow.c: Fix disabled compiler message tracking if using indicators to show build errors is disabled (closes #2982834). 2010-04-07 Nick Treleaven * scintilla/Editor.cxx: Backport fix from Scintilla CVS to fix using SCI_GETSELECTIONSTART and SCI_GETSELECTIONEND with rectangular selections. This fixes replacing in a rectangular selection. 2010-04-06 Nick Treleaven * src/filetypes.c: Re-detect any document filetypes set to None after reloading filetype extensions (closes #2979661). * src/editor.c: Fix showing '...' item last instead of first for document word completion. 2010-04-05 Enrico Tröger * data/filetypes.perl: Adjust Perl Compile command to use the -c command line option to perform a syntax check instead of using the deprecated ByteCompile module. Add error_regex to parse error messages and warnings when performing syntax checks on Perl files. 2010-04-05 Nick Treleaven * src/keybindings.c, src/keybindings.h, doc/plugins.dox: Add API docs for keybinding enums. * src/notebook.c, doc/geany.txt, doc/geany.html: Make Ctrl-click on any notebook tab switch to the last used document. 2010-04-01 Nick Treleaven * src/geanymenubuttonaction.c, src/geanymenubuttonaction.h, src/geanyentryaction.c, src/geanyentryaction.h, src/geanywraplabel.c: Cache G_TYPE_INSTANCE_GET_PRIVATE() result when initializing an object for efficiency. 2010-03-31 Nick Treleaven * plugins/classbuilder.c: Beep if the user hasn't entered a class name on pressing OK. * src/search.c: Fix replacing '^' regex. * src/plugindata.h, src/stash.c, src/stash.h, src/plugins.c, plugins/geanyfunctions.h: Add Stash widget functions to API. * configure.ac: Revert commit to use AC_PATH_PROG instead of 'which' (fixes #2973764). 2010-03-30 Nick Treleaven * THANKS, src/vte.c: Apply patch from Yoann Le Montagner to set VTE bold color (thanks, fixes #2976905). * wscript, src/plugindata.h, src/stash.c, src/stash.h, src/plugins.c, src/Makefile.am, doc/plugins.dox, doc/stash-example.c, plugins/geanyfunctions.h, plugins/geanyplugin.h: Add Stash setting functions to API. Remove unnecessary argument to stash_group_load_from_file(). * src/geanyobject.c, plugins/classbuilder.c: Don't generate FOO_GET_PRIVATE() macro because caching the result in Foo::priv can be much more efficient. 2010-03-25 Enrico Tröger * src/editor.c: Fix cursor positioning when toggling comments (patch by Thomas Martitz, thanks). 2010-03-25 Peter Scholtens * src/keybindings.[hc]: Added Control+0 for zoom reset, see suggestion from #2969886. 2010-03-25 Nick Treleaven * src/search.c, src/document.c: Fix wrong selection range after Replace in Selection. 2010-03-20 Enrico Tröger * src/win32.c: Make CreateChildProcess() working with Unicode strings, e.g. directory names (closes #2972606). * geany.nsi: Remove reference to already removed latex.tags file. Future releases probably still depend on GTK 2.16. * scintilla/ScintillaGTK.cxx: Backport fix from Scintilla CVS to not paste text beyond the end of lines (closes #2969096). * plugins/htmlchars.c, src/geany.h, src/keybindings.c, src/main.c, src/plugindata.h: Deprecate GEANY_WINDOW_MINIMAL_WIDTH/GEANY_WINDOW_MINIMAL_HEIGHT to not set Geany's minimum window size anymore (closes #2972992). As replacement, add GEANY_DEFAULT_DIALOG_HEIGHT. 2010-03-19 Nick Treleaven * src/stash.c: Make adding string and string vector settings initialise the setting to NULL for safety. * src/utils.c, src/stash.c, src/stash.h, doc/stash-example.c: Add stash_group_load_from_file() and stash_group_save_to_file(). 2010-03-18 Nick Treleaven * data/filetypes.common: Set default for wrapped lines to show marker at end of line only (more expected and doesn't change line alignment - closes #2972386). * src/toolbar.c, src/toolbar.h, src/prefs.c, src/prefs.h, src/pluginutils.c, doc/plugins.dox: Improve API docs contents page by listing all commonly-used files. Fix 'Date' appearing twice on the date line. Don't generate API docs for prefs.h, toolbar.h (unused). Move some '@file' doc-comments to the .c file. * src/interface.c, geany.glade: Add frame for 'Printing' prefs dialog page. * src/sidebar.c, src/project.c, src/prefs.c, src/stash.c, src/stash.h, src/keyfile.c, src/keyfile.h, src/search.c, src/plugins.c, doc/stash-example.c: Rename Stash data types to be independently named from Geany (so Stash can be reused for other projects). Rename GeanyPrefGroup to StashGroup. 2010-03-17 Nick Treleaven * tagmanager/python.c: Apply patch from Colomban Wendling to parse Python lambda functions (thanks) - modified to only parse toplevel or class member lambdas. * src/stash.c, src/stash.h, doc/Doxyfile.in, doc/Makefile.am, doc/stash-example.c: Add doc-comments for Stash setting functions. Add an example file showing usage of Stash. (Not enabled yet until added to the plugin API). 2010-03-17 Lex Trotman * src/build.c: Fix using return value without checking return status, caused incorrect sensitivity settings on build dialog. 2010-03-16 Nick Treleaven * HACKING: Add tip about gcc optimization & warnings/debugging. Add Testing section. Update Libraries section about synchronizing with other projects. 2010-03-15 Enrico Tröger * src/ui_utils.c: For now revert the recent patch which set real_path of newly open non-existent configuration files as this seems hackish and causes 'file not found' warnings. * wscript: Fix/Improve GIT repository detection (patch by Thomas Martitz, thanks). * plugins/geanyfunctions.h, src/plugindata.h, src/plugins.c, src/utils.c: Add utils_copy_environment() to the plugin API. 2010-03-15 Nick Treleaven * src/utils.c, src/utils.h, src/sciwrappers.c, src/dialogs.c, src/navqueue.c, src/msgwindow.c, src/filetypes.c, src/document.c, src/main.c: Use 3rd person for more API dox. Change 'This is a wrapper function for...' to 'Wraps...' in brief descriptions. Change 'After all...' to 'Afterwards...'. * src/interface.c, geany.glade: Apply patch from Eugene Arshinov to make frame packing/alignment more consistent (thanks). 2010-03-12 Nick Treleaven * src/ui_utils.c: Fix ui_button_new_with_image() to call gtk_button_set_image() so that gtk_button_[sg]et_label() work as expected. * src/build.c, src/dialogs.c, src/dialogs.h, src/callbacks.c: Make Build Commands dialog show menu item labels as a button (to help show that menu labels don't normally need to be edited & display the mnemonic correctly). Clicking shows an input dialog to set a new menu item label. Split dialogs_show_input() into 2 functions: one simple, one for a persistent dialog. Fix possible double-destroy of input dialog when closed by user. * src/dialogs.c: Fix not destroying 'Make Custom Target' input dialog after first use (oops). * src/project.c: Make Long Line Marker settings for existing projects default to general settings instead of 0 (thanks to Eugene Arshinov). * src/utils.c, src/ui_utils.h, src/utils.h, src/highlighting.c, src/keybindings.c, src/sciwrappers.c, src/plugindata.h, src/filetypes.c, src/filetypes.h, src/document.c, src/pluginutils.c, src/document.h, src/editor.c, src/editor.h, src/ui_utils.c: Use 3rd person (gets not get) for API function brief descriptions. Avoid using 'convenience function' in API brief descriptions. 2010-03-10 Nick Treleaven * doc/geany.txt, doc/geany.html: Warn about some GNU extensions for regular expressions & clarify some points. * src/interface.c, src/keybindings.c, src/project.c, src/project.h, src/prefs.c, src/plugindata.h, src/keyfile.c, src/editor.c, src/editor.h, geany.glade: Apply patch from Eugene Arshinov to add project long line marker customisation (thanks). * src/interface.c, geany.glade: Edit/tidy 'Long line marker' labels. 2010-03-10 Lex Trotman * src/build.c, src/project.c: Fix crash due to NULL in project build preferences (thanks to Wolfgang Ocker). 2010-03-09 Nick Treleaven * src/utils.c, src/utils.h, src/search.c, src/search.h, src/document.c, doc/geany.txt, doc/geany.html: Merge gnu-regex branch: Use POSIX system/GNU regex engine for find & replace 'Use regular expressions' option. This alters regex syntax a bit - see the docs for details; we now support '?' operator and replacement backslash escaping is more standard. Make regex search imply replacing escaped chars. Allow \0 backreference replacement for the whole match. Note: Replace All may be slower; if this is a problem please let me know. - code: Add argument to utils_str_replace_escape() for keeping uninterpreted backslash escapes e.g. '\\', '\e'. * scintilla/LexMarkdown.cxx: Backport minor formatting/style changes from Scintilla project. * doc/geany.txt, doc/geany.html: Remove warning about no visual indication for zero-column-mode editing. 2010-03-09 Enrico Tröger * wscript: Skip unavailable languages in LINGUAS (thanks to Christian Dywan). 2010-03-07 Enrico Tröger * wscript, scintilla/*, scintilla/include/*: Update Scintilla to version 2.03. * geany.glade, doc/geany.txt, doc/geany.html, src/editor.c, src/editor.h, src/interface.c, src/keyfile.c, src/plugindata.h: Add preference for virtual spaces. * src/log.c: Fix wrong default response for the Debug Messages dialog. * src/dialogs.c: Fix crashes when using Save As with no open files (closes #2964406). * src/document.c: Fix duplicate mnemonics on 'Resave missing file' dialog, also move the question from the secondary to the main text to be more compatible with the Gnome HIG. Fix broken 'Save' action in 'Resave missing file' dialog. * tagmanager/php.c: Improve PHP parser to parse also the argument lists of PHP functions. * src/prefs.c: Correctly set the parent widget for the keybinding overwrite confirmation dialog. * src/dialog.c: Fix setting the icon for some dialogs if the parent itself is also a dialog. * src/ui_utils.c: When editing non-existent config files using the Tools->Configuration Files menu, explicitly set the real_path to avoid presenting the Save As dialog when saving the file (patch by Tony Rick, thanks). * src/callbacks.c: Focus the editor widget after hiding the sidebar when it had the input focus (patch by Can Koy, thanks). Properly show/hide the mesages window when using the View menu item (closes #2961282). * plugins/filebrowser.c: After opening files, focus the editor widget (based on a patch by Can Koy, thanks). * plugins/filebrowser.c, plugins/geanyfunctions.h, src/msgwindow.c, src/plugindata.h, src/plugins.c, src/sidebar.c, src/ui_utils.c, src/ui_utils.h, src/vte.c: Add and use convenience function ui_is_keyval_enter_or_return() and add it to the plugin API. 2010-03-05 Frank Lanitz * src/about.c, THANKS, po/ast.po: Added Asturian translation. Thanks to Marcos Costales for providing. 2010-02-28 Dominic Hopf * src/log.c: Fix keyboard accelerators in debug messages window (Thanks Can Koy). 2010-02-28 Enrico Tröger * scintilla/LexR.cxx: Backport R lexer from Scintilla CVS to fix case sensitive keywords (Scintilla bug #2956543). * src/sidebar.c, src/about.c, THANKS: Make Space on the symbol and document list not focus the editor widget while Enter does (closes #2919444, patch by Can Koy, thanks). * src/document.c, src/document.h: Fix document_try_focus() to make it work with the sidebar document list as well. * src/msgwindow.c, src/msgwindow.h, src/ui_utils.c, src/ui_utils.h: Make Space on the compiler and messages widgets not focus the editor widget while Enter does (patch by Can Koy, thanks). * src/editor.c: Fix wrongly auto-detected multiline comments (patch by Eugene Arshinov, thanks). 2010-02-28 Frank Lanitz * src/ui_utils.c: Show number of lines of current document inside statusbar. Thanks to Can Koy for providing the patch. 2010-02-24 Nick Treleaven * src/keybindings.c, doc/geany.txt, doc/geany.html: Make Switch to Editor keybinding reshow the document statistics line, so user doesn't have to move the cursor. 2010-02-22 Enrico Tröger * data/filetypes.r: Update keywords for the R language (patch by Jon Senior, thanks). 2010-02-21 Dominic Hopf * doc/geany.txt: Fix the instruction how to insert unicode characters (thanks Tony Rick). 2010-02-21 Enrico Tröger * scripts/create_py_tags.py: Minor fixes. Replace tabs by spaces. * plugins/genapi.py: Minor fixes. Replace tabs by spaces. * tagmanager/r.c, plugins/geanyfunctions.h, src/about.c, src/filetypes.c, src/symbols.c, tagmanager/Makefile.am, tagmanager/makefile.win32, tagmanager/parsers.h, wscript, THANKS: Add R tagmanager symbol parser (patch by Jon Senior, thanks). * doc/geany.html, doc/geany.txt, src/keybindings.c, src/keybindings.h, src/plugindata.h, src/sidebar.c, src/sidebar.h: Add keybindings to switch to the sidebar's Document and Symbol list as well as to the Message Window's current tab (patch by Eugene Arshinov, thanks). * data/filetypes.r: Update primary keywords for the R language (patch by Jon Senior, thanks). 2010-02-20 Dominic Hopf * doc/geany.txt: Add more detailed hints about reloading configuration (thanks to Tony Rick). * data/filetypes.javascript: Correct the keyword list for JavaScript (thanks to Jonas). 2010-02-14 Enrico Tröger * New release: Geany 0.18.1 "Balfour". 2010-02-13 Enrico Tröger * src/keybindings.c: Add special cases for handling the Select All keybinding (Ctrl-A) in the toolbar search and goto line text entries (closes #2948040). Strip trailing spaces after reflowing a paragraph, patch by Dominik Wagenfuehr, thanks (closes #2945497). 2010-02-07 Enrico Tröger * src/geanymenubuttonaction.c, src/templates.c: Partly revert last commit: Unref the new files toolbar menu when freeing templates as it was done before but unref it *after* the menu has been removed from the GeanyMenuButtonAction. * src/encodings.c: Fix possible endless loop when trying to detect the encoding of non-text files (patch by Alexey Antipov, thanks). 2010-02-06 Enrico Tröger * src/document.c: Allow saving remote files using g_file_set_contents() as well (patch by Алексей Антипов, thanks). * data/filetypes.python: Adjust style for secondary keywords to be less aggressive. Add Python 2.5 builtins keywords. * src/geanymenubuttonaction.c, src/templates.c: Unref the new files toolbar menu when setting a new menu to fix possible crashes when reloading configuration. * src/filetypes.c: When reloading configuration, process the current document at last so the symbol list will be updated correctly. 2010-02-01 Enrico Tröger * src/symbols.c: Explicitly read filetype configuration files before generating global tags to get settings for custom filetypes. 2010-02-01 Nick Treleaven * src/plugins.c: Fix GLib warning when toggling 'no plugins available' item. 2010-01-31 Enrico Tröger * icons/Makefile.am: Include geany.ico in the distribution tarball. * Makefile.am: Fix 'make distcheck' by removing data/latex.tags from EXTRA_DIST. * scripts/create_py_tags.py: Make the script a bit more robust with newer Python versions. * src/templates.c: Use utils_spawn_sync() instead of g_spawn_sync(). 2010-01-31 Frank Lanitz * plugins/export.c: Close meta tag for export date properly. 2010-01-28 Enrico Tröger * geany.spec.in: Update RPM Spec file (patch by Dominic Hopf, thanks). 2010-01-28 Nick Treleaven * src/plugindata.h: Fix renaming sci_send_message(), sci_send_command() function pointers. 2010-01-25 Nick Treleaven * src/highlighting.c, src/highlighting.h, src/sciwrappers.c, src/plugindata.h, doc/Doxyfile.in, doc/pluginsymbols.c, plugins/geanyfunctions.h, plugins/Makefile.am, plugins/pluginmacros.h, plugins/genapi.py, wscript: Use full function name for GeanyFunctions function pointers. This avoids naming conflicts e.g. with C++'s 'new' keyword. Remove deprecated header pluginmacros.h - use geanyfunctions.h instead. 2010-01-24 Enrico Tröger * src/utils.c, src/utils.h, src/vte.c: Add utils_copy_environment() and make use of it. * data/snippets.conf, doc/geany.html, doc/geany.txt, src/callbacks.c, src/editor.c, src/templates.c, src/templates.h: Add new special template wildcard "{command:...}" to use the output of a command in templates. Adjust template functions to mostly work with GeanyDocuments. Minor cleanups in the template code. * src/gb.c: Replace the old icons with smiley icons from the Rodent icon theme. Fix showing the same icon for two or more slots. Minor cleanups. * src/editor.c, src/editor.h, src/keybindings.c: Rename fold_symbol_click() to editor_toggle_fold(). Use editor_toggle_fold() when the 'Toggle current fold' keybinding was used to respect the 'Fold/unfold all children' preference (closes #2935053). 2010-01-22 Nick Treleaven * src/build.c: Prevent possible segfault in get_build_group(). * src/callbacks.c: Fix GLib warning & beep if trying to insert multiline comment for a filetype that doesn't support it. 2010-01-18 Nick Treleaven * doc/plugins.dox: Add gcc commands to build a plugin to the HowTo. * src/search.c, src/document.c, src/document.h: Show 'Replaced X matches in Y documents' message when using Replace in Session. 2010-01-17 Enrico Tröger * scripts/plugin_test.c: Add a little test program which can load and test Geany plugins to verify it is loadable at runtime and all necessary symbols are defined. * doc/plugins.dox, src/geanyobject.c, src/geanyobject.h, src/main.c, src/plugindata.h: Add new signal: "geany-startup-complete" which is sent once all initialization and startup tasks has been done. * README.I18N, configure.ac, wscript, po/LINGUAS: Remove po/LINGUAS from the repository. Generate it automatically if needed by reading available message catalogs from the po directory. Also respect the LINGUAS environment variable properly. 2010-01-16 Frank Lanitz * src/editor.c: Remove editor_auto_latex() from Geany core and move it to geanyLaTeX plugin. 2010-01-12 Enrico Tröger * src/editor.c, src/templates.c, src/templates.h: Refactor templates_replace_all() into templates_replace_valist() to save some code duplication. 2010-01-11 Frank Lanitz * plugins/geanyfunctions.h, src/editor.c, src/editor.h, src/plugindata.h, src/plugins.c: Add editor_insert_text_block() to plugin API. 2010-01-01 Enrico Tröger * *.*: Update copyright information. * src/keybindings.c, src/keybindings.h, src/plugindata.h, doc/geany.txt, doc/geany.html: Add keybinding to open the last closed tab (closes #2912692). 2009-12-31 Enrico Tröger * autogen.sh, configure.in, configure.ac: Rename configure.in to configure.ac. * plugins/geanyfunctions.h, src/plugins.c, src/plugindata.h, src/sciwrappers.c: Add sci_find_text() to the plugin API. * doc/geany.html, doc/geany.txt, geany.glade, src/callbacks.c, src/interface.c, src/prefs.c: Add a checkbox in the preferences dialog to explicitly toggle the visibility of the sidebar (closes #2923340). 2009-12-29 Enrico Tröger * src/editor.c, src/plugins.c, src/plugindata.h, plugins/geanyfunctions.h: Add editor_get_eol_char_name(), editor_get_eol_char_len() and editor_get_eol_char() to the plugin API. * src/callbacks.c, src/plugins.c, src/plugins.h: Fix sensitivity of the Edit->Plugin Preferences menu item if plugins are loaded which do not provide a configuration dialog. * scripts/create_py_tags.py: Rewrite and extend the Python tags parsing script to use Python's inspect module to read symbols from Python modules including scope information. * data/filetypes.restructuredtext: Add the default comment character sequence for reStructuredText. * src/callbacks.c: Show the Find/Goto dialogs if the corresponding toolbar buttons are clicked but their text fields are not part of the toolbar (#2920807). * data/filetypes.common, doc/geany.html, doc/geany.txt, src/highlighting.c: Add new style to change foreground and background colours for calltips (patch by Dimitar Zhekov, thanks, closes #2919229). * src/search.c: Remember the window position of the Find, Replace and Find in Files dialogs (closes #2877988). 2009-12-26 Frank Lanitz * doc/plugins.dox: Fix a minor typo inside plugin API reference. 2009-12-20 Enrico Tröger * src/dialog.c, src/dialogs.h, src/document.c, src/prefs.c: Make dialogs_show_prompt() more flexible to take up to three button/response code pairs to be shown. Add a close button to the dialog when asking to Re-Save a deleted file (closes #2916954, based on a patch by Dominik Stadler, thanks). * src/editor.c: Fix LaTeX environment auto completion with CR/LF line endings. Add some sanity checks. * src/document.c: When closing a document after it was deleted from the filesystem, don't ask whether it should be saved first. Mark the document only as changed if it is not closed afterwards. Prevent possible segfaults if the document was closed when it is missing from the filesystem. * src/keybindings.c, src/keyfile.c, src/main.c, src/msgwindow.c, src/msgwindow.h, src/prefs.c: Add MessageWindow::scribble and use it instead of searching the widget pointer everytime. * src/keyfile.c, src/msgwindow.c, src/msgwindow.h, src/ui_utils.h: Add preferences for hiding single tabs from the messages window (no GUI preferences yet, still to be implemented). * src/callbacks.c, src/prefs.c, src/toolbar.c, src/toolbar.h: Set the correct parent window for the toolbar editor dialog (closes #2913334). * src/win32.c, src/win32.h, src/ui_utils.c: Rename win32_show_project_folder_dialog() to win32_show_folder_dialog() as it is not related and not used by any project management related code. * src/ui_utils.c, src/win32.c, src/win32.h, src/dialogs.c: Rename win32_show_file_dialog() to win32_show_document_open_dialog() as it is specialised for opening documents. Implement win32_show_file_dialog() as a generic file open dialog and use it with ui_path_box_new(). 2009-12-20 Frank Lanitz * src/editor.c: Extend auto_latex() function to check whether an environment has been closed within the next lines to avoid auto adding double \end{}. * data/latex.tags: Remove LaTeX tags from SVN. Can be found at http://download.geany.org/contrib/tags/ if needed. 2009-12-19 Enrico Tröger * src/callbacks.c, src/dialogs.c, src/document.c, src/document.h: Add document_need_save_as(). Show the Save As also for documents created from filetype templates instead of saving them directly with the untitled filename. 2009-12-09 Nick Treleaven * geany.glade, src/interface.c: Move 'Send Selection to Terminal' menu item from Format to Commands submenu. * src/msgwindow.c: When going to a build error, try the current document's path if the parsed filename doesn't exist. (This can happen when we receive build messages in the wrong order - after the 'Leaving directory' messages). * src/msgwindow.c: Refactor msgwin_goto_compiler_file_line(). * src/interface.c, src/keybindings.c, geany.glade: Capitalize, add mnemonics, sync with kb.c the Edit->Commands menu item labels. * src/search.c: Refactor/reformat on_replace_dialog_response(). 2009-12-08 Enrico Tröger * geany.spec.in: Improve geany.spec (split the package into a binary and devel package, update BuildRequires and other minor improvements). Patch by Dominic Hopf, thanks. 2009-12-08 Nick Treleaven * src/filetypes.c, src/filetypes.h: Make group for custom filetypes. * data/filetypes.Genie.conf, data/filetype_extensions.conf: Add custom filetype Genie. 2009-12-07 Nick Treleaven * src/highlighting.c: Highlight D & Java types from a global tags file. * src/highlighting.c, doc/geany.txt, doc/geany.html: Add debug message warning if recursive lexer_filetype is set. * src/highlighting.c, src/sciwrappers.c, src/sciwrappers.h: Remove duplicate sci_set_keywords(), make argument const. * src/highlighting.c: Only show debug message once if recursive lexer_filetype is set. Tidy highlighting_init_styles code for filetype None handling. * scintilla/makefile.win32, scintilla/KeyWords.cxx, scintilla/LexVerilog.cxx, scintilla/Makefile.am, src/highlighting.c, src/filetypes.c, src/filetypes.h, src/symbols.c, THANKS, tagmanager/parsers.h, tagmanager/makefile.win32, tagmanager/verilog.c, tagmanager/Makefile.am, data/filetypes.verilog, data/filetype_extensions.conf, wscript: Apply patch from Kelvin Gardiner to add Verilog filetype (thanks). * src/highlighting.c: Fix segfault on startup (oops). * data/filetypes.verilog: Fix using common style colours for Verilog. 2009-12-03 Nick Treleaven * src/highlighting.c, data/filetypes.cpp, data/filetypes.vala, data/filetypes.glsl, data/filetypes.cs, data/filetypes.c: Move C-like filetype properties into configuration files. * src/highlighting.c, data/filetypes.cpp, data/filetypes.cs, data/filetypes.c: Remove now unnecessary "styling_within_preprocessor" C style key. * src/highlighting.c, data/filetypes.cpp, data/filetypes.vala, data/filetypes.glsl, data/filetypes.cs: Use lexer_filetype=C configuration file key instead of duplicate styleset functions for C++, C#, GLSL, Vala. 2009-12-02 Nick Treleaven * doc/geany.txt, doc/geany.html: Warn about not using BOM for configuration files (confuses GKeyFile parser, at least on my system). * src/filetypes.c: Add/improve debug messages for custom filetypes. 2009-11-30 Frank Lanitz * data/latex.tags: Add a couple of further latex-beamer commands to list of LaTeX tags. 2009-11-30 Enrico Tröger * plugins/filebrowser.c: Add an in-entry clear icon to the filebrowser plugin's filter entry (patch by Dominic Hopf, thanks). * src/prefs.c, src/ui_utils.c: Fix two compiler warnings about possibly uninitialised variables. 2009-11-29 Enrico Tröger * src/main.c, src/main.h, src/plugins.c, src/plugindata.h, plugins/geanyfunctions.h: Add main_is_realized() to the plugin API. * tagmanager/include/tm_tagmanager.h: Update partly outdated and wrong doc comment. * src/main.c, src/main.h, src/socket.c: Allow opening Geany projects remotely. * doc/geany.txt, doc/geany.html, src/vte.c, src/vte.h, src/keyfile.c: Add a hidden pref to allow executing text which was sent to the terminal directly, i.e. do not strip trailing newline characters. Also fix the stripping of trailing newline characters if there was more than one. 2009-11-26 Frank Lanitz * src/about.c, THANKS: Add Peter Scholtens and Ayke van Laethem to list of translators. Move Kurt de Bree into section of previous translators. 2009-11-26 Nick Treleaven * src/about.c, src/symbols.c, THANKS, tagmanager/vhdl.c: Fix VHDL symbol list to display all tags (patch from Kelvin Gardiner, thanks). 2009-11-24 Nick Treleaven * src/highlighting.c: Make stylesets take a ft_id argument so they can be reused fully with custom filetypes, so custom styles and keywords can be set. * src/highlighting.c: Fix setting filetype properties when both the system and the user file have properties set. * src/symbols.c, tagmanager/vhdl.c: Parse VHDL signals. * src/highlighting.c: Fix lexer settings for custom filetypes. 2009-11-23 Enrico Tröger * tagmanager/php.c: Remove duplicate regular expression for parsing classes. Fix and improve parsing of constants (patch by Harold Aling, thanks). * doc/geany.1.in, doc/geany.html, doc/geany.txt, src/main.c, src/main.h, THANKS, src/about.c: Add new command line option "--socket-file" to be able to specify separate socket filenames for instances (closes #2896027, patch by Jörn Reder, thanks). * src/keybindings.c, src/keybindings.h: Add keybindings_check_event() to manually check GdkKeyEvents against Geany's keybindings. * src/callbacks.c, src/utils.c, src/utils.h: Add and use utils_get_help_url(). * geany.glade, src/interface.c, src/prefs.c: Add a Help button to the preferences dialog. Handle Help keybinding events for the preferences dialog especially and open the manual with the corresponding anchor link to the current preferences page (same goes for the new Help button). 2009-11-22 Enrico Tröger * src/toolbar.c, src/geanymenubuttonaction.c, src/geanymenubuttonaction.h: Use separate tooltips for toolbar menu buttons and their attached drop-down arrows. * tagmanager/latex.c: Improve parsing of sections and chapters by ignoring shortnames like \section[shortname]{label} (closes #2890477). 2009-11-19 Nick Treleaven * src/geanymenubuttonaction.c: Try to fix Gtk warning when using Tools->Reload Configuration. 2009-11-18 Nick Treleaven * src/highlighting.c, doc/geany.txt, doc/geany.html, data/filetypes.nsis, data/filetypes.php, data/filetypes.perl, data/filetypes.pascal, data/filetypes.docbook, data/filetypes.python, data/filetypes.conf: Use filetypes.foo [lexer_properties] group instead of hardcoding lexer properties (more flexible e.g. for custom filetypes). * src/highlighting.c, data/filetypes.xml, data/filetypes.html: Replace filetypes.xml html_asp_default_language key with filetypes.html asp.default.language property in [lexer_properties] group. 2009-11-17 Enrico Tröger * doc/geany.txt, doc/geany.html: Fix slightly wrong description of how to insert Unicode characters. * src/ui_utils.c: Implement GTK_FILE_CHOOSER_ACTION_OPEN mode in ui_setup_open_button_callback(). * src/prefs.c, src/prefs.c, src/vte.c: Refactor color and font button callback functions in the preferences dialog. Move the VTE related callback functions into vte.c. Make use of ui_setup_open_button_callback(). * src/printing.c: Improve printing status texts (patch by Dominic Hopf, thanks). * src/prefs.c, src/vte.c: Use the default dialog title set by ui_setup_open_button_callback() to be more consistent and to save one string. 2009-11-16 Nick Treleaven * tagmanager/c.c: Separate DKinds from CKinds. Don't generate macro tags for D, Java. 2009-11-12 Nick Treleaven * tagmanager/ctags.c, tagmanager/general.h: Make TagManager Assert statements cause g_warning on failure. * src/keybindings.c: Fix reflow paragraph command when cursor < anchor using sci_fix_selection(). 2009-11-10 Nick Treleaven * tagmanager/perl.c: Fix Geany segfault with constant tags (#2895168). * src/symbols.c: Fix invalid tree iter access when using tv_iters.tag_other but not using tv_iters.tag_variable. * HACKING, tagmanager/perl.c: Fix parsing Perl format statements ("other" type doesn't seem to work). * tagmanager/tm_tag.c, tagmanager/perl.c, HACKING: Fix using "other" tag type. 2009-11-09 Enrico Tröger * src/vte.c: Remove useless comment about applying settings only when libvte.so could be loaded which is only displayed *if* libvte.so is loaded. * src/editor.c: Allow autocompletion for HTML entities even within a word. * src/geanymenubuttonaction.c: Only set the menu of the button if a non-empty GtkMenu is passed to geany_menu_button_action_set_menu() so the menu arrow keeps insensitive. 2009-11-07 Nick Treleaven * tagmanager/c.c: Fix parsing some Java code (e.g. filetypes.java) after r4407. 2009-11-06 Nick Treleaven * tagmanager/c.c: Parse D functions with contracts (fixes #1885480). Parse D alias statement like typedef. (Ignore some more D keywords). * tagmanager/c.c: Fix creating D interface tags properly. * tagmanager/c.c: Parse contents of D extern{} and version{} blocks. 2009-11-05 Enrico Tröger * src/main.c: Remove old code. 2009-11-05 Nick Treleaven * src/plugindata.h, HACKING: Deprecate PLUGIN_KEY_GROUP() macro - use plugin_set_key_group() instead. * src/callbacks.c: Show number of files saved on status bar when using Save All. * src/highlighting.c: Use default color scheme if pref color scheme file doesn't exist. * src/keybindings.c: Fix moving correct lines after selecting whole line(s). 2009-11-04 Enrico Tröger * tagmanager/makefile.win32: Fix broken build on Windows because of a typo (patch by Timothy Boronczyk, thanks). 2009-11-04 Nick Treleaven * src/highlighting.c, src/highlighting.h, src/keyfile.c, src/main.c, src/editor.h: Add 'View->Editor->Color Schemes' menu, for now only shown if color scheme files exist in a colorschemes config directory. Color scheme files must end in ".conf" and currently only the [named_styles] section is read. * src/templates.c, src/utils.c, src/highlighting.c, src/utils.h: Add utils_get_config_files(). * src/highlighting.c: Fix issue with default color not being reset if overridden with a system default color. * src/highlighting.c: Only reload filetype files when changing color scheme, not all configuration files. * src/filetypes.c, src/document.c, src/document.h, doc/Doxyfile.in: Deprecate documents_foreach() as it looks more like a function; use foreach_document() instead. Generate dox even for GEANY_DISABLE_DEPRECATED declarations. 2009-10-30 Nick Treleaven * src/stash.c, src/stash.h: Use typedef instead of pointer for widget_id function arguments. 2009-10-29 Nick Treleaven * src/pluginutils.c: Don't expand Plugin Preferences page spacing vertically to fill the height of the dialog. * src/interface.c, src/keybindings.c, src/keybindings.h, src/prefs.c, geany.glade, plugins/splitwindow.c: Allow GeanyKeyBinding label field to contain underscores, which won't be displayed by Geany. This saves adding near-duplicate translation strings. Add mnemonics for 3 Edit->Format menu items. Add keybindings_get_label(). * src/interface.c, geany.glade: Use GtkVBoxes for Encoding prefs combo boxes to reduce width of prefs dialog. 2009-10-28 Nick Treleaven * src/ui_utils.c: Desensitize Edit->Commands menu item when no docs are open. * src/interface.c, src/keybindings.c, src/callbacks.c, src/callbacks.h, geany.glade: Add 'Reflow, Transpose, Smart line indent' Edit->Format menu items. * src/sciwrappers.c, src/sciwrappers.h, src/editor.c: Add general function sci_get_string() that works with any string buffer messages that follow the Windows message convention. * src/pluginprivate.h, src/interface.c, src/keybindings.c, src/keybindings.h, src/callbacks.c, src/callbacks.h, src/pluginutils.c, src/pluginutils.h, geany.glade: Add 'Edit->Plugin Preferences' menu item and keybinding. Don't include plugindata.h in pluginutils.h because it redefines the GEANY() macro for plugin use. * doc/geany.txt, doc/geany.html: Update for Plugin Preferences keybinding. 2009-10-27 Nick Treleaven * src/editor.c: Sort document word completion list. * src/interface.c, src/keybindings.c, src/callbacks.c, src/callbacks.h, geany.glade: Add some useful commands to editor popup menu under "Commands" submenu (thanks to Lex). Move 'Duplicate line or selection' from Format -> Commands submenu. * src/prefs.c, src/ui_utils.c, doc/geany.txt, doc/geany.html: Enable switching the sidebar to the right on Windows again, as it apparently works after all. * src/editor.c: Fix using tab to autocomplete in some other situations that word part completion doesn't apply in. * src/templates.c, src/interface.c, src/ui_utils.c, geany.glade: Add Edit->Commands submenu which is shared with the editor popup menu. * src/interface.c, src/keybindings.c, src/ui_utils.c, geany.glade: Change editor popup Commands submenu to start as child of menubar Edit menu, as this is more usual e.g. for keybindings initialization. * src/interface.c, src/keybindings.c, src/tools.c, src/ui_utils.c, geany.glade: Share a single Format submenu for menubar Edit and popup menu. 2009-10-26 Enrico Tröger * src/build.c: Fix a compiler warning about an uninitialised variable. * wscript: Don't install unnecessary headers: dialogs.h, main.h, plugins.h, sciwrappers.h, build.h (for the Waf build system, accordingly to r4366). 2009-10-26 Nick Treleaven * src/prefs.h, src/search.h, src/support.h, src/templates.h, src/toolbar.c, src/toolbar.h: Add missing dox for types/files in the API. * src/filetypes.h, src/Makefile.am, plugins/geanyplugin.h: Don't install unnecessary headers: dialogs.h, main.h, plugins.h, sciwrappers.h, build.h. (This helps to get compiler warnings for uses of functions not in the API). Warning: any plugins that include these headers should remove them. * src/build.c, src/build.h: Move function doc-comments to build.c so they stay in sync. Note: these functions are still not in the API. * HACKING: Add 'Doc-comments' plugin API subsection. * plugins/filebrowser.c: Fix packing configure widgets equally. Use spacing multiples of 6 as recommended by Gnome HIG. * src/prefs.c, src/ui_utils.c, doc/geany.txt, doc/geany.html: Disable switching the sidebar to the right on Windows as it will probably fail like the Split Window plugin. * src/document.c: Improve 'Detect from file' indentation pref by ignoring lines with indentation wider than 24 characters as this is more likely to be alignment than indentation. 2009-10-25 Enrico Tröger * plugins/saveactions.c: Fix adding the filetype's default extension when using the Instant Save plugin (closes #2885142). * src/main.c: Before looking for line and column numbers specified as part of a filename, ensure the file doesn't exist on disk. This allows opening of files like "test:0". * src/sidebar.c: Rename "select" variables into "selection" to avoid shadowed names. * plugins/geanyfunctions.h, src/plugins.c, src/plugindata.h: Add ui_widget_modify_font_from_string() and sci_goto_line() to the plugin API. * plugins/filebrowser.c: Rename "select" variables into "selection" to avoid shadowed names. Make use of ui_widget_modify_font_from_string(). 2009-10-23 Nick Treleaven * src/interface.c, src/ui_utils.h, src/prefs.c, src/keyfile.c, src/main.c, src/ui_utils.c, doc/geany.txt, doc/geany.html, geany.glade: Add sidebar position interface pref. 2009-10-23 Lex Trotman * doc/geany.txt, doc/geany.html: Add missing underscores to links. 2009-10-22 Nick Treleaven * src/keybindings.c, src/keybindings.h, doc/geany.txt, doc/geany.html: Add 'Move line(s) up/down' keybindings. 2009-10-22 Lex Trotman * src/build.c, src/build.h, src/filetypes.h: Include code for project filetype execute commands and fix bug in saving project filetypes list. * src/project.c, src/build.c, doc/geany.txt: Make non-project execute configuration save to filetypes not geany.conf. Fix closing of project failing to remove build commands dialog entry. 2009-10-21 Nick Treleaven * src/project.c, src/ui_utils.c: Set border width for project properties build table. * geany.glade, src/interface.c: Don't expand hard tab width alignment. 2009-10-20 Nick Treleaven * src/highlighting.c, src/filetypes.c, src/document.c, src/symbols.c, doc/geany.txt, doc/geany.html: Support loading global tags files for custom filetypes. * src/keybindings.c, src/keybindings.h, src/editor.c, src/editor.h, doc/geany.txt, doc/geany.html: Add 'Word part completion' keybinding so keys other than Tab can be used, or to clear/change the combination so Tab does full completion like before. * src/keybindings.c, src/keybindings.h, doc/geany.txt, doc/geany.html: Add 'Select to previous/next word part' keybindings. * src/keybindings.c, src/keybindings.h, doc/geany.txt, doc/geany.html: Add 'Switch to Messages' focus keybinding. 2009-10-19 Nick Treleaven * doc/geany.txt, doc/geany.html: Add 'Custom filetypes' section. * src/filetypes.c, src/filetypes.h, src/document.c, doc/geany.txt, doc/geany.html, tagmanager/tm_source_file.c, tagmanager/include/tm_source_file.h: Add filetype "tag_parser" key so custom filetypes can use an existing tag parser. Add tm_source_file_get_named_lang(). * src/highlighting.c, src/filetypes.c, src/filetypes.h, doc/geany.txt, doc/geany.html: Add filetype "lexer_filetype" key so custom filetypes can use an existing lexer. 2009-10-19 Frank Lanitz * THANKS, src/about.c: Add Xhacker Liu for his work at zh_CN translation to long list of translators. 2009-10-16 Nick Treleaven * src/sciwrappers.c: Remove unnecessary line number margin padding. * scintilla/include/Scintilla.h, scintilla/include/Scintilla.iface, scintilla/ScintillaBase.h, scintilla/ScintillaBase.cxx, src/editor.c: Improve word part autocompletion so AC list is not cancelled and reshown (this also stops the selection changing). Add SCI_AUTOCGETCURRENTTEXT message (will be sent upstream). * src/editor.c: Improve CamelCase word part autocompletion for runs of capital letters. * src/editor.c: Don't complete snippets if there's a selection. 2009-10-16 Lex Trotman * src/build.c: Fix crash opening project when Geany started with no geany.conf. 2009-10-15 Nick Treleaven * scintilla/ScintillaBase.h, scintilla/ScintillaBase.cxx, src/utils.c, src/utils.h, src/sciwrappers.c, src/editor.c, doc/geany.txt, doc/geany.html: Add word part autocompletion for the current selected item when pressing Tab - Enter still completes normally. Add foreach_str() API macro. Temporarily modify scintilla to say if tab was used for autocompletion. * src/templates.c, src/build.c, src/utils.c, src/utils.h, src/project.c, src/search.c, src/editor.c, src/ui_utils.c, plugins/classbuilder.c: Revert r4301 - utils_free_pointers() taking 4 arguments. * src/highlighting.c, src/highlighting.h, src/plugindata.h, src/document.c, src/plugins.c, plugins/geanyfunctions.h, plugins/splitwindow.c: Add highlighting_set_styles() to API, use for Split Window plugin so filetypes.common settings get set too. Make highlighting_set_styles() take GeanyFiletype pointer instead of filetype id. * src/document.c, src/editor.c, plugins/splitwindow.c: Call editor_apply_update_prefs() from editor_create_widget() so correct tab width and other settings are applied for Split Window plugin. 2009-10-14 Nick Treleaven * src/keybindings.c: Don't include trailing newlines when using reflow command. * src/notebook.c: Add stock close buttons to notebook tab popup menu. * src/plugindata.h, src/document.c, src/plugins.c, src/ui_utils.c, plugins/geanyfunctions.h: Add document_get_notebook_page() to API. Minor edits of dox. * data/templates/files/file.html, data/templates/files/file.php: Fix wrong escaping (patch by dmaphy, thanks - closes #2878138). * src/interface.c, src/ui_utils.c, geany.glade: Move Tools configuration items to top of menu. * src/keybindings.c, src/search.c: Fix warning when using Find in Files with no documents open; make keybinding work in this case. 2009-10-13 Nick Treleaven * src/notebook.c, src/plugindata.h, src/plugins.c, src/ui_utils.c, src/ui_utils.h, plugins/geanyfunctions.h, plugins/splitwindow.c: Make Split Window 'Show current document' button have a drop-down menu to select the other documents. Add new API function ui_menu_add_document_items(). 2009-10-13 Lex Trotman * src/build.c: Fix sensitivity settings for compile and build toolbar items. 2009-10-12 Nick Treleaven * src/templates.c: Don't use filetype submenus for templates (slower to navigate, often only 1 per-filetype anyway). * src/templates.c: Put old filetype template menu items in 'Old' submenu as they should be removed after the 0.19 release. * src/keybindings.c, src/keybindings.h, src/pluginutils.c: Add GeanyKeyGroup callback support, which allow keybinding callbacks to be ignored if inappropriate so a later keybinding with the same key combination can intercept it. (Also group callbacks are usually tidier than separate callbacks). Remove special handling for GEANY_KEYS_EDIT_COMPLETESNIPPET. * src/templates.c, src/build.c, src/utils.c, src/utils.h, src/project.c, src/search.c, src/editor.c, src/ui_utils.c, plugins/classbuilder.c: Make utils_free_pointers() take 4 arguments, add to API. * src/templates.c, src/tools.c, src/ui_utils.c: Fix memory leaks with gtk_container_get_children(). 2009-10-12 Lex Trotman * src/build.c: Ensure that old style build config is not loaded if it does not exist. 2009-10-12 Frank Lanitz * THANKS, src/about.c, po/LINGUAS, po/gl.po: Added Galician translation. Thanks to José Manuel Castroagudín Silva. 2009-10-11 Enrico Tröger * geany.glade, THANKS, src/about.c, src/document.c, src/encodings.c, src/interface.c: Apply set default encoding for existing files only if the files are non-Unicode (patch by Alexey Antipov, thanks). 2009-10-04 Nick Treleaven * src/highlighting.c: Move new_styleset() and preprocessor setup code into styleset_c_like(). * src/highlighting.c: Call apply_filetype_properties() from styleset_c_like(). 2009-10-03 Enrico Tröger * doc/geany.txt, doc/geany.html: Improve information about predefined keybindings which are commonly used across applications (patch by Lex Trotman, thanks). * src/printing.c: Enable embedded page setup properties in the (Unix) Print dialog on newer GTK versions (closes #2870596). * src/highlighting.c: Map global types (read from tags files) to keyword style for filetype Java. 2009-10-01 Nick Treleaven * src/templates.c: Fix wrong creation of filetype template menu items for custom filetypes. * src/highlighting.c: Use jscript_keyword for SCE_HB[A]_WORD markup styles. * src/templates.c: Group 'New with template' items by filetype submenu (currently only for toolbar menu). Show custom file template items before filetype template items. * src/templates.c, src/interface.c, src/geanymenubuttonaction.c, geany.glade: Only use one 'New with template' submenu - reparent as needed. * src/templates.c: Don't create templates/filetype.none either. * src/templates.c: Warn if custom template file no longer exists. 2009-09-30 Enrico Tröger * src/symbols.c: Add missing icon for Java packages in the Symbol List. 2009-09-30 Nick Treleaven * src/highlighting.c, data/filetypes.vala: Add Vala keywords to conf file. * src/templates.c, doc/geany.txt, doc/geany.html: Read custom file templates from $prefix/share/geany/templates/files as well as user dir. * src/templates.c, data/templates, data/templates/files, data/templates/files/file.rb, data/templates/files/file.html, data/templates/files/main.java, data/templates/files/main.c, data/templates/files/main.cxx, data/templates/files/file.php, data/templates/files/main.d, data/templates/files/program.pas, data/templates/files/main.py, data/templates/files/file.tex, wscript, Makefile.am: Move filetype template defaults into custom file template files. 2009-09-29 Nick Treleaven * src/symbols.c, tagmanager/perl.c: Change Perl tag parser to ctags SVN r601. This removes support for buggy local/my/our but it parses constant/format/labels and should be less buggy overall (closes #2861232). * src/templates.c, src/utils.c, src/utils.h, src/symbols.c: Add utils_get_file_list_full() which can optionally sort or include a full path for each list item. * src/utils.c, src/plugindata.h, src/plugins.c: Add utils_get_file_list_full() to API. 2009-09-28 Nick Treleaven * src/keybindings.c, src/sidebar.c, src/sidebar.h, src/makefile.win32, src/project.c, src/prefs.c, src/treeviews.c, src/callbacks.c, src/notebook.c, src/treeviews.h, src/document.c, src/main.c, src/symbols.c, src/Makefile.am, src/ui_utils.c, po/POTFILES.in, wscript: Rename treeviews.[hc] -> sidebar.[hc]. * data/filetypes.common: Remove unused [styling] arguments. * src/highlighting.c, data/filetypes.markdown, data/filetypes.restructuredtext: Remove style defaults from the code - just read them from configuration files. * src/highlighting.c, HACKING: Add apply_style_entries() to simplify implementing styleset_foo(). * src/highlighting.c: Remove filetype keyword defaults from the code - just read them from configuration files. * src/highlighting.c: Add sci_set_keywords() wrapper. 2009-09-27 Enrico Tröger * scripts/create_py_tags.py: Make the code a bit more pythonic. * doc/images/build_menu_commands_dialog.png, doc/images/main_window.png: Add new images referenced in the documentation. * doc/geany.html, doc/geany.txt: Several documentation improvements (patch by Lex Trotman, thanks). * src/pluginutils.c: Fix setting the appropriate page of the combined plugins preferences dialog. 2009-09-27 Nick Treleaven * src/keybindings.c: Only focus toolbar goto line entry when pressing keybinding if it's visible (patch by Eugene Arshinov, thanks). * src/callbacks.c: Focus editor after entering a number in the goto line toolbar entry. * configure.in: Use AC_PATH_PROG instead of which for portability (patch by Erik Southworth, thanks). * src/plugins.c: Show plugins that only implement plugin_configure_single() in the multiple-configure dialog as a page with a configure button on it. Add padding for multiple-configure dialog. Make the multiple-configure dialog notebook tabs scrollable. * src/pluginutils.c, src/pluginutils.h: Don't build pluginutils.o if HAVE_PLUGINS is not defined. * src/pluginprivate.h, src/plugindata.h, src/pluginutils.c, src/plugins.c, src/pluginutils.h, src/plugins.h, po/POTFILES.in, plugins/geanyfunctions.h, plugins/filebrowser.c: Add plugin_show_configure() API utility function. Add File Browser popup menu 'Preferences' item. * src/highlighting.c: Add get_keyfile_ints() instead of using tmp_style hack. * src/highlighting.c, data/filetypes.xml: Change new html_asp_default_language markup pref to use integer, not hex in config file. Fix minor issue with changing pref back to 0. * src/highlighting.c: Fix possible segfault in get_keyfile_int() if key value is malformed. 2009-09-24 Enrico Tröger * THANKS, src/about.c, src/highlighting.c, data/filetypes.xml: Add "html_asp_default_language" pseudo style to filetypes.xml to allow setting the used language in embedded ASP code (patch by Ross McKay, thanks). * src/filetypes.xml: Update VBScript keywords (patch by Ross McKay, thanks). 2009-09-24 Nick Treleaven * src/keybindings.c, THANKS: Apply patch from Lex Trotman to make 'Reflow block/lines(s)' keybinding use line breaking column when enabled. * src/document.c: Fix showing the document before reload dialog when opening an already-open file. * src/pluginprivate.h, src/plugins.c, doc/pluginsymbols.c: Add plugin_configure_single() plugin symbol which is easier to implement than plugin_configure() but won't support a multiple-plugin configure dialog. * src/plugins.c: Show multiple plugins in the 'Configure Plugins' dialog. 2009-09-22 Nick Treleaven * doc/geany.txt, doc/geany.html: Change 'Foo tab in preferences dialog' titles to 'Foo preferences'. Minor edits. * doc/geany.txt, doc/geany.html: Add 'Toolbar entries' section. * doc/geany.txt, doc/geany.html: Update 'Go to line' keybinding description. * doc/geany.txt, doc/geany.html: Split keybinding table into group tables; update KB links. 2009-09-21 Enrico Tröger * src/build.c: Fix compiler warnings about uninitialised variables. * src/callbacks.c, src/document.c: When reloading files, use the previously set encoding instead of detecting it again (closes #2862041). * configure.in: Turn on automake silent rules if supported. 2009-09-21 Nick Treleaven * src/utils.c: Speed up sorting in utils_get_file_list(). This reduces the file browser delay on displaying a big directory, e.g. /usr/bin. * src/build.c: Expand command entry width when expanding Build Commands dialog. * src/build.c: Split Build Commands dialog notes label and edit text. * src/build.c: Add padding for Build Commands dialog separators. Add colons for regex field labels; fix 1 capitalisation. * src/build.c: Fix none filetype Build Commands dialog label. Make group labels bold. * src/build.c, src/ui_utils.h, src/dialogs.c, src/notebook.c, src/ui_utils.c: Add & use ui_label_set_markup(), ui_label_new_bold(). * src/ui_utils.h, src/printing.c, src/tools.c, src/project.c, src/prefs.c, src/dialogs.c, src/geanyentryaction.c, src/plugindata.h, src/vte.c, src/search.c, src/ui_utils.c: Make ui_entry_add_clear_icon() take a GtkEntry, not GtkWidget. * src/keybindings.c: Make 'Go to Line' keybinding focus the toolbar entry if visible. 2009-09-20 Enrico Tröger * src/filetypes.c, src/filetypes.h, src/symbols.c, tagmanager/parsers.h, tagmanager/makefile.win32, tagmanager/abc.c, tagmanager/Makefile.am, data/filetypes.abc, data/filetype_extensions.conf, wscript: Add new filetype: Abc (patch by Eric Forgeot, thanks). * tagmanager/php.c: Merge recent changes from the CTags project to further improve PHP symbol parsing. 2009-09-17 Enrico Tröger * src/printing.c: Fix wrong alignment of printed pages when page headers are disabled (closes #2856822). Plug a small memory leak and improve function signature of add_page_header(). * src/keyfile.c: Save an if expression. * src/ui_utils.c: After clearing a text field using the embedded clear icon, put the input focus into this text field. 2009-09-17 Nick Treleaven * plugins/filebrowser.c: Free file list memory whilst iterating the list. Minor formatting fixes. * src/utils.c, src/utils.h: Add foreach_dir() API macro. Update API docs for utils_get_file_list(). * wscript, src/queue.c, src/editor.c, src/Makefile.am, src/queue.h, po/POTFILES.in: Remove queue.[hc] - use GQueue instead of GeanyQueue. Beep if there are no more snippet positions. Limit length of snippet positions queue to 20. 2009-09-16 Nick Treleaven * src/keybindings.c, src/callbacks.c, src/search.c: Make Goto Tag commands use the current selection if present (useful for selecting part of a tag or for ReST section names with spaces in). * src/document.c: Don't move the cursor when reloading. * src/plugindata.h, src/editor.c, src/editor.h: Make editor_prefs.snippets hash table private (not a pref). 2009-09-15 Frank Lanitz * src/main.c: Remove deprecated --debug flag. Please use --verbose/-v instead. 2009-09-15 Nick Treleaven * src/search.c: Show Find in Files stderr output in messages window instead of debug window so that invalid regex messages can be seen easily. Combine FIF stdout and stderr callback code. 2009-09-14 Nick Treleaven * src/utils.c: Fix opening filenames beginning with two dots (closes #2858487). * src/interface.c, src/highlighting.c, src/prefs.c, src/filetypes.c, src/filetypes.h, src/main.c, doc/geany.txt, doc/geany.html, data/filetypes.common, geany.glade: Update syntax highlighting after changing the 'Invert syntax highlighting colors' pref, instead of requiring a restart. Remove filetypes.common invert_all option - use 'Invert syntax highlighting colors' pref instead (closes #2854525). * src/prefs.c, src/dialogs.c, src/dialogs.h: Add 'Allow' button when showing the conflicting keybinding dialog. Make dialogs_show_question_full() use GTK dialog on Windows if button text is not the stock yes/no items. Add dialogs_show_prompt() which also has an 'Apply' button. * src/queue.c, src/queue.h: Add warning that GeanyQueue may be removed. * src/keybindings.c, src/editor.c, src/editor.h: Change snippet_goto_next_cursor() to editor_goto_next_snippet_cursor() as it's in editor.h. Avoid using GPOINTER_TO_INT macro. 2009-09-13 Nick Treleaven * src/keybindings.c: Fix 'Reflow block' command when at the last paragraph and there's no last newline (patch by Eugene Arshinov, thanks). * HACKING: Add 'Compiler options & warnings' section. Update Style section to be clearer about code alignment and show some example code. Other minor edits. 2009-09-12 Nick Treleaven * src/keybindings.c, src/sciwrappers.c, src/sciwrappers.h, src/plugindata.h, src/plugins.c, src/editor.c, plugins/geanyfunctions.h: Add sci_set_marker_at_line(), sci_delete_marker_at_line(), sci_is_marker_set_at_line() to the plugin API (thanks to Yura Siamashka). Add sci_toggle_marker_at_line(). Fix SciFuncs alignment. 2009-09-11 Lex Trotman * src/build.c: Fix erroneous free of returned string in prepare_run_script. 2009-09-10 Frank Lanitz * data/filetypes.latex: Changing default value for showing pdf and dvi to ensure to take *.pdf and *.dvi file. 2009-09-07 Frank Lanitz * src/about.c, THANKS: Change language string for Slovenian translation. 2009-09-07 Nick Treleaven * tagmanager/txt2tags.c: Fix multi-byte character constant comparison. * src/treeviews.c: Fix Gtk warning when trying to update documents popup menu item sensitivity before they exist. 2009-09-06 Enrico Tröger * src/plugins.c: Improve the opening string in the plugin manager dialog. * doc/geany.css: Use "max-width" to set the document width of the generated HTML documentation to let the text be auto-wrapped. * src/prefs.c, src/tagmanager/include/guregex.h, src/tagmanager/include/tm_tagmanager.h: Remove trailing spaces (patch by André Hentschel, thanks). * src/treeviews.c: Fix a compiler warning. * src/document.c: Fix crash when opening documents. * src/build.c, src/build.h, src/project.c: Adjust coding style (no code changes). * src/build.c, src/project.c: Use NZV() macro instead of strlen() to check for empty strings. Remove the FOREACH_GEANYBUILDCMD_ENTRY() macro. * doc/plugins.dox, plugins/geanyfunctions.h, src/document.c, src/geanyobject.c, src/geanyobject.h, src/plugindata.h, src/plugins.c, THANKS: Add new plugin signal: "document-before-save". Add get_line_end_position(), set_target_start(), set_target_end(), replace_target() to the plugin API (patch by Eugene Arshinov, thanks). Add new plugin signal: "document-filetype-set" (closes #2852286). * data/filetype_extensions.conf, data/filetypes.txt2tags, src/about.c, src/filetypes.c, src/filetypes.h, src/plugindata.h, src/symbols.c, tagmanager/Makefile.am, tagmanager/makefile.win32, tagmanager/parsers.h, tagmanager/txt2tags.c, tagmanager/txt2tags.c, wscript, THANKS: Add new filetype: Txt2Tags (patch by Eric Forgeot, thanks). 2009-09-04 Nick Treleaven * src/treeviews.c, src/document.c: Apply patch from Thomas Martitz to improve sidebar type-ahead code: Use gtk_notebook_set_current_page() instead of document_open_file_full() when choosing an item from the documents list. Avoid using goto in document_open_file_full(). 2009-09-03 Nick Treleaven * src/treeviews.c, src/document.c, src/document.h, THANKS: Enable type-ahead find for sidebar symbols and documents tabs (patch by Thomas Martitz, thanks). * src/build.c: Fix 2 free's of possibly uninitialized pointers. 2009-09-03 Lex Trotman * src/build.c, src/filetypes.h, src/filetypes.c: Only write filetype config files when build command or regex is actually changed. Removed commented code in src/filetypes.c. * src/build.c: Ensure uses of filename are protected against nulls when running a build command and give status message if not. 2009-09-01 Nick Treleaven * src/plugins.c: Remove plugin from plugin manager dialog on unloading if it no longer exists or is incompatible. 2009-08-31 Nick Treleaven * src/plugins.c: Add warning if only one of the plugin_key_group[_info] symbols is defined for a plugin. * src/templates.c, src/highlighting.c, src/dialogs.c, src/filetypes.c, src/filetypes.h, src/document.c, src/main.c, src/symbols.c, TODO: Merge custom-filetypes branch: Support adding custom filetype files e.g. filetypes.Foo.conf. - Code: Allow GeanyFiletype::extension to be NULL. Add note about using GeanyFiletype pointer instead of filetype_id for filetypes.c function arguments. Replace styleset_none() with styleset_default(). 2009-08-30 Enrico Tröger * src/prefs.c: Show the sidebar if either the documents or the symbols list are enabled (related to #1876107). 2009-08-29 Enrico Tröger * src/build.c, src/filetypes.c: Fix compiler warnings. * src/utils.c: Fix removing leading double slashes in filenames which are used for network resources on Windows (closes #2844085). 2009-08-27 Nick Treleaven * src/keybindings.c: Fix Make keybindings (patch by Lex Trotman, thanks). * src/geany.h: Define G_GNUC_WARN_UNUSED_RESULT if GLib < 2.10. * doc/plugins.dox: Mention Files link at top for header files; demoplugin.c. Minor edits; remove 'far from being complete'. * src/keyfile.c, src/keyfile.h, src/main.c, data/filetype_extensions.conf, HACKING: Remove --generate-data-files argument & code - just edit filetype_extensions.conf by hand (filetype order was broken anyway). Add *.H extension for C++ (useful for non-Windows systems). 2009-08-27 Lex Trotman * src/build.c: Fix implementation of loading old project files with base directories. Use project_make_base_path instead of re- implementing. Now depends on project.c reading base dir prior to calling load_build_menu. * src/build.c: Change usage of project base directory to conform with previous documented behavior when loading old project files. * src/build.c: Change make custom and make object to ignore make in base path when reading old project file settings. Changed some indent spaces to tabs. Fix missing compile menu accelerator. 2009-08-26 Nick Treleaven * doc/plugins.dox: Add warning about not using undocumented features. Add reference to HACKING for plugin API development. * HACKING: Add section 'Plugin API/ABI design'. * src/keybindings.h, src/makefile.win32, src/project.h, src/filetypes.h, src/Makefile.am, wscript: Use GEANY_PRIVATE to hide some fields from plugins. * src/build.c: Fix invalid memory read (#2844632, patch by Lex Trotman, thanks). * src/build.c, src/build.h, src/project.c: Use build_ prefix for 3 functions in build.h; add a static modifier. 2009-08-25 Enrico Tröger * tagmanager/php.c: Improve parsing of PHP functions by requiring a valid modifier or whitespace before the 'function' keyword to ignore some false positives like function tags inside comments (patch by Harold Aling, thanks). * tagmanager/python.c: Don't parse comments after import statements and other tags (closes #2838938, patch by Huandari Lopez, thanks). 2009-08-25 Nick Treleaven * data/filetypes.markdown: Add filetypes.markdown for configuration (thanks to Jon Strait). * src/build.c, src/keybindings.c, src/keybindings.h, src/plugindata.h, src/pluginutils.c, src/plugins.c, src/pluginutils.h, plugins/geanyfunctions.h: Remove GeanyKeyGroup struct from the API - plugins should not set these fields. Make keybindings_set_item() duplicate the name and label fields (needed by GeanyLua) and return a keybinding pointer. Add keybindings_get_item() to the API (in case it's useful). Move some keybinding code out of plugin source files. 2009-08-24 Nick Treleaven * src/build.h, src/project.h, src/plugindata.h, src/filetypes.h: Don't generate build.h API docs until everything is approved and functions are actually in geany_functions. Move new GeanyFiletype and GeanyProject field(s) to end of struct as they may be changed or made private later. Break ABI for fields removed. 2009-07-30 Lex Trotman * src/build.h, src/build.c, src/keybindings.c, src/filetypes.c src/keyfile.c, src/project.c: Changed names of symbols visible in build API to GEANY_xxx. 2009-07-29 Lex Trotman * src/project.h, src/project.c, src/build.c: Remove make_in_base_dir and run_cmd fields from project structure. Replaced by build functionality. Remove incorrect use in src/build.c build_run_cmd function. 2009-07-28 Lex Trotman * src/project.h, src/project.c: Removed unused project_get_make_dir function, this is now per command. 2009-07-28 Lex Trotman * src/build.c, src/build.h, src/project.c, src/keyfile.c, src/filetypes.c: Fix some more warnings. Fix commented out execute/stop toolbar code in build.c. Add extra plugins documentation for GBO_TO_CMD and GBO_TO_GBG macros. Changed build.h api so all functions prefixed with build_. 2009-07-27 Nick Treleaven * src/build.c, src/build.h, src/project.c: Fix some gcc warnings with '-Wall -W -ansi' enabled. 2009-07-25 Lex Trotman * src/build.c: Fixed leaks and crashes due to inconsistent use of static vs dynamic strings when reading old format configuration & project files. * src/build.c, src/project.c: Fixed GLib array assertion warnings when no project filetypes are available to be saved. 2009-07-24 Lex Trotman * src/build.c: Fix build warnings. 2009-07-22 Lex Trotman * src/build.h, src/build.c, src/project.c: Created and documented plugins interface to build menu. Factored out new get_cmd_group function. Changed name of remove_command function to be consistent with the rest of the interface & changed calls in project.c. * src/Makefile.am, wscript: Added build.h to installed files lists. 2009-07-20 Lex Trotman * doc/geany.txt: Updated manual to match build-menu capability. 2009-07-19 Lex Trotman * src/build.c, src/build.h: Added set_build_non_ft_wd_to_proj() for use by project dialog. Improved interpretation of run_in_base_dir from old [build-settings] Added spacing to build commands dialog * src/project.c: Removed run in base path option from project dialog and added button to set working directories to d the same. 2009-07-18 Lex Trotman * src/build.c: Re-incorporated toolbar changes in trunk accidently excluded in merge 2009-07-17 Lex Trotman * src/build.c: Fixed substitute %f etc in commands Fixed potential leak in build_replace_placeholder Fixed leak in prepare_run_script (Thanks for patch Thomas) Fixed build_replace_placeholder to not require document. 2009-07-17 Lex Trotman * src/build.c, src/build.h, src/filetypes.h, src/filetypes.c: Fixed crash and lots of warnings, deleted some commented out code. * geany.glade, src/keyfile.c, src/prefs.c, src/prefs.h, src/project.c: Removed make command from preferences and associated code 2009-07-16 Lex Trotman * src/build.c, src/build.h: Incorporated patch for working directory field (thanks Thomas) Removed run_in_base_dir option and associated code that it replaces Improved handling of old config files and mapping to new ones. 2009-07-15 Lex Trotman * src/build.h, src/build.c: Changed to itterate over entries in build commands dialog to allow additional fields to be added Implement support for multiple run commands * data/filetypes.latex: Implement configured commands and labels for latex. 2009-07-14 Lex Trotman * src/build.h, src/build.c: added dialog support for error regular expressions from multiple sources and storing and loading them fixed some typos and memory leaks * src/filetypes.c, src/filetypes.h, project.c: added support for using error regexes from multiple sources 2009-07-11 Lex Trotman * src/filetypes.h, src/filetypes.c, src/build.c, src/build.h, src/project.c: Removal of build menu item source made redundant by the following fix * src/build.c: Corrected priority oreder and loading of filetype dependent build menu items saved in the project file. Added print routine for debugging command sources and priorities set compile symbol PRINTBUILDCMDS true to enable 2009-07-10 Lex Trotman * src/build.c: fixed problem loading old format filetype files, some formatting fixes fixed saving new format files added operation for clear button on build commands dialog * src/filetypes.c: fixed loading and saving filetype files 2009-07-09 Lex Trotman Configurable Build Menu Changes * doc/geany.html, doc/geany.txt: Updated build menu section to new functionality * src/build.h, src/build.c: Largly re-written, configurability added, Latex code removed * src/filetypes.h, src/filetypes.c: Filetype structure updated to add new command pointers, configuration load and store changed * src/keybindings.h, src/keybindings.c: Changed to address new command storage structure. * src/keyfile.c: Changed to load/store new configuration. * src/main.c: Minor change to initialisation order. * src/msgwindow.c: Changed to address new menu item storage structure. * src/project.h, src/project.c: Changed to load/store the new configuration info. 2009-08-24 Nick Treleaven * src/keybindings.c, src/keybindings.h, src/plugindata.h, src/pluginutils.c, src/plugins.c, src/pluginutils.h, doc/pluginsymbols.c, plugins/geanyfunctions.h, plugins/splitwindow.c: Update PLUGIN_KEY_GROUP() macro so it doesn't allocate any GeanyKeyBinding or GeanyKeyGroup structs, so we don't need to break the ABI when adding fields to them. Add plugin_set_key_group() for plugins to dynamically set a keybinding group (e.g. for the Lua script plugin). Used in Split Window plugin as an example. Improve keybinding docs a little. 2009-08-20 Nick Treleaven * doc/Doxyfile.in, plugins/geanyfunctions.h, plugins/genapi.py: Add geanyfunctions.h to API docs. * plugins/splitwindow.c: Set the cursor color for the split window. 2009-08-18 Nick Treleaven * src/callbacks.c: Fix 'Open Selected File' for unsaved new documents. * src/keybindings.c, src/keybindings.h, src/prefs.c: Fix updating main menu accelerators after changing keybindings (thanks to Lex Trotman). * src/callbacks.c: Fix using 'Insert date' keybinding when a custom date string has not been set. * src/pluginprivate.h, src/pluginutils.c, src/plugins.c: Merge Plugin and GeanyPluginPrivate structs. 2009-08-18 Enrico Tröger * src/keybindings.c: Fix non-working Home and End keys on numpads. 2009-08-17 Nick Treleaven * doc/geany.txt, doc/geany.html, NEWS: Add 'Scope autocompletion' section. Add 'Tools menu items' section to explain configuration files submenu, reload configuration item. Minor updates/fixes. 2009-08-16 Enrico Tröger * src/document.c: Add a translation hint to an ambiguous format string. * src/Makefile.am: Add missing include path to fix 'make distcheck'. * src/win32.c: Fix opening of local files in the browser on Windows. * New release: Geany 0.18 "Kaine". * configure.in, geany.nsi, geany_private.rc, win32-config.h, wscript, src/geany.h, doc/geany.html, doc/geany.txt: Post-release version bump. 2009-08-15 Enrico Tröger * src/editor.c: Temporarily disable reshowing calltips when the autocompletion list was closed implicitly by not choosing an item to fix problems with wrongly displayed calltips. * src/template.c: Add missing 'coding' cookie to the Python filetype template. * doc/images/pref_dialog_edit_completions.png, doc/images/pref_dialog_toolbar.png: Update images for Geany 0.18. 2009-08-13 Enrico Tröger * wscript: Add command '--hackingdoc' to create the HTML form of the HACKING file. 2009-08-12 Frank Lanitz * po/pt_PT.po, po/LINGUAS: Added a first Portugese (Portugal) translation based on work done at launchpad by e.g. André Glória and Alexandre Jesus. * src/main.c: Fix a minor typo on --help call. 2009-08-11 Nick Treleaven * src/highlighting.c: Call get_keyfile_wordchars() in highlighting_init_styles(). 2009-08-09 Enrico Tröger * data/filetypes.ada: Add missing file. * src/keybindings.c: Switching notebook tabs now works for the currently used notebook widget instead of always using the documents notebook. * src/document.c, src/document.h, src/documentprivate.h, doc/plugins.dox: Small corrections to some API docs. 2009-08-02 Enrico Tröger * src/build.c, src/win32.h, src/win32.c: Expand system environment variables (%variableName%) on Windows when running Build commands. 2009-07-30 Nick Treleaven * src/keybindings.c: Rename 'Reflow lines/paragraph' to 'Reflow lines/block' because in future using an indent block is more useful e.g. for ChangeLog files. * scintilla/LexMarkdown.cxx, scintilla/makefile.win32, scintilla/include/SciLexer.h, scintilla/include/Scintilla.iface, scintilla/KeyWords.cxx, scintilla/Makefile.am, src/highlighting.c, src/about.c, src/filetypes.c, src/filetypes.h, THANKS, tagmanager/parsers.h, tagmanager/makefile.win32, tagmanager/markdown.c, tagmanager/Makefile.am, wscript: Add Markdown filetype (patch by Jon Strait, thanks). * src/pluginprivate.h, src/pluginutils.c, src/plugins.c: Fix disconnecting plugin signal id when not using geany_object. * src/filetypes.c: Add filetype_make_title() instead of using: ft->title = g_strdup_printf(_("%s source file"), ft->name); It also supports "%s file" strings. 2009-07-29 Nick Treleaven * src/pluginprivate.h, src/utils.h, src/plugindata.h, src/stash.c, src/pluginutils.c, src/plugins.c, src/pluginutils.h, doc/pluginsymbols.c, doc/plugins.dox, plugins/geanyfunctions.h, plugins/filebrowser.c: Add plugin_signal_connect() for connecting plugin signals at runtime and also for connecting to any GObject signal. Add 'Plugin Utility Functions' on main page. Add foreach_array() macro. * src/keybindings.c, src/sciwrappers.c, src/sciwrappers.h, src/document.c, src/editor.c: Rename 3 sci functions to sci_set_target_start(), sci_set_target_end(), sci_replace_target() to match the SCI_ message name. 2009-07-28 Frank Lanitz * wscript: Fix compiling error with waf. 2009-07-28 Nick Treleaven * src/pluginprivate.h, src/makefile.win32, src/plugindata.h, src/pluginutils.c, src/plugins.c, src/pluginutils.h, src/Makefile.am, wscript: Move plugin_* utility functions to pluginutils.c. Add pluginprivate.h. * src/editor.c: Fix reshowing calltip in the wrong document. 2009-07-25 Enrico Tröger * doc/geany.txt, doc/geany.html: Add some general information about auto-completion capabilities (patch by Lex Trotman, thanks). 2009-07-25 Frank Lanitz * po/LINGUAS, po/sl_SI.po, THANKS, src/about.c: Added a first Slovenian translation. Thanks to Joze Klepec. 2009-07-24 Nick Treleaven * src/highlighting.c: Use full styleset_foo[_init] function name as argument to init_styleset_case() and styleset_case() macros so it's easier to understand the code. * src/keybindings.c, src/keybindings.h, src/sciwrappers.c, src/sciwrappers.h, src/editor.c, src/editor.h, THANKS, doc/geany.txt, doc/geany.html: Add 'Reflow lines/paragraph' keybinding, defaults to Ctrl-J. Heavily based on a patch by Eugene Arshinov (thanks). Add sci_lines_split(), sci_lines_join(), sci_text_width(), editor_strip_line_trailing_spaces(). 2009-07-24 Enrico Tröger * src/editor.c: Attempt to fix reshowing calltips after the autocompletion list has been shown. Reshow calltips also when the autocompletion list was closed implicitly by not choosing an item. 2009-07-23 Nick Treleaven * src/utils.c, src/utils.h, src/toolbar.c, src/plugindata.h, plugins/splitwindow.c: Change utils_str_remove_chars() to work in place; fix allocating on the stack (the string length could exhaust the stack size). * src/templates.c, src/build.c, src/utils.c, src/utils.h, src/printing.c, src/callbacks.c: Rename utils_str_replace() utils_str_replace_all(), setting a 'gchar **haystack' argument instead of returning a new string. * src/editor.c: For the Tabs indent type, remove spaces when unindenting (only) if there are no tabs on the line. Group undo actions for (un)indenting of multiple lines. * src/document.c, src/editor.c: Fix scrolling horizontally after finding a search match with the search bar or Find Next/Previous which is off-screen. * src/keybindings.c: Fix GLib warning when pressing a key with no documents open. 2009-07-21 Enrico Tröger * src/utils.c: Start unifying usage of @a and @c markup elements in API docs, to be continued. * src/main.c, src/prefs.c, src/toolbar.c, src/toolbar.h: Show/hide the toolbar without a restart when the setting in the preferences dialog is changed (closes #2824785). * src/dialogs.c, src/document.c, src/editor.c, src/encodings.c, src/filetypes.c, src/keybindings.h, src/main.c, src/msgwindow.c, src/navqueue.c, src/plugindata.h, src/prefs.c, src/toolbar.c, src/toolbar.h: Continue unifying usage of @a and @c markup elements in API docs. 2009-07-21 Nick Treleaven * src/document.c: Remove relative/untidy path elements when creating new documents with a filename (e.g. from the command-line) (#2823998). 2009-07-20 Enrico Tröger * src/callbacks.c: Disable 'Recent Projects' menu item if the list of recent projects is empty. * src/win32.c: Fix some harmless compiler warnings. * plugins/geanyfunctions.h, plugins/splitwindow.c, src/plugindata.h, src/plugins.c, src/utils.c, src/utils.h: Move utils_str_remove_chars() from the plugins/splitwindow.c to src/utils.c and add it to the plugin API. Make utils_str_remove_chars() work on a new copy of the input string instead of modifying it in place. * src/toolbar.c: Remove underscores from the toolbar items labels. * src/utils.c: Fix typos. * plugins/splitwindow.c: Fix broken 'Show the current document' tool button icon. 2009-07-20 Nick Treleaven * src/treeviews.c, src/callbacks.c, src/stash.c, src/stash.h, src/keyfile.c: Add stash_group_add_widget_property() so we can save any widget's read/write properties. Use Stash for ui_prefs.sidebar_page setting. * src/utils.h, src/prefs.c, src/keyfile.c, src/symbols.c: Make foreach_ptr_array() use an integer argument for its implementation, as this is more useful potentially than a gpointer* argument, and more straightforward. Add foreach_c_array(), foreach_ptr_array() to API. * src/utils.c, src/utils.h, src/document.c: Remove relative/untidy path elements when opening documents (closes #2823998). * src/treeviews.c: Fix showing project name for documents list files with no subdirectory (oops). * src/dialogs.c: Fix checking whether to overwrite when using the Rename button in the 'Save As' dialog. 2009-07-19 Enrico Tröger * src/dialogs.c: Don't use the main window as parent for dialog boxes if it is not yet realised. Set titles for message dialogs. 2009-07-18 Enrico Tröger * src/toolbar.c: Display item labels instead of raw names in the toolbar editor. Apply changes in the toolbar editor instantly. Show icons in the toolbar editor. Speed up toolbar editor dialog creation. * src/templates.c: Improve inserting of comment templates like File header or licence notices. The comment information are now read from the filetype configuration files. 2009-07-16 Enrico Tröger * src/document.c: Enable file monitoring for files which are written to disk by Geany for the first time. * src/filetypes.c: Fix broken special case handling when detecting filetypes from a shebang or other special file headers. 2009-07-16 Nick Treleaven * src/search.c: Make Mark All keybinding clear search highlighting when there's no current word. * src/search.c: Fix wrong match length when using Mark with regex. * src/geanyobject.c, src/geanyobject.h, src/treeviews.c, src/keyfile.c, src/main.c: Add 'Show Paths' documents list popup item. Add "load_settings" core-only signal emitted just after loading main keyfile settings; useful to delay building UI elements until settings have been read. * src/treeviews.c: Fix GTK warning when right-clicking on default tag tree. * src/treeviews.c, src/treeviews.h, src/keyfile.c, src/main.c: Add treeviews_finalize(). Remove tv.popup_openfiles field. 2009-07-15 Nick Treleaven * src/highlighting.c: Fix building on GTK 2.8 (patch by Eugene Arshinov, thanks). 2009-07-14 Enrico Tröger * src/utils.c: Quote the uri before passing it to the browser when opening a website (closes #2818635). * src/win32: Fix broken 'builtin' Run command for HTML files on Windows. 2009-07-14 Nick Treleaven * src/editor.c: Properly fix wrong brace highlighting of non-brace character. * src/editor.c: Allow autocompletion in Perl double-quoted strings. Don't autocomplete in Perl single-quoted strings (closes #2821061). Don't autocomplete in Perl q() strings. * data/filetypes.common: Make Mark highlighting brighter. * src/interface.c, doc/geany.txt, doc/geany.html, geany.glade: Use hyphen for auto-feature terms. * src/plugindata.h, src/geany.h, src/filetypes.c, src/filetypes.h, src/document.h, src/main.c: Add documents_foreach() API macro that skips invalid docs. Make filetypes[], documents[] part of the API again. Add GEANY() macro for sharing geany symbols between API and core. * src/plugindata.h, src/plugins.c, doc/plugins.dox, plugins/saveactions.c, plugins/export.c, plugins/geanyfunctions.h, plugins/demoplugin.c, plugins/filebrowser.c, plugins/splitwindow.c, plugins/htmlchars.c, plugins/geanyplugin.h, plugins/Makefile.am, plugins/classbuilder.c, wscript: Add geanyplugin.h single include for plugin API; update all core plugins to use it. Add sci_set_font() to API. Update plugin howto. * src/filetypes.c, src/filetypes.h: Remove filetypes_foreach_named(). 2009-07-13 Nick Treleaven * src/highlighting.c, src/about.c, src/filetypes.c, src/document.c, src/document.h, src/main.c, THANKS: Apply patch from Eugene Arshinov to reload color schemes via menu (thanks). * src/filetypes.c: Reload filetypes.common after saving it. * src/editor.c: Improve wrong brace highlighting of non-brace character. 2009-07-10 Nick Treleaven * src/editor.c: Delay highlighting matching braces by 100ms, which speeds up scrolling with the arrow keys. * src/keybindings.c, src/keybindings.h, src/search.c, src/search.h: Add 'Mark All' keybinding. * tagmanager/diff.c: Show relative paths in diff filename tags. 2009-07-09 Enrico Tröger * src/highlighting.c: Fix setting keyword list 'classes' for Haxe (pointed out by Andreas Mokros, thanks). 2009-07-09 Nick Treleaven * src/interface.c, src/keyfile.c, src/editor.c, src/editor.h, doc/geany.txt, doc/geany.html, geany.glade: Add 'Drop rest of word on completion' pref. * src/editor.c, doc/geany.txt, doc/geany.html: If autocompletion is already visible when forcing completion, show document word completion instead of tag completion. Docs: Minor edits of related prefs items. * src/printing.c, src/dialogs.c, src/dialogs.h, src/plugindata.h: Add warning when printing and editor font is not monospaced. Fix using GtkMessageType instead of gint param for dialogs_show_msgbox*(). Add missing G_GNUC_PRINTF macro check to API dialog funcs. * src/editor.c: Support 'tab indents, space aligns' style for auto-indentation (closes #2789109). 2009-07-08 Enrico Tröger * src/document.c, src/documentprivate.h: Rework the GIO based file monitoring code. Now it is used only to indicate a possible change of the file, the real check if the file has been changed is performed by stat(). * data/filetypes.common, doc/geany.txt, src/highlighting.c: Add style 'line_height' to increase the line height. Add style 'marker_mark' and change style 'marker_search' to define the style used for marked search results. * doc/geany.txt, doc/geany.html: Add the new 'Autocomplete all words in document' pref to the docs. 2009-07-08 Nick Treleaven * src/interface.c, src/keyfile.c, src/editor.c, src/editor.h, doc/geany.txt, doc/geany.html, geany.glade, TODO: Add 'Autocomplete all words in document' pref. Use 'autocompletion' in dialog and docs, not 'auto completion'. * src/editor.c: Fix limiting number of word completion entries too much. * src/editor.c, TODO, icons/16x16/classviewer-var.xpm, icons/16x16/classviewer-method.xpm, icons/16x16/Makefile.am: Show autocompletion icons for tag symbols - for now only tags with an arglist have the 'function/method' icon, all others have the 'variable' icon. Note: XPMs were created from the PNGs with the ImageMagick 'convert' program. * src/highlighting.c: Highlight D WYSIWYG backtick `strings` and r"strings" (closes #1895745). 2009-07-06 Nick Treleaven * src/highlighting.c, src/utils.h, plugins/splitwindow.c: Fix removing underscores in translated string using no_underscore() macro. Set a tooltip for the Split Window plugin's Show Current tool button. Add utils_strdupa() macro. * src/interface.c, geany.glade: Use stock Select All icon now we have >= GTK 2.8. * src/treeviews.c: Fix using project name for document items that start with the project base path but don't match it e.g. ".../geany-plugins" instead of ".../geany" when project name is 'geany'. 2009-07-04 Enrico Tröger * src/build.c: Fix warnings when the toolbar does not contain the Run button. * tagmanager/lua.c: Fix wrong parsing of complex expressions in the Lua parser. * src/editor.c, src/geany.h, src/keybindings.c, src/plugindata.h, src/utils.c: Remove unnecessary enums. * scintilla/*, scintilla/include/*, src/plugindata.h: Update Scintilla to version 1.79. * src/document.c, src/editor.c, src/sciwrappers.c, src/sciwrappers.h, src/search.c: Use the new Scintilla struct names prefixed with 'Sci_'. * TODO, data/filetypes.common, doc/geany.html, doc/geany.txt, src/highlighting.c: Add second argument to the 'line_wrap_indent' styling setting to control the new Scintilla indentation mode for wrapped lines. * src/toolbar.c: Properly close the toolbar editor on delete-events. Fix warnings and possible crashes in the toolbar editor when the list of displayed toolbar items is empty. * data/filetypes.tcl: Update Tcl keywords for Tcl 8.6 (patch by Witek Mozga, thanks). * src/plugins.c: Make the plugin manager dialog a bit bigger. 2009-06-30 Enrico Tröger * doc/geany.html, doc/geany.txt: Fix wrong default values for the 'Show Calltip' keybinding. 2009-06-29 Enrico Tröger * data/filetypes.tcl, src/symbols.c: Fix duplicate "context_action_cmd" key. Use different icons for "Methods" and "Procedures" in the symbol list for Tcl files. * src/filetypes.c: Fix a small memory leak. * doc/geany.html, doc/geany.txt, src/editor.c, src/keybindings.c, src/keybindings.h, src/plugindata.h: Make the Scintilla keybindings 'Delete to end of line' and 'Go to end of display line' configurable. * geany.nsi: Fix a typo (closes #2813624). 2009-06-28 Enrico Tröger * tagmanager/tcl.c, src/symbol.c: Improve parsing of Tcl files (parsing new Tcl8.6 style classes, methods and namespaces). Patch by Witek Mozga, thanks. 2009-06-25 Enrico Tröger * data/ui_toolbar.xml, doc/geany.txt, doc/geany.html, src/ui_utils.c, src/toolbar.c, src/toolbar.h: Remove ui_toolbar.xml Configuration Files menu item. Add a real toolbar editor dialog. * geany.glade, src/callbacks.c, src/callbacks.h, src/interface.c, src/prefs.c: Add a button in the preferences dialog and an item for the toolbar popup menu to run the toolbar editor dialog. 2009-06-25 Nick Treleaven * src/dialogs.c: Fix Gtk NULL warning with gtk_file_chooser_set_current_folder(). Fix using locale encoding for default Save As dialog path. * src/editor.c: Beep when trying to activate the '...' autocompletion item. Limit (forced) document word completion to autocompletion_max_entries. Beep if no completions are shown when forcing autocompletion. 2009-06-24 Enrico Tröger * data/ui_toolbar.xml, src/toolbar.c: Add 'Build' toolbar button to the default layout. 2009-06-24 Nick Treleaven * src/editor.c: If forcing autocompletion and there's nothing else to show, complete from words in the current document (using code from Enrico's 'AutoComplete Test' plugin). 2009-06-23 Nick Treleaven * src/plugins.c: Add debug message if plugin has not set a name for its keybinding group. * data/filetype_extensions.conf: Add *.m4 for shell scripts. 2009-06-22 Nick Treleaven * src/highlighting.c, doc/geany.txt, doc/geany.html, data/filetypes.common, TODO: Make filetypes.common named styles use the "default" named style for all missing style fields. Set named styles to usually leave the background style empty. This currently allows C-like filetypes to have a common default background color. Allow hard-coded colors to use -1 for the default color. Add some highlighting style examples to the manual. 2009-06-21 Enrico Tröger * src/templates.c: Create initial template files with proper platform-specific line ending characters. 2009-06-20 Enrico Tröger * data/ui_toolbar.xml, doc/geany.txt, src/build.c, src/geanymenubuttonaction.c, src/geanymenubuttonaction.h, src/main.c, src/plugins.c, src/templates.c, src/toolbar.c, src/toolbar.h, src/ui_utils.c, src/ui_utils.h: Instantly reload (i.e. rebuild) the toolbar when ui_toolbar.xml is saved within Geany. Refactor some related code. * tagmanager/conf.c: Strip trailing spaces from "Key" tags. * geany.nsi: Quote the full filename to the Geany executable when creating the "Open with Geany" context menu item. * plugins/splitwindow.c: Avoid using deprecated GTK API. * src/log.c, src/main.c: Properly clean up the logging mechanism. * src/build.c: Fix LaTeX view commands on Windows (part of #2807688). * src/prefs.c: Add a popup menu for the keybinding list in the preferences dialog to easily expand and collapse all groups. Refactor the keybindings code for the preferences dialog, prefix all related functions. * src/main.c, src/ui_utils.c, src/ui_utils.h: Init stock items before creating the toolbar (closes #2809324). * wscript: Generate the geany.pc file also on Windows. * src/ui_utils.c: Invert the logic to determine which Save All we want to use: Use the Tango like icon only for the Tango theme and the Gnome / GTK like icon for any other themes. 2009-06-18 Nick Treleaven * src/highlighting.c, README.Packagers, HACKING: Remove gsd_* default styles, use named styles instead. Note: this relies on filetypes.common being installed. Add load_style_entries(), which makes style initialization simpler, used in styleset_c_like_init(). 2009-06-17 Enrico Tröger * src/win32.c: Prevent possible crash on Windows when not setting an initial directory for native File Open/Save dialogs. * data/filetypes.xml, src/highlighting.c: Add style 'jscript_regex' for filetype HTML (patch by Chris Macksey, thanks). 2009-06-17 Nick Treleaven * src/filetypes.h, src/document.c, src/document.h, src/ui_utils.c: Make GeanyDocument::file_type always be non-NULL, even for a new document with no filetype set. * src/editor.c: Only autocomplete scope for scopes matching the current filetype's language. * data/filetypes.java, data/filetypes.cpp, data/filetypes.vala, data/filetypes.haxe, data/filetypes.common, data/filetypes.glsl, data/filetypes.actionscript, data/filetypes.cs, data/filetypes.ferite, data/filetypes.c, data/filetypes.d, data/filetypes.javascript, HACKING: Make C++, D lexer filetypes use named styles (apart from uuid, verbatim, regex styles). 2009-06-16 Enrico Tröger * src/dialogs.c: Don't explicitly change the current directory of the Save As dialog so that it uses the last used directory. 2009-06-14 Enrico Tröger * src/encodings.c, src/encodings.h, src/plugindata.h: Add Japanese encoding "CP932" (patch by Ryūsei Yamaguchi, thanks). * src/editor.c: Remove dead code. When completing from the macro list, put the cursor after the inserted text. 2009-06-12 Nick Treleaven * tagmanager/pascal.c: Fix type definitions being parsed as functions. * src/editor.c: Don't autocomplete in unterminated strings as well. * src/templates.c, src/utils.h, src/dialogs.c, src/plugindata.h, src/filetypes.c, src/ui_utils.c, plugins/saveactions.c: Remove data_ptr argument to foreach_[s]list() macros, as using node->data is enough sometimes; this makes the macro a bit more efficient too. Add foreach_[s]list() macros to the plugin API docs. 2009-06-11 Nick Treleaven * scintilla/LexPascal.cxx: Backport fix from Scintilla CVS: Pascal lexer hanging on file that starts with 'interface' after whitespace. 2009-06-11 Enrico Tröger * waf: Update Waf to 1.5.7. * wscript: Overwrite installation prefix on Windows only if it wasn't specified explicitly. 2009-06-10 Enrico Tröger * src/editor.c: Display calltips for Pascal symbols in the Pascal way (#2803945). * tagmanager/pascal.c: Fix wrongly set return values for procedures (closes #2803945). * doc/Doxyfile.in, tagmanager/include/tm_work_object.h, tagmanager/include/tm_source_file.h, tagmanager/include/tm_workspace.h: Fix doxygen warnings. 2009-06-10 Nick Treleaven * src/editor.c, tagmanager/include/tm_workspace.h, tagmanager/tm_workspace.c, TODO: Autocomplete scoped fields like struct members when typing '.' (and also '->' or '::' in C/C++). Save all tag types for C/C++ when generating a global tags file, so we can use autocompletion for structs also. Merge tm_workspace_find_scope_members(), tm_workspace_find_namespace_members() (currently not built) from Anjuta 2.24.1 tagmanager. 2009-06-09 Enrico Tröger * tagmanager/pascal.c: Parse Pascal calltips (closes #2802640). 2009-06-09 Nick Treleaven * src/filetypes.c, src/ui_utils.c: Add filetypes.common Configuration Files menu item. 2009-06-08 Enrico Tröger * src/callbacks.c: Add backslash to the wordchars on Windows when using 'Open Selected File'. * src/wscript: Add support (configure, build and install) for building on Windows and cross-compiling for Windows using the Waf build system. 2009-06-05 Nick Treleaven * src/toolbar.c: Set status bar text instead of showing a dialog when saving ui_toolbar.xml because the user might save several times. * src/editor.c: Fix redrawing due to colourising just after the document is first drawn. Now colourising should happen before the first draw. * src/utils.c, src/highlighting.c, data/filetypes.common: Fix segfault on parsing a filetypes.* style definition that has < 4 fields. Allow style definitions to have missing fields to use the default style fields. 2009-06-05 Enrico Tröger * src/images.c, src/about.c, src/ui_utils.c, THANKS: Add a more Tango like icon for 'Save All' (by Jesse Mayes, thanks). * plugins/classbuilder.c: Fix wrongly created header guards when the class filenames contains dashes (patch by PCMan, thanks). * data/filetypes.matlab: Add build_settings section to allow executing Matlab scripts. * src/document.c: When closing a document, mark it as invalid before removing it from the documents notebook (this fixes wrong Save All button state when closing an unsaved document because the "switch-page" signal handler was using old data). 2009-06-03 Nick Treleaven * src/highlighting.c, doc/geany.txt, doc/geany.html: Support toggling bold/italic when using a named style, e.g.: commentdockeyword=commentdoc,bold,italic Improve named style docs. 2009-06-01 Enrico Tröger * src/build.c, src/editor.c: Fix crashes when parsing the output of a compiler which reports errors on line 0. 2009-06-01 Nick Treleaven * src/highlighting.c: Support named styles also for filetypes.common [styling] entries. * doc/geany.txt, doc/geany.html, HACKING: Update docs for named styles in filetypes.* files. * src/symbols.c: Fix grouping symbol list children when parent name has "." character in for reStructuredText and Conf filetypes. * tagmanager/python.c: Fix grouping functions/classes under a nested function. 2009-05-30 Enrico Tröger * geany.spec.in: Adjust icon paths (patch by Dominic Hopf, thanks). * doc/geany.txt, doc/geany.html, src/toolbar.c: Add 'Replace' toolbar button (closes #2798225). 2009-05-30 Nick Treleaven * src/utils.c, src/highlighting.c, TODO: Implement named styles support for filetypes.* using a filetypes.common [named_styles] section e.g.: foo=0xc00000;0xffffff;false;true bar=foo These can be used in e.g. filetypes.c as: comment=foo 2009-05-28 Enrico Tröger * src/ui_utils.c: Fix wrong sensitiveness of the Redo buttons (closes #2797862). 2009-05-28 Frank Lanitz * THANKS, src/about.c, po/lb.po, po/LINGUAS: Added Luxembourgian translation. Huge thanks to Laurent Hoeltgen. 2009-05-27 Enrico Tröger * src/build.c: Remove quote_executable() as it is not used anymore. When creating the geany_run_script.bat use the "%0" variable expansion and quote it for the "del" command (closes #2797172). * src/win32.c: On Windows, fallback to the literal build command line if searching for the command in the system path failed (related to #2795923). Properly terminate the resulting strings when reading the stdout and stderr of any spawned commands on Windows. 2009-05-26 Enrico Tröger * src/win32.c: Use the wide character versions of native Windows File dialogs. * src/project.c: Fix wrong initialisation of the default project path button callback in the preferences dialog. * Makefile.am, configure.in, geany.nsi, geany.spec.in, wscript, geany_private.rc, icons/16x16/Makefile.am, icons/16x16/geany.png, icons/48x48, icons/48x48/Makefile.am, icons/48x48/geany.png, icons/Makefile.am, icons/geany.ico, icons/scalable, icons/scalable/Makefile.am, icons/scalable/geany.svg, src/makefile.win32: Move the icons geany.png and geany.ico into the icons directory. Add a 16x16 pixel Geany icon and the scalable SVG icon. Drop the pixmaps directory. 2009-05-22 Nick Treleaven * src/keybindings.c: Improve MRU document switching so there are no duplicates in the list and documents switched to whilst the dialog is open are ignored. Also beep when cycling through to the first document in the list. 2009-05-21 Enrico Tröger * src/dialogs.c: Fix broken 'Cancel' button in the Save As dialog. 2009-05-20 Nick Treleaven * src/editor.c: Fix multiline indent when selection covers text on the last line. * src/notebook.c: Show current document in bold in tab popup menu. * src/editor.c, tagmanager/python.c, TODO: Parse Python calltips. 2009-05-19 Enrico Tröger * src/symbols.c, tagmanager/python.c: Parse Python import statements to get symbol completion for the imported module names. * src/editor.c, src/editor.h: Make some only locally used functions static. Fix wrong sanity check. * src/build.c: Fix quoting the build command string on Windows (closes #2791769). This broke when we made build commands run synchronously on Windows, now we don't need to special quote the commands anymore. 2009-05-19 Nick Treleaven * src/editor.c: Drop rest of word to the right of cursor when autocompleting (do we need a pref for this?). 2009-05-18 Nick Treleaven * src/sciwrappers.c, src/sciwrappers.h, src/editor.c: Add sci_set_selection(). * doc/geany.txt, doc/geany.html: Update manual for MRU switching. * src/callbacks.c, src/editor.c, src/editor.h: Make indenting with the Tabs indent type preserve spaces on the line, so it works for the 'tab indents, space aligns' formatting style. 2009-05-17 Enrico Tröger * tagmanager/python.c: Fix missing symbols for variables when an equal sign is used in a comment on the same line as the variable declaration. Backport change from CTags SVN to keep the parser more in sync: Add support for Cython constructs to the Python parser. * src/search.c: Remember the additional Find in Files search flags at startup. * src/dialogs.c: Don't close the Save As dialog when saving the file didn't succeed. 2009-05-13 Nick Treleaven * src/keyfile.c: Remember scribble cursor position. * src/keybindings.c, TODO: Implement Most-Recently-Used document switching when pressing Ctrl-Tab keybinding. (It's probably not perfect, but works OK). 2009-05-13 Frank Lanitz * data/latex.tags: Added some more commands from unit.sty and moderncv.sty. 2009-05-12 Nick Treleaven * src/symbols.c, doc/geany.txt, doc/geany.html, tagmanager/makefile.win32, tagmanager/nestlevel.c, tagmanager/nestlevel.h, tagmanager/python.c, tagmanager/rest.c, tagmanager/Makefile.am, wscript: Merge unstable branch: Add reStructuredText scope information for tags (for symbol list grouping). Read custom system global tags files from $prefix/share/geany/tags; Closes #2778923. Show the number of tags in a user global tags file (instead of the running total) in the debug message. Also print debug messages when loading a tag file manually or for default global tags files e.g. python.tags. - code: Move NestingLevel tags code into a separate file, add functions. - docs: Add 'Installation prefix' section instead of quoting '/usr/local' each time. Update for custom system global tags files. 2009-05-11 Enrico Tröger * src/highlighting.c: Unset maybe previously keywords when setting up Scintilla for XML files. This fixed wrong highlighting after switching back to filetype XML from another one. * src/utils.c: Use plain old fwrite() in utils_write_file(). g_file_set_contents() is only used when explicitly requested. * src/dialogs.c: Remove unnecessary call to g_intern_string() to fix build with GLib 2.8 (closes #2790051). 2009-05-10 Enrico Tröger * src/ui_utils.c: Make the clear icon of entry fields act on the release event, not on the press event like for other buttons. * src/editor.c: Refactor some multiple used code into get_multiline_comment_style(). * src/main.c: Create parent directories if necessary when checking for the configuration directory on startup (closes #2784577). 2009-05-08 Enrico Tröger * plugins/filebrowser.c: When a filter is set, apply it only to files, not directories and apply the filter to the UTF-8 name of the file as the filter string itself is also UTF-8. * src/utils.c, src/utils.h, src/highlighting.c, src/printing.c: Add utils_color_invert() and use it in highlighting.c and printing.c. * scintilla/include/Scintilla.h, scintilla/scintilla_changes.patch: Backport change from Scintilla CVS: Change capitalisation of header file to suit cross-compilation on Unix for Windows. 2009-05-03 Enrico Tröger * wscript, scintilla/*, scintilla/include/*, src/plugindata.h: Update Scintilla to version 1.78. * src/editor.c, src/highlighting.c: Update Pascal styles as they changed in Scintilla. 2009-05-02 Enrico Tröger * src/printing.c: Ignore the invert syntax highlighting colours setting when printing to not print characters on a dark background (closes #2785244). * New release: Geany 0.17 "Wessex". * configure.in, geany.nsi, geany_private.rc, win32-config.h, wscript, src/geany.h, doc/geany.html, doc/geany.txt: Post-release version bump. 2009-04-30 Enrico Tröger * src/callbacks.c, src/callbacks.h, src/main.c: Update the View->Fullscreen menu item when fullscreen state is changed externally (e.g. by the window manager). * src/project.c: Fix passing wrong pointer to the File Open dialog for the Run command in the Project Properties dialog. 2009-04-27 Enrico Tröger * src/callbacks.c, src/keyfile.c, src/main.c, src/ui_utils.c, src/ui_utils.h: Remember the active sidebar page between sessions. * src/project.c: Add a recent project item after creating a new project. * tagmanager/ruby.c: Fix wrong parsing of string literals (closes #2781264). * src/treeviews.c: Fix setting focus to the editor widget after changing the selection in the symbol list. 2009-04-25 Enrico Tröger * src/symbols.c: Prevent crashes when two or more top level items in the symbol list have the same name (closes #2778246). 2009-04-24 Enrico Tröger * src/keybindings.c: Manually show the main notebook tab bar menu when Shift-F10 is pressed. This broke when we disabled the default GTK tab bar menu. * src/document.c: Fix a crash when USE_GIO_FILEMON is enabled at closing a document which was reloaded shortly before. * src/editor.c: When the editor menu is opened by the Menu key, use the text cursor position for retrieving the current word. This fixes disabled Go to Tag items in the menu (#2780044). * src/treeviews.c: Set the "ellipsize" property of GtkCellRendererText to automatically shorten the path and file names in the Documents list. * doc/geany.html, doc/geany.txt, src/build.h: Increase the amount of highlighted build error messages to 100. At least for LaTeX we need higher values as there is a lot of informative output before any errors are reported. * src/filebrowser.c: Use the startup path as the initial directory for the filebrowser plugin when no project and no files are opened (patch by Matias Gea, thanks; closes #2780521). 2009-04-21 Enrico Tröger * src/dialogs.c, src/document.c, src/document.h, src/treeviews.c, src/utils.c, src/utils.h: Ellipsize tab labels and some status messages for very long filenames (closes #2777348). * src/plugins.c, src/plugindata.h, plugins/geanyfunctions.h: Add utils_str_middle_truncate() and document_get_basename_for_display() to the plugin API. * doc/geany.html, doc/geany.txt, src/toolbar.c: Add new toolbar element: Print (patch by Roland Baudin, thanks). * doc/geany.html, doc/geany.txt, src/document.c, src/document.h, src/keyfile.c: Add a hidden preference 'use_safe_file_saving' to save files to disk by creating a temporary file first. This has serious side effects, please read the documentation before enabling this. * src/build.c: Make build commands on Windows run synchronously to avoid problems with reading build commands' output. * doc/geany.html, doc/geany.txt, src/build.c, src/build.h: Limit the amount of highlighted build error messages in the Compiler window to 50 for performance reasons. 2009-04-20 Enrico Tröger * src/callbacks.c, src/editor.c, src/keybindings.c, src/keybindings.h, src/prefs.c: Replace our own GEANY_KEYS_MODIFIER_MASK by gtk_accelerator_get_default_mod_mask() which gives the same result. * src/filetypes.c, src/symbols.c, tagmanager/Makefile.am, tagmanager/makefile.win32, tagmanager/parsers.h, wscript: Add a trivial symbol parser for NSIS files. 2009-04-19 Enrico Tröger * src/dialogs.c: Hide the extra file open dialog options in an expander to make the dialog more compact by default and to provide more space for the file view. Remove the filename field as it is also provided by GTK itself with more features like auto-completion. Watch the 'show-hidden' property of the file chooser widget using GObject's "notify" signal which gives accurate results and remove the hack using the "selection-changed" signal. 2009-04-17 Enrico Tröger * src/callbacks.c, src/callbacks.h, src/encodings.c, src/filetypes.c: Prevent double execution of radio menu item "activate" or "toggled" signal handlers. Move 'Set Encoding' callback function into encodings.c. 2009-04-16 Enrico Tröger * src/project.c: Add some missing 'void's in function definitions. If the project base path is './', just use the path of the project config file instead of appending './'. * src/treeviews.c, src/project.c: When a project is loaded, replace the project base path with the project name in the Documents sidebar for parent items (closes #2723679). 2009-04-15 Enrico Tröger * src/keyfile.c, src/keyfile.h, src/project.c: Fix duplicating the recent files and projects lists when closing a project. * src/build.c, src/callbacks.c, src/dialogs.c, src/document.c, src/editor.c, src/encodings.c, src/filetypes.c, src/geanymenubuttonaction.c, src/geanyobject.c, src/geanywraplabel.c, src/highlighting.c, src/keybindings.c, src/keyfile.c, src/main.c, src/msgwindow.c, src/navqueue.c, src/notebook.c, src/plugins.c, src/prefs.c, src/queue.c, src/sciwrappers.c, src/socket.c, src/symbols.c, src/templates.c, src/toolbar.c, src/tools.c, src/treeviews.c, src/ui_utils.c, src/utils.c, src/vte.c: Remove all G_LIKELY macros inside g_return_if_fail() statements as this is redundant. Remove many other G_LIKELY/G_UNLIKELY macros which doesn't make much sense to keep the code more readable. 2009-04-09 Enrico Tröger * src/symbols.c: When updating global type definitions for opened documents, take also C++ namespace symbols into account and don't ignore symbols which are defined inside a scope. 2009-04-09 Nick Treleaven * src/plugins.c: Don't show 'plugin is not binary compatible' messages on the status bar, only the status window. 2009-04-08 Enrico Tröger * src/socket.c: When opening files from a remote instance on X11, set the window server time to encourage window managers to pop up the main window (related to #2735467 and #2276179). * src/main.c: When finished sending filenames to a remote instance, notify the environment that we finished starting up. 2009-04-08 Nick Treleaven * src/ui_utils.h, src/utils.h, src/ui_utils.c: Sort Configuration Files menu. Add ui_menu_sort_by_label(). Add foreach_list() macro. * src/editor.c: Fix autocompletion. 2009-04-07 Enrico Tröger * src/main.c: Fix setting a wrong default window size when starting without an existing configuration. * src/editor.c, src/sciwrappers.c, src/sciwrapper.h: Make editor_highlight_braces() static. Remove unused wrapper functions. * src/editor.c, src/symbols.c, src/symbols.h: Prevent showing an empty macro list. Show only macros of the same filetype instead of all macros of all loaded filetypes. * src/ui_utils.c: Don't add opened project files to the GtkRecentManager. 2009-04-07 Nick Treleaven * src/editor.c: Add Configuration Files item for snippets.conf. * src/highlighting.c, src/symbols.c: Fix 2 old uses of filetype IDs. 2009-04-06 Enrico Tröger * src/interface.c, src/printing.c, geany.glade: Minor string improvements (spotted by Jean-Philippe Moal, thanks). 2009-04-05 Enrico Tröger * src/ui_utils.c: Add sanity checks in ui_lookup_widget() just to be safe. * THANKS, TODO, geany.glade, src/about.c, src/interface.c, src/keyfile.c, src/main.c, src/plugindata.h, src/project.c, src/project.h, src/ui_utils.c, src/ui_utils.h: Add "Recent Projects" menu to the Project menu (#2728630, patch by Elias Pschernig, thanks). * doc/geany.txt, doc/geany.html: Describe how to build Geany using the Waf build system. * src/build.c, src/callbacks.c, src/dialogs.c, src/document.c, src/document.h, src/editor.c, src/encodings.c, src/filetypes.c, src/geanymenubuttonaction.c, src/geanyobject.c, src/geanywraplabel.c, src/highlighting.c, src/keybindings.c, src/keyfile.c, src/log.c, src/main.c, src/msgwindow.c, src/navqueue.c, src/notebook.c, src/plugins.c, src/prefs.c, src/queue.c, src/sciwrappers.c, src/socket.c, src/symbols.c, src/templates.c, src/toolbar.c, src/tools.c, src/tools.h, src/treeviews.c, src/ui_utils.c, src/utils.c, src/utils.h, src/vte.c: Start using G_LIKELY/G_UNLIKELY macros to gain a little more performance when building the code with gcc. * src/highlighting.c: Fix typo in the G_LIKELY checks, introduced in last commit. Fix the size of the styles array. * src/document.c: Show a message dialog when renaming a file fails. 2009-04-03 Enrico Tröger * src/build.c: Remove checks for the .pdf or .dvi files when viewing a LaTeX file (as we did for all other files in SVN r3382). 2009-04-03 Nick Treleaven * src/filetypes.c, doc/geany.txt: Move ActionScript to the Script group. Fix wording & typo. * src/templates.c, src/utils.h, src/highlighting.c, src/dialogs.c, src/plugindata.h, src/filetypes.c, src/filetypes.h, src/plugins.c, src/symbols.c, src/ui_utils.c, plugins/saveactions.c, plugins/htmlchars.c: Merge reorder-filetypes branch: Make GEANY_FILETYPES_NONE = 0, sort filetype IDs randomly (so we can append randomly without breaking the ABI). Make None filetype name = title = _("None"). Add foreach_slist() macro. Add filetypes_by_title list to GeanyData for plugin API access - a list of filetype pointers, which includes the None filetype first. This list stays constant by the time plugins are initialized, so you can use e.g. g_slist_nth_data(filetypes_by_title, n) to index the sorted list. 2009-03-31 Enrico Tröger * doc/geany.txt, doc/geany.html, src/main.c: Add widget names for the menubar and toolbar. * src/msgwindow.c: When hiding the messages window, set the input focus back to the editor widget (part of #1910393). 2009-03-30 Enrico Tröger * scintilla/LexOthers.cxx, src/highlighting.c, tagmanager/conf.c: Backport recent changes from Scintilla CVS to add partial support for RFC2822 styled text using the Properties lexer. Ignore leading whitespace for config files and RFC2822 text. * data/filetypes.actionscript: Update/fix ActionScript keywords (patch by Chris Macksey, thanks). * THANKS, src/treeviews.c: Display file/directory icons in the Documents sidebar (patch by Simon Treny, thanks). 2009-03-29 Enrico Tröger * doc/geany.html, doc/geany.txt, geany.glade, src/callbacks.c, src/callbacks.h, src/interface.c, src/keyfile.c, src/main.c, src/plugindata.h, src/prefs.c, src/toolbar.c, src/toolbar.h: Add an option to allow appending the toolbar to the main menu bar to save some vertical space. Allow setting toolbar icon size to very small (menu icon size). 2009-03-27 Enrico Tröger * src/keyfile.c, src/utils.c, src/utils.h: Add utils_path_skip_root(), a relative path safe variant of g_path_skip_root (forgotten patch by Colomban Wendling, #2518658). * src/keyfile.c, src/main.c: Allow negative window coordinates when saving and restoring the position of the main window. Restore the main window position and size *after* the window has been realised to get it positioned accordingly (this affects at least Windows). 2009-03-26 Enrico Tröger * src/main.c, src/plugins.c, src/win32.c, src/win32.h: Use g_win32_get_package_installation_directory_of_module() on Windows with newer GLib versions instead of deprecated API. * src/keybindings.c: Don't manage the last used documents list when quitting to prevent errors by accessing invalid memory (may close #2533990). 2009-03-25 Enrico Tröger * src/build.c: Delete the geany_run_script.sh immediately after execution to prevent leaking old copies when the script was quit unexpectedly (closes #2710482, patch by Martin Olsson, thanks). * src/keyfile.c: Check whether skipping the root element of a document's filename succeeded and use the filename itself if not (e.g. on relative filenames, #2702844). Use the locale encoded filename when saving session files. * src/callbacks.c: Re-set the quitting status after all documents have been closed on quitting. 2009-03-24 Frank Lanitz * plugins/htmlchars.c: Remove usage of deprecated sci_get_selected_text() from plugin. 2009-03-24 Enrico Tröger * src/callbacks.c: Delay disk file checks when switching between documents a little bit to avoid fast, unintentional page switching in some cases. * plugins/geanyfunctions.h, src/plugindata.h, src/plugins.c, src/sciwrappers.c, src/sciwrappers.h: Deprecate sci_get_text(), sci_get_selected_text() and sci_get_text_range(). Add sci_get_contents(), sci_get_contents_range() and sci_get_selection_contents() as replacement functions to provide an easier and cleaner API (initial patch by Frank). 2009-03-22 Enrico Tröger * tagmanager/css.c: Fix wrong parsing of CSS tags when the definition block starts on a new line (reported by Dominic Hopf, thanks). 2009-03-20 Frank Lanitz * plugins/htmlchars.c: Extend plugin by feature to bulk replace and replace on input for special characters to their HTML entities. 2009-03-19 Enrico Tröger * src/build.c: Update build menu items after changing anything in the 'Set Includes and Arguments' dialog. Disable Compile/Run buttons/menu items when Compile/Run commands are set but empty. Reset current build directory to the base directory after reading a "Leaving directory" message when parsing Make output (closes #2694479, patch by Andrea Mazzoleni, thanks). * src/notebook.c: Fix wrong display of the filename in the tab bar menu for new files. * src/dialog.c: Set the initial directory for the Save As dialog only once on initialisation. Add a shortcut of the project's base directory to the File Open/Save As dialogs when a project is open for faster access. * src/splitwindow.c: Add keybindings for the split actions. 2009-03-16 Enrico Tröger * src/search.c: When using Find All in the Find dialog (in Session and Document), display the right amount of matches. Fix the display of the matches once per line (I broke the original patch). * src/ui_utils.c: Fix wrong directory selection behaviour in all Open Folder dialogs (closes #2688020, patch by Marcel Stimberg, thanks). * src/socket.c: Don't present the main window of a running instance when starting a second instance separately. 2009-03-15 Enrico Tröger * src/socket.c: Reduce default file permissions on the Unix Domain socket file (reported by Jörg Sommer, thanks). 2009-03-13 Enrico Tröger * doc/geany.txt, doc/geany.html, geany.glade, src/interface.c, src/main.c, src/plugindata.h, src/plugins.c, src/prefs.c, src/prefs.h: Add an option to set an additional plugin lookup path. * src/search.c: When using Find All in the Find dialog, display matches only once per line in the messages window (patch by Bert Vermeulen, thanks). 2009-03-10 Enrico Tröger * data/filetype_extensions.conf, data/filetypes.actionscript, src/about.c, src/document.c, src/filetypes.c, src/filetypes.h, src/highlighting.c, src/plugindata.h, src/symbols.c, tagmanager/Makefile.am, tagmanager/actionscript.c, tagmanager/makefile.win32, tagmanager/parsers.h, THANKS, wscript: Add filetype ActionScript (patch by Chris Macksey, thanks). Update type keywords only for real C-like languages. Fix wrong sorting of Assembler and Ada filetypes. * plugins/classbuilder.c: Use G_DEFINE_TYPE in the GTK+ class template instead of manual code. Other minor cleanups. 2009-03-05 Enrico Tröger * src/notebook.c: Don't use menu item images for the tab bar menu to save some vertical space. * data/filetypes.fortran, tagmanager/fortran.c: Add keyword 'extends' and fix Fortran parser to support the 'extends' keyword (closes #2654492). * geany.glade, plugins/export.c, src/interface.c, src/printing.c, src/search.c, src/toolbar.c: Fix punctuation. 2009-03-03 Frank Lanitz * src/about.c, THANKS: Added Jari Rahkonen to list of Finnish translators. 2009-03-02 Enrico Tröger * geany.pc.in: Adjust minimum required GTK version. * src/Makefile.am, wscript: Add main.h to the list of installed header files. * geany.glade, src/document.c, src/documentprivate.h, src/interface.c, src/notebook.c, src/ui_utils.c: Remove GeanyDocumentPrivate::tabmenu_label. Disable the default tab bar menu for the main notebook widget and use a custom menu instead which lists all open files as usual plus 'Close Other Documents' and 'Close All' menu items. 2009-02-27 Enrico Tröger * src/callbacks.c, src/search.c, src/ui_utils.c, src/ui_utils.c: Move ui_set_search_entry_background() into ui_utils.c. Change the background colour of the search entries in the Find and Replace dialogs according to the search results like in the toolbar search field. Add images to the 'Replace' and 'Replace and Find' buttons in the Replace dialog. Minor cleanups in search.c. * tagmanager/tm_source_file.c: Update source files upon creation. * data/c99.tags: Update C tags for glibc 2.9. * src/callbacks.c, src/toolbar.c: Fix broken non-incremental search with the toolbar search entry when pressing Enter (closes #2638180). * plugins/splitwindow.c: Fix possible crash on non-32-bit systems (patch by Wolfgang Ocker, thanks). * geany.spec.in: Update the Packager tag due to Dominic's various contributions. Update description and feature list. Change Source tag to the gzip'ed tarball to be in sync with the Makefile target (thanks to Wolfgang Ocker for reporting). 2009-02-26 Frank Lanitz * plugins/vcdiff.c, plugins/Makefile.am, po/POTFILES.in: Removed deprecated plugin VC Diff 2009-02-25 Enrico Tröger * src/templates.c: Fix wrong Fortran 90 comment characters when inserting templates. * doc/geany.html, doc/geany.txt, geany.glade, src/callbacks.c, src/callbacks.h, src/editor.c, src/interface.c, src/keybindings.c, src/keybindings.h, src/main.c, src/plugindata.h, src/vte.c, src/vte.h, THANKS: Add 'Send Selection to Terminal' command to the Edit->Format menu (initial patch by David Gleich, thanks). * geany.glade, src/interface.c: Fix mnemonic for the Edit->Preferences menu item. 2009-02-24 Enrico Tröger * configure.in, plugins/Makefile.am: Enable socket support when cross-compiling. Enable plugin compilation when cross-compiling. * src/msgwindow.c: Fix missing NULL checks when reading the colour value of compiler output messages. * src/main.c, src/win32.c, src/win32.h: On Windows, change the working directory to the Geany installation path at startup to avoid unwanted directory locking(closes #2626124). * src/encoding.c: Fix broken selection of "Document->Set Encoding" menu items. * src/document.c, tagmanager/include/tm_source_file.h, tagmanager/include/tm_work_object.h, tagmanager/tm_project.c, tagmanager/tm_source_file.c, tagmanager/tm_tag.c, tagmanager/tm_work_object.c, tagmanager/tm_workspace.c: Don't let the tagmanager automatically reparse files if they seem to be changed on disk (affects all files in the current session, not the current one). This should speed up file saving a little bit, especially with remote files. Remove now unnecessary calls to tm_workspace_update(). * src/printing.c: Allow an empty value for the date format in the print settings to omit the date/time string in the print header. 2009-02-20 Frank Lanitz * src/editor.c: Set cursor for LaTeX at auto closing of environment direct into area. 2009-02-19 Enrico Tröger * src/utils.h: Add missing header include (closes #2615808). 2009-02-18 Enrico Tröger * src/symbols.c: Fix a possible crash when comparing symbol names (could be related to Ubuntu bug #147151). Fix broken symbol list tooltips when tag names contain ampersands. 2009-02-15 Nick Treleaven * plugins/makefile.win32: Don't build Split Window plugin on Windows (doesn't work). 2009-02-15 Enrico Tröger * ChangeLog, Makefile.am: Rotate ChangeLog. * configure.in, geany.nsi, geany_private.rc, win32-config.h, wscript, doc/geany.txt, doc/geany.html, src/geany.h: Post-release version bump. *** See ChangeLog.pre-0-17 for earlier changes *** geany-1.23.1+dfsg/makefile.win320000644000175000017500000000353212146146075016522 0ustar hyperairhyperair# See http://www.geany.org/Support/BuildingOnWin32 # Running make creates config.h then calls the sub makefiles. # # Other targets are: # clean: clean all generated files # install: install to DESTDIR # # localwin32.mk is an optional file to override make variables. # Use localwin32.mk instead of editing variables as it is included in sub # makefiles. # For MSYS set MSYS=1. # By default this should work in a Windows command prompt (cmd.exe). WINDRES = windres.exe CC = gcc CXX = g++ CP = copy /y RM = del MKDIR = mkdir # $/ is used as a portable directory separator # strip is used to prevent line wrap / := $(strip \) DESTDIR = C:/Program Files/Geany -include localwin32.mk ifdef MSYS CP = cp RM = rm -f / = / endif all: config.h $(MAKE) -C tagmanager/ctags -f makefile.win32 $(MAKE) -C tagmanager/mio -f makefile.win32 $(MAKE) -C tagmanager/src -f makefile.win32 $(MAKE) -C scintilla -f makefile.win32 $(MAKE) -C plugins -f makefile.win32 $(MAKE) -C src -f makefile.win32 config.h: win32-config.h $(CP) $< $@ # used by src/makefile.win32 to avoid del ../file which is an error clean-local: -$(RM) geany_private.res geany.exe clean: $(MAKE) -C tagmanager/ctags -f makefile.win32 clean $(MAKE) -C tagmanager/mio -f makefile.win32 clean $(MAKE) -C tagmanager/src -f makefile.win32 clean $(MAKE) -C scintilla -f makefile.win32 clean $(MAKE) -C plugins -f makefile.win32 clean $(MAKE) -C src -f makefile.win32 clean .PHONY: all clean clean-local install # likely requires admin privileges # mkdir output is ignored in case dir exists # 'copy' seems to only accept / in the destination install: -$(MKDIR) "$(DESTDIR)" -$(MKDIR) "$(DESTDIR)/bin" $(CP) geany.exe "$(DESTDIR)/bin" -$(MKDIR) "$(DESTDIR)/lib" $(CP) plugins$/*.dll "$(DESTDIR)/lib" -$(MKDIR) "$(DESTDIR)/data" ifdef MSYS cp -r data "$(DESTDIR)" else xcopy /s /y data "$(DESTDIR)/data" endif geany-1.23.1+dfsg/THANKS0000644000175000017500000002330312146146074014771 0ustar hyperairhyperairWhat's this file about? ----------------------- This file lists all external people that have contributed to this project. If any contributors are missing, please email the developers - see the AUTHORS file. Testers and contributors: ------------------------- These people have contributed to Geany by testing the software, reporting problems, sending patches and making useful suggestions: Frank Lanitz - heavy testing Christoph Berg - testing and patch for filetype D Nick Treleaven - many patches Saleem Abdulrasool - vte autoconf patch Marko Peric S Jagannathan Giuseppe Torelli Kristoffer A. Tjernås Tamim Kevin Ellwood Stefan Oltmanns - escape sequences patch Bob Doan - some patches Rob van der Linde - fixed wrong vte height on some systems Josef Whiter - parse 'Entering directory' build messages Jeff Pohlmeyer - "Allow DnD", "Use tabs" and other great patches Tomás Vírseda - sort open files patch Dirk Weber Slava Semushin - patch to improve SVN checks in configure script John Gabriele - documentation patches Anh Phạm - various patches Guillaume Hoffmann - Haskell filetype patch Peter Strand - Haskell CTags patch Dave Moore - code navigation patch François Cami , Guillaume Duviol - tab replacement patch Alexander Rodin - class builder patch Shiv - Sun Studio compiler compatibility patch Jean-François Wauthy - Symbol list icons patch blackdog - Haxe filetype patch Sebastian Kraft - new Geany icon Catalin Marinas - newline strips trailing spaces patch Bo Lorentsen - project session patch Yura Siamashka - many patches Daniel Richard G. - some patches Pierre Joye - Win32 process spawning patch Matti Mårds - create PHP tags script Robert McGinley - Documentation improvements Felipe Pena - Missing PHP keywords Colomban Wendling - various patches Timothy Boronczyk - scroll_stop_at_last_line GUI pref patch Jason Oster - various patches Andrew Rowland - R filetype patch Bronisław Białek - CSS parser update Roland Baudin - Matlab filetype patch Conrad Steenberg - symbol tree patch Herbert Voss - LaTeX file template Moritz Barsnick - Split Vertically command Tyler D'Agosta - Add missing HTML entities Walery Studennikov - YAML filetype patch Guillaume de Rorthais - Auto-close brackets/braces/quotes patch Tyler Mulligan - Close All toolbar icon Philipp Gildein - Ada filetype patch Thomas Martitz - Multiple %cursor% in Snippets, typeahead sidebar patch David Gleich - Send Selection to Terminal patch Chris Macksey - ActionScript filetype patch Simon Treny - Documents sidebar stock icons patch Elias Pschernig - Recent Projects menu patch Jesse Mayes - Tango'ish Save All icon Eugene Arshinov - Reload color schemes, split lines KB patches, and more Jon Strait - Markdown filetype patch Forgeot Eric - Txt2Tags filetype patch Lex Trotman gmailcom> - Build commands configuration improvements, and more Ross McKay zetaorgau> - ASP preferred language option Alexey Antipov <1a_antipov(at)mail(dot)ru> - Apply file open encoding only to non-Unicode files Jörn Reder - --socket-file command line option patch Kelvin Gardiner - VHDL symbol list patch, Verilog filetype Jon Senior - R tagmanager parser patch Can Koy - Multiple changes/improvements Yoann Le Montagner - set VTE bold color Dimitar Zhekov - various patches Ondrej Donek - Support for creating PHP classes with the classbuilder plugin Daniel Marjamaki - Small improvements Jiří Techet - Various patches Erik de Castro Lopo - Various patches Thomas Huth - Forth filetype Adam Ples - Group encodings in open dialog Mário Silva - Lisp filetype Taylor Venable - Erlang filetype Manuel Bua - Ensure consistent line endings pref. Matthew Brush - Various patches. Nicolas Sierro - store VTE path with session patch Translators: ------------ These people have translated Geany to foreign languages: Fayssal Chamekh - ar Marcos Costales - ast Yura Siamashka - be_BY Dilyan Rusev - bg Toni Garcia-Navarro - ca_ES Petr Messner - cs_CZ Anna Talianova - cs_CZ Karel Kolman - cs_CZ Frank Lanitz - de_DE Dominic Hopf - de_DE Stavros Temertzidis - el Jeff Bailes - en_GB Damián Viano - es Antonio Jiménez González - es Nacho Cabanes - es Lucas Vieites - es Asier Iturralde Sarasola Moein Owhadi Kareshk - fa Harri Koskinen - fi Jari Rahkonen - fi Jean-Philippe Moal - fr Roland Baudin - fr Lionel Fuentes - fr Benjamin Ballet -fr José Manuel Castroagudín Silva - gl Asheesh Ranjan - hi Yosef Or Botschko - he Gabor Kmetyko aka kilo - hu M.Baldinelli - it Dario Santomarco - it Giuliano Manzitti - it Tarot Osuji - ja Chikahiro Masami - ja Park Jang-heon - ko Baurzhan Muftakhidinov - kk Laurent Hoeltgen - lb Algimantas Margevičius - lt tsetsee - mn Kurt De Bree - nl Peter Scholtens - nl Ayke van Laethem - nl Jacek Wolszczak - pl_PL Jarosław Foksa - pl_PL Krzysztof Troska - pl_PL Wojciech Świderski - pl_PL Alexandre Moreira - pt_BR Adrovane Marques Kade - pt_BR Rafael Peregrino da Silva - pt_BR Alex Eftimie - ro brahmann_ - ru Nikita E. Shalaev - ru stat.c - ru Andrew Drynov - ru John Wehin - ru Maxim Musatov - ru Tomáš Vadina - sk Jože Klepec - sl Nikola Radovanovic - sr Tony Mattsson - sv Gürkan Gür - tr Boris Dibrov - uk Clytie Siddall - vi_VN Dormouse Young - zh_CN Xhacker Liu - zh_CN KoViCH - zh_TW Wei-Lun Chao - zh_TW Projects: --------- GTK/GLib Scintilla Tagmanager CTags Anjuta (tagmanager) KDevelop (symbol list icons) geany-1.23.1+dfsg/geany.desktop.in0000644000175000017500000000102312146146075017155 0ustar hyperairhyperair[Desktop Entry] Type=Application Version=1.0 _Name=Geany _GenericName=Integrated Development Environment _Comment=A fast and lightweight IDE using GTK2 Exec=geany %F Icon=geany Terminal=false Categories=GTK;Development;IDE; MimeType=text/plain;text/x-chdr;text/x-csrc;text/x-c++hdr;text/x-c++src;text/x-java;text/x-dsrc;text/x-pascal;text/x-perl;text/x-python;application/x-php;application/x-httpd-php3;application/x-httpd-php4;application/x-httpd-php5;application/xml;text/html;text/css;text/x-sql;text/x-diff; StartupNotify=true geany-1.23.1+dfsg/src/0000755000175000017500000000000012146150002014626 5ustar hyperairhyperairgeany-1.23.1+dfsg/src/prefs.h0000644000175000017500000000364712146146075016147 0ustar hyperairhyperair/* * prefs.h - this file is part of Geany, a fast and lightweight IDE * * Copyright 2005-2012 Enrico Tröger * Copyright 2006-2012 Nick Treleaven * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef GEANY_PREFS_H #define GEANY_PREFS_H 1 G_BEGIN_DECLS /** General Preferences dialog settings. */ typedef struct GeanyPrefs { gboolean load_session; gboolean load_plugins; gboolean save_winpos; gboolean confirm_exit; gboolean beep_on_errors; /* use utils_beep() instead */ gboolean suppress_status_messages; gboolean switch_to_status; gboolean auto_focus; gchar *default_open_path; /**< Default path to look for files when no other path is appropriate. */ gchar *custom_plugin_path; } GeanyPrefs; extern GeanyPrefs prefs; /** Tools preferences */ typedef struct GeanyToolPrefs { gchar *browser_cmd; /**< web browser command */ gchar *term_cmd; /**< terminal emulator command */ gchar *grep_cmd; /**< grep command */ gchar *context_action_cmd; /**< context action command */ } GeanyToolPrefs; extern GeanyToolPrefs tool_prefs; void prefs_show_dialog(void); G_END_DECLS #endif geany-1.23.1+dfsg/src/vte.c0000644000175000017500000006534312146146075015622 0ustar hyperairhyperair/* * vte.c - this file is part of Geany, a fast and lightweight IDE * * Copyright 2005-2012 Enrico Tröger * Copyright 2006-2012 Nick Treleaven * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* * Virtual Terminal Emulation setup and handling code, using the libvte plugin library. */ #include "geany.h" #ifdef HAVE_VTE /* include stdlib.h AND unistd.h, because on GNU/Linux pid_t seems to be * in stdlib.h, on FreeBSD in unistd.h, sys/types.h is needed for C89 */ #include #include #include #include #include #include #include #include "vte.h" #include "support.h" #include "prefs.h" #include "ui_utils.h" #include "utils.h" #include "document.h" #include "msgwindow.h" #include "callbacks.h" #include "geanywraplabel.h" #include "editor.h" #include "sciwrappers.h" VteInfo vte_info; VteConfig *vc; static pid_t pid = 0; static gboolean clean = TRUE; static GModule *module = NULL; static struct VteFunctions *vf; static gchar *gtk_menu_key_accel = NULL; /* use vte wordchars to select paths */ static const gchar VTE_WORDCHARS[] = "-A-Za-z0-9,./?%&#:_"; /* Incomplete VteTerminal struct from vte/vte.h. */ typedef struct _VteTerminal VteTerminal; struct _VteTerminal { GtkWidget widget; GtkAdjustment *adjustment; }; #define VTE_TERMINAL(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), VTE_TYPE_TERMINAL, VteTerminal)) #define VTE_TYPE_TERMINAL (vf->vte_terminal_get_type()) typedef enum { VTE_CURSOR_BLINK_SYSTEM, VTE_CURSOR_BLINK_ON, VTE_CURSOR_BLINK_OFF } VteTerminalCursorBlinkMode; /* Holds function pointers we need to access the VTE API. */ struct VteFunctions { GtkWidget* (*vte_terminal_new) (void); pid_t (*vte_terminal_fork_command) (VteTerminal *terminal, const char *command, char **argv, char **envv, const char *directory, gboolean lastlog, gboolean utmp, gboolean wtmp); void (*vte_terminal_set_size) (VteTerminal *terminal, glong columns, glong rows); void (*vte_terminal_set_word_chars) (VteTerminal *terminal, const char *spec); void (*vte_terminal_set_mouse_autohide) (VteTerminal *terminal, gboolean setting); void (*vte_terminal_reset) (VteTerminal *terminal, gboolean full, gboolean clear_history); GType (*vte_terminal_get_type) (void); void (*vte_terminal_set_scroll_on_output) (VteTerminal *terminal, gboolean scroll); void (*vte_terminal_set_scroll_on_keystroke) (VteTerminal *terminal, gboolean scroll); void (*vte_terminal_set_font_from_string) (VteTerminal *terminal, const char *name); void (*vte_terminal_set_scrollback_lines) (VteTerminal *terminal, glong lines); gboolean (*vte_terminal_get_has_selection) (VteTerminal *terminal); void (*vte_terminal_copy_clipboard) (VteTerminal *terminal); void (*vte_terminal_paste_clipboard) (VteTerminal *terminal); void (*vte_terminal_set_emulation) (VteTerminal *terminal, const gchar *emulation); void (*vte_terminal_set_color_foreground) (VteTerminal *terminal, const GdkColor *foreground); void (*vte_terminal_set_color_bold) (VteTerminal *terminal, const GdkColor *foreground); void (*vte_terminal_set_color_background) (VteTerminal *terminal, const GdkColor *background); void (*vte_terminal_feed_child) (VteTerminal *terminal, const char *data, glong length); void (*vte_terminal_im_append_menuitems) (VteTerminal *terminal, GtkMenuShell *menushell); void (*vte_terminal_set_cursor_blink_mode) (VteTerminal *terminal, VteTerminalCursorBlinkMode mode); void (*vte_terminal_set_cursor_blinks) (VteTerminal *terminal, gboolean blink); void (*vte_terminal_select_all) (VteTerminal *terminal); void (*vte_terminal_set_audible_bell) (VteTerminal *terminal, gboolean is_audible); void (*vte_terminal_set_background_image_file) (VteTerminal *terminal, const char *path); }; static void create_vte(void); static void vte_start(GtkWidget *widget); static void vte_restart(GtkWidget *widget); static gboolean vte_button_pressed(GtkWidget *widget, GdkEventButton *event, gpointer user_data); static gboolean vte_keyrelease_cb(GtkWidget *widget, GdkEventKey *event, gpointer data); static gboolean vte_keypress_cb(GtkWidget *widget, GdkEventKey *event, gpointer data); static gboolean vte_register_symbols(GModule *module); static void vte_popup_menu_clicked(GtkMenuItem *menuitem, gpointer user_data); static GtkWidget *vte_create_popup_menu(void); static void vte_commit_cb(VteTerminal *vte, gchar *arg1, guint arg2, gpointer user_data); static void vte_drag_data_received(GtkWidget *widget, GdkDragContext *drag_context, gint x, gint y, GtkSelectionData *data, guint info, guint ltime); enum { POPUP_COPY, POPUP_PASTE, POPUP_SELECTALL, POPUP_CHANGEPATH, POPUP_RESTARTTERMINAL, POPUP_PREFERENCES, TARGET_UTF8_STRING = 0, TARGET_TEXT, TARGET_COMPOUND_TEXT, TARGET_STRING, TARGET_TEXT_PLAIN }; static const GtkTargetEntry dnd_targets[] = { { "UTF8_STRING", 0, TARGET_UTF8_STRING }, { "TEXT", 0, TARGET_TEXT }, { "COMPOUND_TEXT", 0, TARGET_COMPOUND_TEXT }, { "STRING", 0, TARGET_STRING }, { "text/plain", 0, TARGET_TEXT_PLAIN }, }; static gchar **vte_get_child_environment(void) { const gchar *exclude_vars[] = {"COLUMNS", "LINES", "TERM", NULL}; return utils_copy_environment(exclude_vars, "TERM", "xterm", NULL); } static void override_menu_key(void) { if (gtk_menu_key_accel == NULL) /* for restoring the default value */ g_object_get(G_OBJECT(gtk_settings_get_default()), "gtk-menu-bar-accel", >k_menu_key_accel, NULL); if (vc->ignore_menu_bar_accel) gtk_settings_set_string_property(gtk_settings_get_default(), "gtk-menu-bar-accel", "F10", "Geany"); else gtk_settings_set_string_property(gtk_settings_get_default(), "gtk-menu-bar-accel", gtk_menu_key_accel, "Geany"); } void vte_init(void) { if (vte_info.have_vte == FALSE) { /* vte_info.have_vte can be false even if VTE is compiled in, think of command line option */ geany_debug("Disabling terminal support"); return; } if (NZV(vte_info.lib_vte)) { module = g_module_open(vte_info.lib_vte, G_MODULE_BIND_LAZY); } #ifdef VTE_MODULE_PATH else { module = g_module_open(VTE_MODULE_PATH, G_MODULE_BIND_LAZY); } #endif if (module == NULL) { gint i; const gchar *sonames[] = { "libvte.so", "libvte.so.4", "libvte.so.8", "libvte.so.9", NULL }; for (i = 0; sonames[i] != NULL && module == NULL; i++) { module = g_module_open(sonames[i], G_MODULE_BIND_LAZY); } } if (module == NULL) { vte_info.have_vte = FALSE; geany_debug("Could not load libvte.so, embedded terminal support disabled"); return; } else { vf = g_new0(struct VteFunctions, 1); if (vte_register_symbols(module)) vte_info.have_vte = TRUE; else { vte_info.have_vte = FALSE; g_free(vf); /* FIXME: is closing the module safe? see vte_close() and test on FreeBSD */ /*g_module_close(module);*/ module = NULL; return; } } create_vte(); /* setup the F10 menu override (so it works before the widget is first realised). */ override_menu_key(); } static void on_vte_realize(void) { /* the vte widget has to be realised before color changes take effect */ vte_apply_user_settings(); vf->vte_terminal_im_append_menuitems(VTE_TERMINAL(vc->vte), GTK_MENU_SHELL(vc->im_submenu)); } static void create_vte(void) { GtkWidget *vte, *scrollbar, *hbox, *frame; vc->vte = vte = vf->vte_terminal_new(); scrollbar = gtk_vscrollbar_new(GTK_ADJUSTMENT(VTE_TERMINAL(vte)->adjustment)); GTK_WIDGET_UNSET_FLAGS(scrollbar, GTK_CAN_FOCUS); /* create menu now so copy/paste shortcuts work */ vc->menu = vte_create_popup_menu(); g_object_ref_sink(vc->menu); frame = gtk_frame_new(NULL); hbox = gtk_hbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(frame), hbox); gtk_box_pack_start(GTK_BOX(hbox), vte, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), scrollbar, FALSE, FALSE, 0); /* set the default widget size first to prevent VTE expanding too much, * sometimes causing the hscrollbar to be too big or out of view. */ gtk_widget_set_size_request(GTK_WIDGET(vte), 10, 10); vf->vte_terminal_set_size(VTE_TERMINAL(vte), 30, 1); vf->vte_terminal_set_mouse_autohide(VTE_TERMINAL(vte), TRUE); vf->vte_terminal_set_word_chars(VTE_TERMINAL(vte), VTE_WORDCHARS); gtk_drag_dest_set(vte, GTK_DEST_DEFAULT_ALL, dnd_targets, G_N_ELEMENTS(dnd_targets), GDK_ACTION_COPY); g_signal_connect(vte, "child-exited", G_CALLBACK(vte_start), NULL); g_signal_connect(vte, "button-press-event", G_CALLBACK(vte_button_pressed), NULL); g_signal_connect(vte, "event", G_CALLBACK(vte_keypress_cb), NULL); g_signal_connect(vte, "key-release-event", G_CALLBACK(vte_keyrelease_cb), NULL); g_signal_connect(vte, "commit", G_CALLBACK(vte_commit_cb), NULL); g_signal_connect(vte, "motion-notify-event", G_CALLBACK(on_motion_event), NULL); g_signal_connect(vte, "drag-data-received", G_CALLBACK(vte_drag_data_received), NULL); vte_start(vte); gtk_widget_show_all(frame); gtk_notebook_insert_page(GTK_NOTEBOOK(msgwindow.notebook), frame, gtk_label_new(_("Terminal")), MSG_VTE); g_signal_connect_after(vte, "realize", G_CALLBACK(on_vte_realize), NULL); } void vte_close(void) { g_free(vf); /* free the vte widget before unloading vte module * this prevents a segfault on X close window if the message window is hidden */ gtk_widget_destroy(vc->vte); gtk_widget_destroy(vc->menu); g_object_unref(vc->menu); g_free(vc->emulation); g_free(vc->shell); g_free(vc->image); g_free(vc->font); g_free(vc->colour_back); g_free(vc->colour_fore); g_free(vc->send_cmd_prefix); g_free(vc); g_free(gtk_menu_key_accel); /* Don't unload the module explicitly because it causes a segfault on FreeBSD. The segfault * happens when the app really exits, not directly on g_module_close(). This still needs to * be investigated. */ /*g_module_close(module); */ } static gboolean vte_keyrelease_cb(GtkWidget *widget, GdkEventKey *event, gpointer data) { if (ui_is_keyval_enter_or_return(event->keyval) || ((event->keyval == GDK_c) && (event->state & GDK_CONTROL_MASK))) { /* assume any text on the prompt has been executed when pressing Enter/Return */ clean = TRUE; } return FALSE; } static gboolean vte_keypress_cb(GtkWidget *widget, GdkEventKey *event, gpointer data) { if (vc->enable_bash_keys) return FALSE; /* Ctrl-[CD] will be handled by the VTE itself */ if (event->type != GDK_KEY_RELEASE) return FALSE; if ((event->keyval == GDK_c || event->keyval == GDK_d || event->keyval == GDK_C || event->keyval == GDK_D) && event->state & GDK_CONTROL_MASK && ! (event->state & GDK_SHIFT_MASK) && ! (event->state & GDK_MOD1_MASK)) { vte_restart(widget); return TRUE; } return FALSE; } static void vte_commit_cb(VteTerminal *vte, gchar *arg1, guint arg2, gpointer user_data) { clean = FALSE; } static void vte_start(GtkWidget *widget) { gchar **env; gchar **argv; /* split the shell command line, so arguments will work too */ argv = g_strsplit(vc->shell, " ", -1); if (argv != NULL) { env = vte_get_child_environment(); pid = vf->vte_terminal_fork_command(VTE_TERMINAL(widget), argv[0], argv, env, vte_info.dir, TRUE, TRUE, TRUE); g_strfreev(env); g_strfreev(argv); } else pid = 0; /* use 0 as invalid pid */ clean = TRUE; } static void vte_restart(GtkWidget *widget) { vte_get_working_directory(); /* try to keep the working directory when restarting the VTE */ if (pid > 0) { kill(pid, SIGINT); pid = 0; } vf->vte_terminal_reset(VTE_TERMINAL(widget), TRUE, TRUE); clean = TRUE; } static gboolean vte_button_pressed(GtkWidget *widget, GdkEventButton *event, gpointer user_data) { if (event->button == 3) { gtk_widget_grab_focus(vc->vte); gtk_menu_popup(GTK_MENU(vc->menu), NULL, NULL, NULL, NULL, event->button, event->time); } else if (event->button == 2) { gtk_widget_grab_focus(widget); } return FALSE; } static void vte_set_cursor_blink_mode(void) { if (vf->vte_terminal_set_cursor_blink_mode != NULL) /* vte >= 0.17.1 */ vf->vte_terminal_set_cursor_blink_mode(VTE_TERMINAL(vc->vte), (vc->cursor_blinks) ? VTE_CURSOR_BLINK_ON : VTE_CURSOR_BLINK_OFF); else /* vte < 0.17.1 */ vf->vte_terminal_set_cursor_blinks(VTE_TERMINAL(vc->vte), vc->cursor_blinks); } static gboolean vte_register_symbols(GModule *mod) { #define BIND_SYMBOL(field) \ g_module_symbol(mod, #field, (void*)&vf->field) #define BIND_REQUIRED_SYMBOL(field) \ G_STMT_START { \ if (! BIND_SYMBOL(field)) \ { \ g_critical(_("invalid VTE library \"%s\": missing symbol \"%s\""), \ g_module_name(mod), #field); \ return FALSE; \ } \ } G_STMT_END BIND_REQUIRED_SYMBOL(vte_terminal_new); BIND_REQUIRED_SYMBOL(vte_terminal_set_size); BIND_REQUIRED_SYMBOL(vte_terminal_fork_command); BIND_REQUIRED_SYMBOL(vte_terminal_set_word_chars); BIND_REQUIRED_SYMBOL(vte_terminal_set_mouse_autohide); BIND_REQUIRED_SYMBOL(vte_terminal_reset); BIND_REQUIRED_SYMBOL(vte_terminal_get_type); BIND_REQUIRED_SYMBOL(vte_terminal_set_scroll_on_output); BIND_REQUIRED_SYMBOL(vte_terminal_set_scroll_on_keystroke); BIND_REQUIRED_SYMBOL(vte_terminal_set_font_from_string); BIND_REQUIRED_SYMBOL(vte_terminal_set_scrollback_lines); BIND_REQUIRED_SYMBOL(vte_terminal_get_has_selection); BIND_REQUIRED_SYMBOL(vte_terminal_copy_clipboard); BIND_REQUIRED_SYMBOL(vte_terminal_paste_clipboard); BIND_REQUIRED_SYMBOL(vte_terminal_set_emulation); BIND_REQUIRED_SYMBOL(vte_terminal_set_color_foreground); BIND_REQUIRED_SYMBOL(vte_terminal_set_color_bold); BIND_REQUIRED_SYMBOL(vte_terminal_set_color_background); BIND_REQUIRED_SYMBOL(vte_terminal_set_background_image_file); BIND_REQUIRED_SYMBOL(vte_terminal_feed_child); BIND_REQUIRED_SYMBOL(vte_terminal_im_append_menuitems); if (! BIND_SYMBOL(vte_terminal_set_cursor_blink_mode)) /* vte_terminal_set_cursor_blink_mode() is only available since 0.17.1, so if we don't find * this symbol, we are probably on an older version and use the old API instead */ BIND_REQUIRED_SYMBOL(vte_terminal_set_cursor_blinks); BIND_REQUIRED_SYMBOL(vte_terminal_select_all); BIND_REQUIRED_SYMBOL(vte_terminal_set_audible_bell); #undef BIND_REQUIRED_SYMBOL #undef BIND_SYMBOL return TRUE; } void vte_apply_user_settings(void) { if (! ui_prefs.msgwindow_visible) return; vf->vte_terminal_set_scrollback_lines(VTE_TERMINAL(vc->vte), vc->scrollback_lines); vf->vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(vc->vte), vc->scroll_on_key); vf->vte_terminal_set_scroll_on_output(VTE_TERMINAL(vc->vte), vc->scroll_on_out); vf->vte_terminal_set_emulation(VTE_TERMINAL(vc->vte), vc->emulation); vf->vte_terminal_set_font_from_string(VTE_TERMINAL(vc->vte), vc->font); vf->vte_terminal_set_color_foreground(VTE_TERMINAL(vc->vte), vc->colour_fore); vf->vte_terminal_set_color_bold(VTE_TERMINAL(vc->vte), vc->colour_fore); vf->vte_terminal_set_color_background(VTE_TERMINAL(vc->vte), vc->colour_back); vf->vte_terminal_set_background_image_file(VTE_TERMINAL(vc->vte), vc->image); vf->vte_terminal_set_audible_bell(VTE_TERMINAL(vc->vte), prefs.beep_on_errors); vte_set_cursor_blink_mode(); override_menu_key(); } static void vte_popup_menu_clicked(GtkMenuItem *menuitem, gpointer user_data) { switch (GPOINTER_TO_INT(user_data)) { case POPUP_COPY: { if (vf->vte_terminal_get_has_selection(VTE_TERMINAL(vc->vte))) vf->vte_terminal_copy_clipboard(VTE_TERMINAL(vc->vte)); break; } case POPUP_PASTE: { vf->vte_terminal_paste_clipboard(VTE_TERMINAL(vc->vte)); break; } case POPUP_SELECTALL: { vte_select_all(); break; } case POPUP_CHANGEPATH: { GeanyDocument *doc = document_get_current(); if (doc != NULL) vte_cwd(doc->file_name, TRUE); break; } case POPUP_RESTARTTERMINAL: { vte_restart(vc->vte); break; } case POPUP_PREFERENCES: { GtkWidget *notebook, *tab_page; prefs_show_dialog(); notebook = ui_lookup_widget(ui_widgets.prefs_dialog, "notebook2"); tab_page = ui_lookup_widget(ui_widgets.prefs_dialog, "frame_term"); gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook), gtk_notebook_page_num(GTK_NOTEBOOK(notebook), GTK_WIDGET(tab_page))); break; } } } static GtkWidget *vte_create_popup_menu(void) { GtkWidget *menu, *item; GtkAccelGroup *accel_group; menu = gtk_menu_new(); accel_group = gtk_accel_group_new(); gtk_window_add_accel_group(GTK_WINDOW(main_widgets.window), accel_group); item = gtk_image_menu_item_new_from_stock(GTK_STOCK_COPY, NULL); gtk_widget_add_accelerator(item, "activate", accel_group, GDK_c, GDK_CONTROL_MASK | GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE); gtk_widget_show(item); gtk_container_add(GTK_CONTAINER(menu), item); g_signal_connect(item, "activate", G_CALLBACK(vte_popup_menu_clicked), GINT_TO_POINTER(POPUP_COPY)); item = gtk_image_menu_item_new_from_stock(GTK_STOCK_PASTE, NULL); gtk_widget_add_accelerator(item, "activate", accel_group, GDK_v, GDK_CONTROL_MASK | GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE); gtk_widget_show(item); gtk_container_add(GTK_CONTAINER(menu), item); g_signal_connect(item, "activate", G_CALLBACK(vte_popup_menu_clicked), GINT_TO_POINTER(POPUP_PASTE)); item = gtk_separator_menu_item_new(); gtk_widget_show(item); gtk_container_add(GTK_CONTAINER(menu), item); item = gtk_image_menu_item_new_from_stock(GTK_STOCK_SELECT_ALL, NULL); gtk_widget_show(item); gtk_container_add(GTK_CONTAINER(menu), item); g_signal_connect(item, "activate", G_CALLBACK(vte_popup_menu_clicked), GINT_TO_POINTER(POPUP_SELECTALL)); item = gtk_separator_menu_item_new(); gtk_widget_show(item); gtk_container_add(GTK_CONTAINER(menu), item); item = gtk_image_menu_item_new_with_mnemonic(_("_Set Path From Document")); gtk_widget_show(item); gtk_container_add(GTK_CONTAINER(menu), item); g_signal_connect(item, "activate", G_CALLBACK(vte_popup_menu_clicked), GINT_TO_POINTER(POPUP_CHANGEPATH)); item = gtk_image_menu_item_new_with_mnemonic(_("_Restart Terminal")); gtk_widget_show(item); gtk_container_add(GTK_CONTAINER(menu), item); g_signal_connect(item, "activate", G_CALLBACK(vte_popup_menu_clicked), GINT_TO_POINTER(POPUP_RESTARTTERMINAL)); item = gtk_separator_menu_item_new(); gtk_widget_show(item); gtk_container_add(GTK_CONTAINER(menu), item); item = gtk_image_menu_item_new_from_stock(GTK_STOCK_PREFERENCES, NULL); gtk_widget_show(item); gtk_container_add(GTK_CONTAINER(menu), item); g_signal_connect(item, "activate", G_CALLBACK(vte_popup_menu_clicked), GINT_TO_POINTER(POPUP_PREFERENCES)); msgwin_menu_add_common_items(GTK_MENU(menu)); item = gtk_separator_menu_item_new(); gtk_widget_show(item); gtk_container_add(GTK_CONTAINER(menu), item); /* the IM submenu should always be the last item to be consistent with other GTK popup menus */ vc->im_submenu = gtk_menu_new(); item = gtk_image_menu_item_new_with_mnemonic(_("_Input Methods")); gtk_widget_show(item); gtk_container_add(GTK_CONTAINER(menu), item); gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), vc->im_submenu); /* submenu populated after vte realized */ return menu; } /* If the command could be executed, TRUE is returned, FALSE otherwise (i.e. there was some text * on the prompt). */ gboolean vte_send_cmd(const gchar *cmd) { if (clean) { vf->vte_terminal_feed_child(VTE_TERMINAL(vc->vte), cmd, strlen(cmd)); clean = TRUE; /* vte_terminal_feed_child() also marks the vte as not clean */ return TRUE; } else return FALSE; } /* Taken from Terminal by os-cillation: terminal_screen_get_working_directory, thanks. * Determines the working directory using various OS-specific mechanisms and stores the determined * directory in vte_info.dir. Note: vte_info.dir contains the real path. */ const gchar *vte_get_working_directory(void) { gchar buffer[4096 + 1]; gchar *file; gchar *cwd; gint length; if (pid > 0) { file = g_strdup_printf("/proc/%d/cwd", pid); length = readlink(file, buffer, sizeof(buffer)); if (length > 0 && *buffer == '/') { buffer[length] = '\0'; g_free(vte_info.dir); vte_info.dir = g_strdup(buffer); } else if (length == 0) { cwd = g_get_current_dir(); if (cwd != NULL) { if (chdir(file) == 0) { g_free(vte_info.dir); vte_info.dir = g_get_current_dir(); if (chdir(cwd) != 0) geany_debug("%s: %s", G_STRFUNC, g_strerror(errno)); } g_free(cwd); } } g_free(file); } return vte_info.dir; } /* Changes the current working directory of the VTE to the path of the given filename. * filename is expected to be in UTF-8 encoding. * filename can also be a path, then it is used directly. * If force is set to TRUE, it will always change the cwd */ void vte_cwd(const gchar *filename, gboolean force) { if (vte_info.have_vte && (vc->follow_path || force) && filename != NULL && g_path_is_absolute(filename)) { gchar *path; if (g_file_test(filename, G_FILE_TEST_IS_DIR)) path = g_strdup(filename); else path = g_path_get_dirname(filename); vte_get_working_directory(); /* refresh vte_info.dir */ if (! utils_str_equal(path, vte_info.dir)) { /* use g_shell_quote to avoid problems with spaces, '!' or something else in path */ gchar *quoted_path = g_shell_quote(path); gchar *cmd = g_strconcat(vc->send_cmd_prefix, "cd ", quoted_path, "\n", NULL); if (! vte_send_cmd(cmd)) { ui_set_statusbar(FALSE, _("Could not change the directory in the VTE because it probably contains a command.")); geany_debug( "Could not change the directory in the VTE because it probably contains a command."); } g_free(quoted_path); g_free(cmd); } g_free(path); } } static void vte_drag_data_received(GtkWidget *widget, GdkDragContext *drag_context, gint x, gint y, GtkSelectionData *data, guint info, guint ltime) { if (info == TARGET_TEXT_PLAIN) { if (gtk_selection_data_get_format(data) == 8 && gtk_selection_data_get_length(data) > 0) vf->vte_terminal_feed_child(VTE_TERMINAL(widget), (const gchar*) gtk_selection_data_get_data(data), gtk_selection_data_get_length(data)); } else { gchar *text = (gchar*) gtk_selection_data_get_text(data); if (NZV(text)) vf->vte_terminal_feed_child(VTE_TERMINAL(widget), text, strlen(text)); g_free(text); } gtk_drag_finish(drag_context, TRUE, FALSE, ltime); } G_MODULE_EXPORT void on_check_run_in_vte_toggled(GtkToggleButton *togglebutton, GtkWidget *user_data) { g_return_if_fail(GTK_IS_WIDGET(user_data)); gtk_widget_set_sensitive(user_data, gtk_toggle_button_get_active(togglebutton)); } G_MODULE_EXPORT void on_term_font_set(GtkFontButton *widget, gpointer user_data) { const gchar *fontbtn = gtk_font_button_get_font_name(widget); if (! utils_str_equal(fontbtn, vc->font)) { SETPTR(vc->font, g_strdup(gtk_font_button_get_font_name(widget))); vte_apply_user_settings(); } } G_MODULE_EXPORT void on_term_fg_color_set(GtkColorButton *widget, gpointer user_data) { g_free(vc->colour_fore); vc->colour_fore = g_new0(GdkColor, 1); gtk_color_button_get_color(widget, vc->colour_fore); } G_MODULE_EXPORT void on_term_bg_color_set(GtkColorButton *widget, gpointer user_data) { g_free(vc->colour_back); vc->colour_back = g_new0(GdkColor, 1); gtk_color_button_get_color(widget, vc->colour_back); } void vte_append_preferences_tab(void) { if (vte_info.have_vte) { GtkWidget *frame_term, *button_shell, *entry_shell; GtkWidget *check_run_in_vte, *check_skip_script; GtkWidget *font_button, *fg_color_button, *bg_color_button; GtkWidget *entry_image, *button_image; button_shell = GTK_WIDGET(ui_lookup_widget(ui_widgets.prefs_dialog, "button_term_shell")); entry_shell = GTK_WIDGET(ui_lookup_widget(ui_widgets.prefs_dialog, "entry_shell")); ui_setup_open_button_callback(button_shell, NULL, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_ENTRY(entry_shell)); button_image = GTK_WIDGET(ui_lookup_widget(ui_widgets.prefs_dialog, "button_term_image")); entry_image = GTK_WIDGET(ui_lookup_widget(ui_widgets.prefs_dialog, "entry_image")); ui_setup_open_button_callback(button_image, NULL, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_ENTRY(entry_image)); check_skip_script = GTK_WIDGET(ui_lookup_widget(ui_widgets.prefs_dialog, "check_skip_script")); gtk_widget_set_sensitive(check_skip_script, vc->run_in_vte); check_run_in_vte = GTK_WIDGET(ui_lookup_widget(ui_widgets.prefs_dialog, "check_run_in_vte")); g_signal_connect(G_OBJECT(check_run_in_vte), "toggled", G_CALLBACK(on_check_run_in_vte_toggled), check_skip_script); font_button = ui_lookup_widget(ui_widgets.prefs_dialog, "font_term"); g_signal_connect(font_button, "font-set", G_CALLBACK(on_term_font_set), NULL); fg_color_button = ui_lookup_widget(ui_widgets.prefs_dialog, "color_fore"); g_signal_connect(fg_color_button, "color-set", G_CALLBACK(on_term_fg_color_set), NULL); bg_color_button = ui_lookup_widget(ui_widgets.prefs_dialog, "color_back"); g_signal_connect(bg_color_button, "color-set", G_CALLBACK(on_term_bg_color_set), NULL); frame_term = ui_lookup_widget(ui_widgets.prefs_dialog, "frame_term"); gtk_widget_show_all(frame_term); } } void vte_select_all(void) { if (vf->vte_terminal_select_all != NULL) vf->vte_terminal_select_all(VTE_TERMINAL(vc->vte)); } void vte_send_selection_to_vte(void) { GeanyDocument *doc; gchar *text; gsize len; doc = document_get_current(); g_return_if_fail(doc != NULL); if (sci_has_selection(doc->editor->sci)) { text = g_malloc0(sci_get_selected_text_length(doc->editor->sci) + 1); sci_get_selected_text(doc->editor->sci, text); } else { /* Get the current line */ gint line_num = sci_get_current_line(doc->editor->sci); text = sci_get_line(doc->editor->sci, line_num); } len = strlen(text); if (vc->send_selection_unsafe) { /* Explicitly append a trailing newline character to get the command executed, this is disabled by default as it could cause all sorts of damage. */ if (text[len-1] != '\n' && text[len-1] != '\r') { SETPTR(text, g_strconcat(text, "\n", NULL)); len++; } } else { /* Make sure there is no newline character at the end to prevent unwanted execution */ while (text[len-1] == '\n' || text[len-1] == '\r') { text[len-1] = '\0'; len--; } } vf->vte_terminal_feed_child(VTE_TERMINAL(vc->vte), text, len); /* show the VTE */ gtk_notebook_set_current_page(GTK_NOTEBOOK(msgwindow.notebook), MSG_VTE); gtk_widget_grab_focus(vc->vte); msgwin_show_hide(TRUE); g_free(text); } #endif geany-1.23.1+dfsg/src/pluginprivate.h0000644000175000017500000000444412146146075017715 0ustar hyperairhyperair/* * pluginprivate.h - this file is part of Geany, a fast and lightweight IDE * * Copyright 2009-2012 Nick Treleaven * Copyright 2009-2012 Enrico Tröger * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef GEANY_PLUGINPRIVATE_H #define GEANY_PLUGINPRIVATE_H #include "plugindata.h" #include "ui_utils.h" /* GeanyAutoSeparator */ #include "keybindings.h" /* GeanyKeyGroup */ typedef struct SignalConnection { GObject *object; gulong handler_id; } SignalConnection; typedef struct GeanyPluginPrivate { GModule *module; gchar *filename; /* plugin filename (/path/libname.so) */ PluginInfo info; /* plugin name, description, etc */ GeanyPlugin public; /* fields the plugin can read */ void (*init) (GeanyData *data); /* Called when the plugin is enabled */ GtkWidget* (*configure) (GtkDialog *dialog); /* plugins configure dialog, optional */ void (*configure_single) (GtkWidget *parent); /* plugin configure dialog, optional */ void (*help) (void); /* Called when the plugin should show some help, optional */ void (*cleanup) (void); /* Called when the plugin is disabled or when Geany exits */ /* extra stuff */ PluginFields fields; GeanyKeyGroup *key_group; GeanyAutoSeparator toolbar_separator; GArray *signal_ids; /* SignalConnection's to disconnect when unloading */ GList *sources; /* GSources to destroy when unloading */ } GeanyPluginPrivate; typedef GeanyPluginPrivate Plugin; /* shorter alias */ #endif /* GEANY_PLUGINPRIVATE_H */ geany-1.23.1+dfsg/src/plugins.c0000644000175000017500000011616412146146075016503 0ustar hyperairhyperair/* * plugins.c - this file is part of Geany, a fast and lightweight IDE * * Copyright 2007-2012 Enrico Tröger * Copyright 2007-2012 Nick Treleaven * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* Code to manage, load and unload plugins. */ #include "geany.h" #ifdef HAVE_PLUGINS #include #include "Scintilla.h" #include "ScintillaWidget.h" #include "prefix.h" #include "plugins.h" #include "plugindata.h" #include "support.h" #include "utils.h" #include "document.h" #include "filetypes.h" #include "templates.h" #include "sciwrappers.h" #include "ui_utils.h" #include "editor.h" #include "dialogs.h" #include "msgwindow.h" #include "prefs.h" #include "geanywraplabel.h" /* #include "build.h" included in plugindata.h so it can use enums */ #include "encodings.h" #include "search.h" #include "highlighting.h" #include "keybindings.h" #include "navqueue.h" #include "main.h" #include "toolbar.h" #include "stash.h" #include "symbols.h" #include "keyfile.h" #include "win32.h" #include "pluginutils.h" #include "pluginprivate.h" GList *active_plugin_list = NULL; /* list of only actually loaded plugins, always valid */ static gboolean want_plugins = FALSE; /* list of all available, loadable plugins, only valid as long as the plugin manager dialog is * opened, afterwards it will be destroyed */ static GList *plugin_list = NULL; static gchar **active_plugins_pref = NULL; /* list of plugin filenames to load at startup */ static GList *failed_plugins_list = NULL; /* plugins the user wants active but can't be used */ static GtkWidget *menu_separator = NULL; static gchar *get_plugin_path(void); static void pm_show_dialog(GtkMenuItem *menuitem, gpointer user_data); static PluginFuncs plugin_funcs = { &plugin_add_toolbar_item, &plugin_module_make_resident, &plugin_signal_connect, &plugin_set_key_group, &plugin_show_configure, &plugin_timeout_add, &plugin_timeout_add_seconds, &plugin_idle_add }; static DocumentFuncs doc_funcs = { &document_new_file, &document_get_current, &document_get_from_page, &document_find_by_filename, &document_find_by_real_path, &document_save_file, &document_open_file, &document_open_files, &document_remove_page, &document_reload_file, &document_set_encoding, &document_set_text_changed, &document_set_filetype, &document_close, &document_index, &document_save_file_as, &document_rename_file, &document_get_status_color, &document_get_basename_for_display, &document_get_notebook_page, &document_compare_by_display_name, &document_compare_by_tab_order, &document_compare_by_tab_order_reverse }; static EditorFuncs editor_funcs = { &editor_get_indent_prefs, &editor_create_widget, &editor_indicator_set_on_range, &editor_indicator_set_on_line, &editor_indicator_clear, &editor_set_indent_type, &editor_get_word_at_pos, &editor_get_eol_char_name, &editor_get_eol_char_len, &editor_get_eol_char, &editor_insert_text_block, &editor_get_eol_char_mode, &editor_goto_pos, &editor_find_snippet, &editor_insert_snippet }; static ScintillaFuncs scintilla_funcs = { &scintilla_send_message, &scintilla_new }; /* Macro to prevent a duplicate macro being generated in geanyfunctions.h */ #define _scintilla_send_message_macro scintilla_send_message static SciFuncs sci_funcs = { &_scintilla_send_message_macro, &sci_send_command, &sci_start_undo_action, &sci_end_undo_action, &sci_set_text, &sci_insert_text, &sci_get_text, &sci_get_length, &sci_get_current_position, &sci_set_current_position, &sci_get_col_from_position, &sci_get_line_from_position, &sci_get_position_from_line, &sci_replace_sel, &sci_get_selected_text, &sci_get_selected_text_length, &sci_get_selection_start, &sci_get_selection_end, &sci_get_selection_mode, &sci_set_selection_mode, &sci_set_selection_start, &sci_set_selection_end, &sci_get_text_range, &sci_get_line, &sci_get_line_length, &sci_get_line_count, &sci_get_line_is_visible, &sci_ensure_line_is_visible, &sci_scroll_caret, &sci_find_matching_brace, &sci_get_style_at, &sci_get_char_at, &sci_get_current_line, &sci_has_selection, &sci_get_tab_width, &sci_indicator_clear, &sci_indicator_set, &sci_get_contents, &sci_get_contents_range, &sci_get_selection_contents, &sci_set_font, &sci_get_line_end_position, &sci_set_target_start, &sci_set_target_end, &sci_replace_target, &sci_set_marker_at_line, &sci_delete_marker_at_line, &sci_is_marker_set_at_line, &sci_goto_line, &sci_find_text, &sci_set_line_indentation, &sci_get_line_indentation, &sci_get_lexer }; static TemplateFuncs template_funcs = { &templates_get_template_fileheader }; static UtilsFuncs utils_funcs = { &utils_str_equal, &utils_string_replace_all, &utils_get_file_list, &utils_write_file, &utils_get_locale_from_utf8, &utils_get_utf8_from_locale, &utils_remove_ext_from_filename, &utils_mkdir, &utils_get_setting_boolean, &utils_get_setting_integer, &utils_get_setting_string, &utils_spawn_sync, &utils_spawn_async, &utils_str_casecmp, &utils_get_date_time, &utils_open_browser, &utils_string_replace_first, &utils_str_middle_truncate, &utils_str_remove_chars, &utils_get_file_list_full, &utils_copy_environment, &utils_find_open_xml_tag, &utils_find_open_xml_tag_pos }; static UIUtilsFuncs uiutils_funcs = { &ui_dialog_vbox_new, &ui_frame_new_with_alignment, &ui_set_statusbar, &ui_table_add_row, &ui_path_box_new, &ui_button_new_with_image, &ui_add_document_sensitive, &ui_widget_set_tooltip_text, &ui_image_menu_item_new, &ui_lookup_widget, &ui_progress_bar_start, &ui_progress_bar_stop, &ui_entry_add_clear_icon, &ui_menu_add_document_items, &ui_widget_modify_font_from_string, &ui_is_keyval_enter_or_return, &ui_get_gtk_settings_integer, &ui_combo_box_add_to_history, &ui_menu_add_document_items_sorted, &ui_lookup_stock_label }; static DialogFuncs dialog_funcs = { &dialogs_show_question, &dialogs_show_msgbox, &dialogs_show_save_as, &dialogs_show_input_numeric, &dialogs_show_input }; /* Macro to prevent confusing macro being generated in geanyfunctions.h */ #define _lookup_widget_macro ui_lookup_widget /* deprecated */ static SupportFuncs support_funcs = { &_lookup_widget_macro }; static MsgWinFuncs msgwin_funcs = { &msgwin_status_add, &msgwin_compiler_add, &msgwin_msg_add, &msgwin_clear_tab, &msgwin_switch_tab, &msgwin_set_messages_dir }; static EncodingFuncs encoding_funcs = { &encodings_convert_to_utf8, &encodings_convert_to_utf8_from_charset, &encodings_get_charset_from_index }; static KeybindingFuncs keybindings_funcs = { &keybindings_send_command, &keybindings_set_item, &keybindings_get_item }; static TagManagerFuncs tagmanager_funcs = { &tm_get_real_path, &tm_source_file_new, &tm_workspace_add_object, &tm_source_file_update, &tm_work_object_free, &tm_workspace_remove_object }; static SearchFuncs search_funcs = { &search_show_find_in_files_dialog }; static HighlightingFuncs highlighting_funcs = { &highlighting_get_style, &highlighting_set_styles, &highlighting_is_string_style, &highlighting_is_comment_style, &highlighting_is_code_style }; static FiletypeFuncs filetype_funcs = { &filetypes_detect_from_file, &filetypes_lookup_by_name, &filetypes_index, &filetypes_get_display_name, &filetypes_get_sorted_by_name }; static NavQueueFuncs navqueue_funcs = { &navqueue_goto_line }; static MainFuncs main_funcs = { &main_reload_configuration, &main_locale_init, &main_is_realized }; static StashFuncs stash_funcs = { &stash_group_new, &stash_group_add_boolean, &stash_group_add_integer, &stash_group_add_string, &stash_group_add_string_vector, &stash_group_load_from_key_file, &stash_group_save_to_key_file, &stash_group_free, &stash_group_load_from_file, &stash_group_save_to_file, &stash_group_add_toggle_button, &stash_group_add_radio_buttons, &stash_group_add_spin_button_integer, &stash_group_add_combo_box, &stash_group_add_combo_box_entry, &stash_group_add_entry, &stash_group_add_widget_property, &stash_group_display, &stash_group_update, &stash_group_free_settings }; static SymbolsFuncs symbols_funcs = { &symbols_get_context_separator }; static BuildFuncs build_funcs = { &build_activate_menu_item, &build_get_current_menu_item, &build_remove_menu_item, &build_set_menu_item, &build_get_group_count }; static GeanyFunctions geany_functions = { &doc_funcs, &sci_funcs, &template_funcs, &utils_funcs, &uiutils_funcs, &support_funcs, &dialog_funcs, &msgwin_funcs, &encoding_funcs, &keybindings_funcs, &tagmanager_funcs, &search_funcs, &highlighting_funcs, &filetype_funcs, &navqueue_funcs, &editor_funcs, &main_funcs, &plugin_funcs, &scintilla_funcs, &msgwin_funcs, &stash_funcs, &symbols_funcs, &build_funcs }; static GeanyData geany_data; static void geany_data_init(void) { GeanyData gd = { app, &main_widgets, documents_array, filetypes_array, &prefs, &interface_prefs, &toolbar_prefs, &editor_prefs, &file_prefs, &search_prefs, &tool_prefs, &template_prefs, &build_info, filetypes_by_title }; geany_data = gd; } /* Prevent the same plugin filename being loaded more than once. * Note: g_module_name always returns the .so name, even when Plugin::filename is a .la file. */ static gboolean plugin_loaded(GModule *module) { gchar *basename_module, *basename_loaded; GList *item; basename_module = g_path_get_basename(g_module_name(module)); for (item = plugin_list; item != NULL; item = g_list_next(item)) { basename_loaded = g_path_get_basename( g_module_name(((Plugin*)item->data)->module)); if (utils_str_equal(basename_module, basename_loaded)) { g_free(basename_loaded); g_free(basename_module); return TRUE; } g_free(basename_loaded); } /* Look also through the list of active plugins. This prevents problems when we have the same * plugin in libdir/geany/ AND in configdir/plugins/ and the one in libdir/geany/ is loaded * as active plugin. The plugin manager list would only take the one in configdir/geany/ and * the plugin manager would list both plugins. Additionally, unloading the active plugin * would cause a crash. */ for (item = active_plugin_list; item != NULL; item = g_list_next(item)) { basename_loaded = g_path_get_basename(g_module_name(((Plugin*)item->data)->module)); if (utils_str_equal(basename_module, basename_loaded)) { g_free(basename_loaded); g_free(basename_module); return TRUE; } g_free(basename_loaded); } g_free(basename_module); return FALSE; } static Plugin *find_active_plugin_by_name(const gchar *filename) { GList *item; g_return_val_if_fail(filename, FALSE); for (item = active_plugin_list; item != NULL; item = g_list_next(item)) { if (utils_str_equal(filename, ((Plugin*)item->data)->filename)) return item->data; } return NULL; } static gboolean plugin_check_version(GModule *module) { gint (*version_check)(gint) = NULL; g_module_symbol(module, "plugin_version_check", (void *) &version_check); if (G_UNLIKELY(! version_check)) { geany_debug("Plugin \"%s\" has no plugin_version_check() function - ignoring plugin!", g_module_name(module)); return FALSE; } else { gint result = version_check(GEANY_ABI_VERSION); if (result < 0) { msgwin_status_add(_("The plugin \"%s\" is not binary compatible with this " "release of Geany - please recompile it."), g_module_name(module)); geany_debug("Plugin \"%s\" is not binary compatible with this " "release of Geany - recompile it.", g_module_name(module)); return FALSE; } if (result > GEANY_API_VERSION) { geany_debug("Plugin \"%s\" requires a newer version of Geany (API >= v%d).", g_module_name(module), result); return FALSE; } } return TRUE; } static void add_callbacks(Plugin *plugin, PluginCallback *callbacks) { PluginCallback *cb; guint i, len = 0; while (TRUE) { cb = &callbacks[len]; if (!cb->signal_name || !cb->callback) break; len++; } if (len == 0) return; for (i = 0; i < len; i++) { cb = &callbacks[i]; plugin_signal_connect(&plugin->public, NULL, cb->signal_name, cb->after, cb->callback, cb->user_data); } } static void read_key_group(Plugin *plugin) { GeanyKeyGroupInfo *p_key_info; GeanyKeyGroup **p_key_group; g_module_symbol(plugin->module, "plugin_key_group_info", (void *) &p_key_info); g_module_symbol(plugin->module, "plugin_key_group", (void *) &p_key_group); if (p_key_info && p_key_group) { GeanyKeyGroupInfo *key_info = p_key_info; if (*p_key_group) geany_debug("Ignoring plugin_key_group symbol for plugin '%s' - " "use plugin_set_key_group() instead to allocate keybindings dynamically.", plugin->info.name); else { if (key_info->count) { GeanyKeyGroup *key_group = plugin_set_key_group(&plugin->public, key_info->name, key_info->count, NULL); if (key_group) *p_key_group = key_group; } else geany_debug("Ignoring plugin_key_group_info symbol for plugin '%s' - " "count field is zero. Maybe use plugin_set_key_group() instead?", plugin->info.name); } } else if (p_key_info || p_key_group) geany_debug("Ignoring only one of plugin_key_group[_info] symbols defined for plugin '%s'. " "Maybe use plugin_set_key_group() instead?", plugin->info.name); } static gint cmp_plugin_names(gconstpointer a, gconstpointer b) { const Plugin *pa = a; const Plugin *pb = b; return strcmp(pa->info.name, pb->info.name); } static void plugin_init(Plugin *plugin) { GeanyPlugin **p_geany_plugin; PluginCallback *callbacks; PluginInfo **p_info; PluginFields **plugin_fields; /* set these symbols before plugin_init() is called * we don't set geany_functions and geany_data since they are set directly by plugin_new() */ g_module_symbol(plugin->module, "geany_plugin", (void *) &p_geany_plugin); if (p_geany_plugin) *p_geany_plugin = &plugin->public; g_module_symbol(plugin->module, "plugin_info", (void *) &p_info); if (p_info) *p_info = &plugin->info; g_module_symbol(plugin->module, "plugin_fields", (void *) &plugin_fields); if (plugin_fields) *plugin_fields = &plugin->fields; read_key_group(plugin); /* start the plugin */ g_return_if_fail(plugin->init); plugin->init(&geany_data); /* store some function pointers for later use */ g_module_symbol(plugin->module, "plugin_configure", (void *) &plugin->configure); g_module_symbol(plugin->module, "plugin_configure_single", (void *) &plugin->configure_single); if (app->debug_mode && plugin->configure && plugin->configure_single) g_warning("Plugin '%s' implements plugin_configure_single() unnecessarily - " "only plugin_configure() will be used!", plugin->info.name); g_module_symbol(plugin->module, "plugin_help", (void *) &plugin->help); g_module_symbol(plugin->module, "plugin_cleanup", (void *) &plugin->cleanup); if (plugin->cleanup == NULL) { if (app->debug_mode) g_warning("Plugin '%s' has no plugin_cleanup() function - there may be memory leaks!", plugin->info.name); } /* now read any plugin-owned data that might have been set in plugin_init() */ if (plugin->fields.flags & PLUGIN_IS_DOCUMENT_SENSITIVE) { ui_add_document_sensitive(plugin->fields.menu_item); } g_module_symbol(plugin->module, "plugin_callbacks", (void *) &callbacks); if (callbacks) add_callbacks(plugin, callbacks); /* remember which plugins are active. * keep list sorted so tools menu items and plugin preference tabs are * sorted by plugin name */ active_plugin_list = g_list_insert_sorted(active_plugin_list, plugin, cmp_plugin_names); geany_debug("Loaded: %s (%s)", plugin->filename, NVL(plugin->info.name, "")); } /* Load and optionally init a plugin. * init_plugin decides whether the plugin's plugin_init() function should be called or not. If it is * called, the plugin will be started, if not the plugin will be read only (for the list of * available plugins in the plugin manager). * When add_to_list is set, the plugin will be added to the plugin manager's plugin_list. */ static Plugin* plugin_new(const gchar *fname, gboolean init_plugin, gboolean add_to_list) { Plugin *plugin; GModule *module; GeanyData **p_geany_data; GeanyFunctions **p_geany_functions; void (*plugin_set_info)(PluginInfo*); g_return_val_if_fail(fname, NULL); g_return_val_if_fail(g_module_supported(), NULL); /* find the plugin in the list of already loaded, active plugins and use it, otherwise * load the module */ plugin = find_active_plugin_by_name(fname); if (plugin != NULL) { geany_debug("Plugin \"%s\" already loaded.", fname); if (add_to_list) { /* do not add to the list twice */ if (g_list_find(plugin_list, plugin) != NULL) return NULL; plugin_list = g_list_prepend(plugin_list, plugin); } return plugin; } /* Don't use G_MODULE_BIND_LAZY otherwise we can get unresolved symbols at runtime, * causing a segfault. Without that flag the module will safely fail to load. * G_MODULE_BIND_LOCAL also helps find undefined symbols e.g. app when it would * otherwise not be detected due to the shadowing of Geany's app variable. * Also without G_MODULE_BIND_LOCAL calling public functions e.g. the old info() * function from a plugin will be shadowed. */ module = g_module_open(fname, G_MODULE_BIND_LOCAL); if (! module) { geany_debug("Can't load plugin: %s", g_module_error()); return NULL; } if (plugin_loaded(module)) { geany_debug("Plugin \"%s\" already loaded.", fname); if (! g_module_close(module)) g_warning("%s: %s", fname, g_module_error()); return NULL; } if (! plugin_check_version(module)) { if (! g_module_close(module)) g_warning("%s: %s", fname, g_module_error()); return NULL; } g_module_symbol(module, "plugin_set_info", (void *) &plugin_set_info); if (plugin_set_info == NULL) { geany_debug("No plugin_set_info() defined for \"%s\" - ignoring plugin!", fname); if (! g_module_close(module)) g_warning("%s: %s", fname, g_module_error()); return NULL; } plugin = g_new0(Plugin, 1); /* set basic fields here to allow plugins to call Geany functions in set_info() */ g_module_symbol(module, "geany_data", (void *) &p_geany_data); if (p_geany_data) *p_geany_data = &geany_data; g_module_symbol(module, "geany_functions", (void *) &p_geany_functions); if (p_geany_functions) *p_geany_functions = &geany_functions; /* read plugin name, etc. */ plugin_set_info(&plugin->info); if (G_UNLIKELY(! NZV(plugin->info.name))) { geany_debug("No plugin name set in plugin_set_info() for \"%s\" - ignoring plugin!", fname); if (! g_module_close(module)) g_warning("%s: %s", fname, g_module_error()); g_free(plugin); return NULL; } g_module_symbol(module, "plugin_init", (void *) &plugin->init); if (plugin->init == NULL) { geany_debug("Plugin '%s' has no plugin_init() function - ignoring plugin!", plugin->info.name); if (! g_module_close(module)) g_warning("%s: %s", fname, g_module_error()); g_free(plugin); return NULL; } /*geany_debug("Initializing plugin '%s'", plugin->info.name);*/ plugin->filename = g_strdup(fname); plugin->module = module; plugin->public.info = &plugin->info; plugin->public.priv = plugin; if (init_plugin) plugin_init(plugin); if (add_to_list) plugin_list = g_list_prepend(plugin_list, plugin); return plugin; } static void remove_callbacks(Plugin *plugin) { GArray *signal_ids = plugin->signal_ids; SignalConnection *sc; if (signal_ids == NULL) return; foreach_array(SignalConnection, sc, signal_ids) g_signal_handler_disconnect(sc->object, sc->handler_id); g_array_free(signal_ids, TRUE); } static void remove_sources(Plugin *plugin) { GList *item; item = plugin->sources; while (item != NULL) { GList *next = item->next; /* cache the next pointer because current item will be freed */ g_source_destroy(item->data); item = next; } /* don't free the list here, it is allocated inside each source's data */ } static gboolean is_active_plugin(Plugin *plugin) { return (g_list_find(active_plugin_list, plugin) != NULL); } /* Clean up anything used by an active plugin */ static void plugin_cleanup(Plugin *plugin) { GtkWidget *widget; if (plugin->cleanup) plugin->cleanup(); remove_callbacks(plugin); remove_sources(plugin); if (plugin->key_group) keybindings_free_group(plugin->key_group); widget = plugin->toolbar_separator.widget; if (widget) gtk_widget_destroy(widget); geany_debug("Unloaded: %s", plugin->filename); } static void plugin_free(Plugin *plugin) { g_return_if_fail(plugin); g_return_if_fail(plugin->module); if (is_active_plugin(plugin)) plugin_cleanup(plugin); active_plugin_list = g_list_remove(active_plugin_list, plugin); if (! g_module_close(plugin->module)) g_warning("%s: %s", plugin->filename, g_module_error()); plugin_list = g_list_remove(plugin_list, plugin); g_free(plugin->filename); g_free(plugin); plugin = NULL; } static gchar *get_custom_plugin_path(const gchar *plugin_path_config, const gchar *plugin_path_system) { gchar *plugin_path_custom; if (!NZV(prefs.custom_plugin_path)) return NULL; plugin_path_custom = utils_get_locale_from_utf8(prefs.custom_plugin_path); utils_tidy_path(plugin_path_custom); /* check whether the custom plugin path is one of the system or user plugin paths * and abort if so */ if (utils_str_equal(plugin_path_custom, plugin_path_config) || utils_str_equal(plugin_path_custom, plugin_path_system)) { g_free(plugin_path_custom); return NULL; } return plugin_path_custom; } /* all 3 paths Geany looks for plugins in can change (even system path on Windows) * so we need to check active plugins are in the right place before loading */ static gboolean check_plugin_path(const gchar *fname) { gchar *plugin_path_config; gchar *plugin_path_system; gchar *plugin_path_custom; gboolean ret = FALSE; plugin_path_config = g_build_filename(app->configdir, "plugins", NULL); if (g_str_has_prefix(fname, plugin_path_config)) ret = TRUE; plugin_path_system = get_plugin_path(); if (g_str_has_prefix(fname, plugin_path_system)) ret = TRUE; plugin_path_custom = get_custom_plugin_path(plugin_path_config, plugin_path_system); if (plugin_path_custom) { if (g_str_has_prefix(fname, plugin_path_custom)) ret = TRUE; g_free(plugin_path_custom); } g_free(plugin_path_config); g_free(plugin_path_system); return ret; } /* load active plugins at startup */ static void load_active_plugins(void) { guint i, len; if (active_plugins_pref == NULL || (len = g_strv_length(active_plugins_pref)) == 0) return; for (i = 0; i < len; i++) { const gchar *fname = active_plugins_pref[i]; if (NZV(fname) && g_file_test(fname, G_FILE_TEST_EXISTS)) { if (!check_plugin_path(fname) || plugin_new(fname, TRUE, FALSE) == NULL) failed_plugins_list = g_list_prepend(failed_plugins_list, g_strdup(fname)); } } } static void load_plugins_from_path(const gchar *path) { GSList *list, *item; gchar *fname, *tmp; gint count = 0; list = utils_get_file_list(path, NULL, NULL); for (item = list; item != NULL; item = g_slist_next(item)) { tmp = strrchr(item->data, '.'); if (tmp == NULL || utils_str_casecmp(tmp, "." G_MODULE_SUFFIX) != 0) continue; fname = g_build_filename(path, item->data, NULL); if (plugin_new(fname, FALSE, TRUE)) count++; g_free(fname); } g_slist_foreach(list, (GFunc) g_free, NULL); g_slist_free(list); if (count) geany_debug("Added %d plugin(s) in '%s'.", count, path); } static gchar *get_plugin_path(void) { #ifdef G_OS_WIN32 gchar *path; gchar *install_dir = win32_get_installation_dir(); path = g_build_filename(install_dir, "lib", NULL); g_free(install_dir); return path; #else return g_build_filename(GEANY_LIBDIR, "geany", NULL); #endif } /* Load (but don't initialize) all plugins for the Plugin Manager dialog */ static void load_all_plugins(void) { gchar *plugin_path_config; gchar *plugin_path_system; gchar *plugin_path_custom; plugin_path_config = g_build_filename(app->configdir, "plugins", NULL); plugin_path_system = get_plugin_path(); /* first load plugins in ~/.config/geany/plugins/ */ load_plugins_from_path(plugin_path_config); /* load plugins from a custom path */ plugin_path_custom = get_custom_plugin_path(plugin_path_config, plugin_path_system); if (plugin_path_custom) { load_plugins_from_path(plugin_path_custom); g_free(plugin_path_custom); } /* finally load plugins from $prefix/lib/geany */ load_plugins_from_path(plugin_path_system); g_free(plugin_path_config); g_free(plugin_path_system); } static void on_tools_menu_show(GtkWidget *menu_item, G_GNUC_UNUSED gpointer user_data) { GList *item, *list = gtk_container_get_children(GTK_CONTAINER(menu_item)); guint i = 0; gboolean have_plugin_menu_items = FALSE; for (item = list; item != NULL; item = g_list_next(item)) { if (item->data == menu_separator) { if (i < g_list_length(list) - 1) { have_plugin_menu_items = TRUE; break; } } i++; } g_list_free(list); ui_widget_show_hide(menu_separator, have_plugin_menu_items); } /* Calling this starts up plugin support */ void plugins_load_active(void) { GtkWidget *widget; want_plugins = TRUE; geany_data_init(); widget = gtk_separator_menu_item_new(); gtk_widget_show(widget); gtk_container_add(GTK_CONTAINER(main_widgets.tools_menu), widget); widget = gtk_menu_item_new_with_mnemonic(_("_Plugin Manager")); gtk_container_add(GTK_CONTAINER(main_widgets.tools_menu), widget); gtk_widget_show(widget); g_signal_connect(widget, "activate", G_CALLBACK(pm_show_dialog), NULL); menu_separator = gtk_separator_menu_item_new(); gtk_container_add(GTK_CONTAINER(main_widgets.tools_menu), menu_separator); g_signal_connect(main_widgets.tools_menu, "show", G_CALLBACK(on_tools_menu_show), NULL); load_active_plugins(); } /* Update the global active plugins list so it's up-to-date when configuration * is saved. Called in response to GeanyObject's "save-settings" signal. */ static void update_active_plugins_pref(void) { gint i = 0; GList *list; gsize count; /* if plugins are disabled, don't clear list of active plugins */ if (!want_plugins) return; count = g_list_length(active_plugin_list) + g_list_length(failed_plugins_list); g_strfreev(active_plugins_pref); if (count == 0) { active_plugins_pref = NULL; return; } active_plugins_pref = g_new0(gchar*, count + 1); for (list = g_list_first(active_plugin_list); list != NULL; list = list->next) { Plugin *plugin = list->data; active_plugins_pref[i] = g_strdup(plugin->filename); i++; } for (list = g_list_first(failed_plugins_list); list != NULL; list = list->next) { const gchar *fname = list->data; active_plugins_pref[i] = g_strdup(fname); i++; } active_plugins_pref[i] = NULL; } /* called even if plugin support is disabled */ void plugins_init(void) { StashGroup *group; gchar *path; path = get_plugin_path(); geany_debug("System plugin path: %s", path); g_free(path); group = stash_group_new("plugins"); configuration_add_pref_group(group, TRUE); stash_group_add_toggle_button(group, &prefs.load_plugins, "load_plugins", TRUE, "check_plugins"); stash_group_add_entry(group, &prefs.custom_plugin_path, "custom_plugin_path", "", "extra_plugin_path_entry"); g_signal_connect(geany_object, "save-settings", G_CALLBACK(update_active_plugins_pref), NULL); stash_group_add_string_vector(group, &active_plugins_pref, "active_plugins", NULL); } /* called even if plugin support is disabled */ void plugins_finalize(void) { if (failed_plugins_list != NULL) { g_list_foreach(failed_plugins_list, (GFunc) g_free, NULL); g_list_free(failed_plugins_list); } if (active_plugin_list != NULL) { g_list_foreach(active_plugin_list, (GFunc) plugin_free, NULL); g_list_free(active_plugin_list); } g_strfreev(active_plugins_pref); } /* Check whether there are any plugins loaded which provide a configure symbol */ gboolean plugins_have_preferences(void) { GList *item; if (active_plugin_list == NULL) return FALSE; foreach_list(item, active_plugin_list) { Plugin *plugin = item->data; if (plugin->configure != NULL || plugin->configure_single != NULL) return TRUE; } return FALSE; } /* Plugin Manager */ enum { PLUGIN_COLUMN_CHECK = 0, PLUGIN_COLUMN_NAME, PLUGIN_COLUMN_DESCRIPTION, PLUGIN_COLUMN_PLUGIN, PLUGIN_N_COLUMNS, PM_BUTTON_CONFIGURE, PM_BUTTON_HELP }; typedef struct { GtkWidget *dialog; GtkWidget *tree; GtkListStore *store; GtkWidget *plugin_label; GtkWidget *filename_label; GtkWidget *author_label; GtkWidget *configure_button; GtkWidget *help_button; } PluginManagerWidgets; static PluginManagerWidgets pm_widgets; static void pm_update_buttons(Plugin *p) { gboolean is_active; is_active = is_active_plugin(p); gtk_widget_set_sensitive(pm_widgets.configure_button, (p->configure || p->configure_single) && is_active); gtk_widget_set_sensitive(pm_widgets.help_button, p->help != NULL && is_active); } static void pm_selection_changed(GtkTreeSelection *selection, gpointer user_data) { GtkTreeIter iter; GtkTreeModel *model; Plugin *p; if (gtk_tree_selection_get_selected(selection, &model, &iter)) { gtk_tree_model_get(model, &iter, PLUGIN_COLUMN_PLUGIN, &p, -1); if (p != NULL) { gchar *text; PluginInfo *pi; pi = &p->info; /* Translators: */ text = g_strdup_printf(_("%s %s"), pi->name, pi->version); gtk_label_set_text(GTK_LABEL(pm_widgets.plugin_label), text); gtk_label_set_text(GTK_LABEL(pm_widgets.filename_label), p->filename); gtk_label_set_text(GTK_LABEL(pm_widgets.author_label), pi->author); g_free(text); pm_update_buttons(p); } } } static void pm_plugin_toggled(GtkCellRendererToggle *cell, gchar *pth, gpointer data) { gboolean old_state, state; gchar *file_name; GtkTreeIter iter; GtkTreePath *path = gtk_tree_path_new_from_string(pth); Plugin *p; gtk_tree_model_get_iter(GTK_TREE_MODEL(pm_widgets.store), &iter, path); gtk_tree_path_free(path); gtk_tree_model_get(GTK_TREE_MODEL(pm_widgets.store), &iter, PLUGIN_COLUMN_CHECK, &old_state, PLUGIN_COLUMN_PLUGIN, &p, -1); /* no plugins item */ if (p == NULL) return; state = ! old_state; /* toggle the state */ /* save the filename of the plugin */ file_name = g_strdup(p->filename); /* unload plugin module */ if (!state) /* save shortcuts (only need this group, but it doesn't take long) */ keybindings_write_to_file(); plugin_free(p); /* reload plugin module and initialize it if item is checked */ p = plugin_new(file_name, state, TRUE); if (!p) { /* plugin file may no longer be on disk, or is now incompatible */ gtk_list_store_remove(pm_widgets.store, &iter); } else { if (state) keybindings_load_keyfile(); /* load shortcuts */ /* update model */ gtk_list_store_set(pm_widgets.store, &iter, PLUGIN_COLUMN_CHECK, state, PLUGIN_COLUMN_PLUGIN, p, -1); /* set again the sensitiveness of the configure and help buttons */ pm_update_buttons(p); } g_free(file_name); } static void pm_prepare_treeview(GtkWidget *tree, GtkListStore *store) { GtkCellRenderer *text_renderer, *checkbox_renderer; GtkTreeViewColumn *column; GtkTreeIter iter; GList *list; GtkTreeSelection *sel; checkbox_renderer = gtk_cell_renderer_toggle_new(); column = gtk_tree_view_column_new_with_attributes( _("Active"), checkbox_renderer, "active", PLUGIN_COLUMN_CHECK, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column); g_signal_connect(checkbox_renderer, "toggled", G_CALLBACK(pm_plugin_toggled), NULL); text_renderer = gtk_cell_renderer_text_new(); column = gtk_tree_view_column_new_with_attributes( _("Plugin"), text_renderer, "text", PLUGIN_COLUMN_NAME, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column); text_renderer = gtk_cell_renderer_text_new(); g_object_set(text_renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL); column = gtk_tree_view_column_new_with_attributes( _("Description"), text_renderer, "text", PLUGIN_COLUMN_DESCRIPTION, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column); gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(tree), TRUE); gtk_tree_view_set_enable_search(GTK_TREE_VIEW(tree), FALSE); gtk_tree_sortable_set_sort_column_id( GTK_TREE_SORTABLE(store), PLUGIN_COLUMN_NAME, GTK_SORT_ASCENDING); /* selection handling */ sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)); gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE); g_signal_connect(sel, "changed", G_CALLBACK(pm_selection_changed), NULL); list = g_list_first(plugin_list); if (list == NULL) { gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, PLUGIN_COLUMN_CHECK, FALSE, PLUGIN_COLUMN_NAME, _("No plugins available."), PLUGIN_COLUMN_DESCRIPTION, "", PLUGIN_COLUMN_PLUGIN, NULL, -1); } else { Plugin *p; for (; list != NULL; list = list->next) { p = list->data; gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, PLUGIN_COLUMN_CHECK, is_active_plugin(p), PLUGIN_COLUMN_NAME, p->info.name, PLUGIN_COLUMN_DESCRIPTION, p->info.description, PLUGIN_COLUMN_PLUGIN, p, -1); } } gtk_tree_view_set_model(GTK_TREE_VIEW(tree), GTK_TREE_MODEL(store)); g_object_unref(store); } static void pm_on_plugin_button_clicked(GtkButton *button, gpointer user_data) { GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; Plugin *p; selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(pm_widgets.tree)); if (gtk_tree_selection_get_selected(selection, &model, &iter)) { gtk_tree_model_get(model, &iter, PLUGIN_COLUMN_PLUGIN, &p, -1); if (p != NULL) { if (GPOINTER_TO_INT(user_data) == PM_BUTTON_CONFIGURE) plugin_show_configure(&p->public); else if (GPOINTER_TO_INT(user_data) == PM_BUTTON_HELP && p->help != NULL) p->help(); } } } static void free_non_active_plugin(gpointer data, gpointer user_data) { Plugin *plugin = data; /* don't do anything when closing the plugin manager and it is an active plugin */ if (is_active_plugin(plugin)) return; plugin_free(plugin); } /* Callback when plugin manager dialog closes, only ever has response of * GTK_RESPONSE_OK or GTK_RESPONSE_DELETE_EVENT and both are treated the same. */ static void pm_dialog_response(GtkDialog *dialog, gint response, gpointer user_data) { if (plugin_list != NULL) { /* remove all non-active plugins from the list */ g_list_foreach(plugin_list, free_non_active_plugin, NULL); g_list_free(plugin_list); plugin_list = NULL; } gtk_widget_destroy(GTK_WIDGET(dialog)); } static GtkWidget *create_table_label(const gchar *text) { GtkWidget *label; PangoAttrList *attrs; attrs = pango_attr_list_new(); pango_attr_list_insert(attrs, pango_attr_weight_new(PANGO_WEIGHT_BOLD)); label = gtk_label_new(text); gtk_label_set_attributes(GTK_LABEL(label), attrs); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0); pango_attr_list_unref(attrs); return label; } static void pm_show_dialog(GtkMenuItem *menuitem, gpointer user_data) { GtkWidget *vbox, *vbox2, *label_vbox, *hbox, *swin, *label, *label2, *desc_win, *table, *paned; /* before showing the dialog, we need to create the list of available plugins */ load_all_plugins(); pm_widgets.dialog = gtk_dialog_new_with_buttons(_("Plugins"), GTK_WINDOW(main_widgets.window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); vbox = ui_dialog_vbox_new(GTK_DIALOG(pm_widgets.dialog)); gtk_widget_set_name(pm_widgets.dialog, "GeanyDialog"); gtk_box_set_spacing(GTK_BOX(vbox), 6); gtk_window_set_default_size(GTK_WINDOW(pm_widgets.dialog), 500, 450); pm_widgets.tree = gtk_tree_view_new(); pm_widgets.store = gtk_list_store_new( PLUGIN_N_COLUMNS, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER); pm_prepare_treeview(pm_widgets.tree, pm_widgets.store); swin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(swin), GTK_SHADOW_IN); gtk_container_add(GTK_CONTAINER(swin), pm_widgets.tree); label = geany_wrap_label_new(_("Choose which plugins should be loaded at startup:")); pm_widgets.configure_button = gtk_button_new_from_stock(GTK_STOCK_PREFERENCES); gtk_widget_set_sensitive(pm_widgets.configure_button, FALSE); g_signal_connect(pm_widgets.configure_button, "clicked", G_CALLBACK(pm_on_plugin_button_clicked), GINT_TO_POINTER(PM_BUTTON_CONFIGURE)); pm_widgets.help_button = gtk_button_new_from_stock(GTK_STOCK_HELP); gtk_widget_set_sensitive(pm_widgets.help_button, FALSE); g_signal_connect(pm_widgets.help_button, "clicked", G_CALLBACK(pm_on_plugin_button_clicked), GINT_TO_POINTER(PM_BUTTON_HELP)); label2 = gtk_label_new(_("Plugin details:")); gtk_label_set_use_markup(GTK_LABEL(label2), TRUE); gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5); table = gtk_table_new(3, 2, FALSE); gtk_table_set_col_spacings(GTK_TABLE(table), 6); pm_widgets.plugin_label = geany_wrap_label_new(NULL); pm_widgets.filename_label = geany_wrap_label_new(NULL); pm_widgets.author_label = geany_wrap_label_new(NULL); gtk_table_attach(GTK_TABLE(table), create_table_label(_("Plugin:")), 0, 1, 0, 1, GTK_FILL, GTK_FILL, 0, 0); gtk_table_attach(GTK_TABLE(table), create_table_label(_("Author(s):")), 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 0); gtk_table_attach(GTK_TABLE(table), create_table_label(_("Filename:")), 0, 1, 2, 3, GTK_FILL, GTK_FILL, 0, 0); gtk_table_attach(GTK_TABLE(table), pm_widgets.plugin_label, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); gtk_table_attach(GTK_TABLE(table), pm_widgets.author_label, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); gtk_table_attach(GTK_TABLE(table), pm_widgets.filename_label, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); desc_win = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(desc_win), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(desc_win), table); hbox = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), label2, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), pm_widgets.help_button, FALSE, FALSE, 4); gtk_box_pack_start(GTK_BOX(hbox), pm_widgets.configure_button, FALSE, FALSE, 0); label_vbox = gtk_vbox_new(FALSE, 3); gtk_box_pack_start(GTK_BOX(label_vbox), hbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(label_vbox), desc_win, TRUE, TRUE, 0); paned = gtk_vpaned_new(); gtk_paned_pack1(GTK_PANED(paned), swin, TRUE, FALSE); gtk_paned_pack2(GTK_PANED(paned), label_vbox, FALSE, FALSE); vbox2 = gtk_vbox_new(FALSE, 3); gtk_box_pack_start(GTK_BOX(vbox2), label, FALSE, FALSE, 5); gtk_box_pack_start(GTK_BOX(vbox2), paned, TRUE, TRUE, 0); g_signal_connect(pm_widgets.dialog, "response", G_CALLBACK(pm_dialog_response), NULL); gtk_box_pack_start(GTK_BOX(vbox), vbox2, TRUE, TRUE, 0); gtk_widget_show_all(pm_widgets.dialog); } #endif geany-1.23.1+dfsg/src/keyfile.h0000644000175000017500000000354412146146075016454 0ustar hyperairhyperair/* * keyfile.h - this file is part of Geany, a fast and lightweight IDE * * Copyright 2005-2012 Enrico Tröger * Copyright 2006-2012 Nick Treleaven * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef GEANY_KEYFILE_H #define GEANY_KEYFILE_H 1 extern GPtrArray *pref_groups; void configuration_init(void); void configuration_finalize(void); struct StashGroup; void configuration_add_pref_group(struct StashGroup *group, gboolean for_prefs_dialog); void configuration_add_various_pref_group(struct StashGroup *group); void configuration_save(void); gboolean configuration_load(void); void configuration_open_files(void); void configuration_reload_default_session(void); void configuration_save_default_session(void); void configuration_load_session_files(GKeyFile *config, gboolean read_recent_files); void configuration_save_session_files(GKeyFile *config); /* set some settings which are already read from the config file, but need other things, like the * realisation of the main window */ void configuration_apply_settings(void); #endif geany-1.23.1+dfsg/src/main.h0000644000175000017500000000415712146146075015751 0ustar hyperairhyperair/* * main.h - this file is part of Geany, a fast and lightweight IDE * * Copyright 2006-2012 Enrico Tröger * Copyright 2006-2012 Nick Treleaven * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef GEANY_MAIN_H #define GEANY_MAIN_H typedef struct { gboolean new_instance; gchar *socket_filename; gboolean load_session; gint goto_line; gint goto_column; gboolean ignore_global_tags; gboolean list_documents; gboolean readonly; } CommandLineOptions; extern CommandLineOptions cl_options; typedef struct GeanyStatus { gboolean opening_session_files; /* state at startup while opening session files */ gboolean closing_all; /* the state while closing all tabs * (used to prevent notebook switch page signals) */ gboolean quitting; /* state when Geany is quitting completely */ gboolean main_window_realized; } GeanyStatus; extern GeanyStatus main_status; const gchar *main_get_version_string(void); gchar *main_get_argv_filename(const gchar *filename); void main_quit(void); gboolean main_handle_filename(const gchar *locale_filename); void main_reload_configuration(void); void main_locale_init(const gchar *locale_dir, const gchar *gettext_package); gboolean main_is_realized(void); void main_load_project_from_command_line(const gchar *locale_filename, gboolean use_session); #endif geany-1.23.1+dfsg/src/vte.h0000644000175000017500000000423012146146075015613 0ustar hyperairhyperair/* * vte.h - this file is part of Geany, a fast and lightweight IDE * * Copyright 2005-2012 Enrico Tröger * Copyright 2006-2012 Nick Treleaven < * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef GEANY_VTE_H #define GEANY_VTE_H 1 #ifdef HAVE_VTE typedef struct { gboolean load_vte; /* this is the preference, NOT the current instance VTE state */ gboolean have_vte; /* use this field to check if the current instance has VTE */ gchar *lib_vte; gchar *dir; } VteInfo; extern VteInfo vte_info; typedef struct { GtkWidget *vte; GtkWidget *menu; GtkWidget *im_submenu; gboolean scroll_on_key; gboolean scroll_on_out; gboolean ignore_menu_bar_accel; gboolean follow_path; gboolean run_in_vte; gboolean skip_run_script; gboolean enable_bash_keys; gboolean cursor_blinks; gboolean send_selection_unsafe; gint scrollback_lines; gchar *emulation; gchar *shell; gchar *image; gchar *font; gchar *send_cmd_prefix; GdkColor *colour_fore; GdkColor *colour_back; } VteConfig; extern VteConfig *vc; void vte_init(void); void vte_close(void); void vte_apply_user_settings(void); gboolean vte_send_cmd(const gchar *cmd); const gchar *vte_get_working_directory(void); void vte_cwd(const gchar *filename, gboolean force); void vte_append_preferences_tab(void); void vte_send_selection_to_vte(void); void vte_select_all(void); #endif #endif geany-1.23.1+dfsg/src/utils.c0000644000175000017500000014627212146146075016165 0ustar hyperairhyperair/* * utils.c - this file is part of Geany, a fast and lightweight IDE * * Copyright 2005-2012 Enrico Tröger * Copyright 2006-2012 Nick Treleaven * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ /* * General utility functions, non-GTK related. */ #include "geany.h" #include #include #include #include #include #include #include #ifdef HAVE_SYS_STAT_H # include #endif #ifdef HAVE_SYS_TYPES_H # include #endif #include #include #include "prefs.h" #include "support.h" #include "document.h" #include "filetypes.h" #include "dialogs.h" #include "win32.h" #include "project.h" #include "ui_utils.h" #include "utils.h" /** * Tries to open the given URI in a browser. * On Windows, the system's default browser is opened. * On non-Windows systems, the browser command set in the preferences dialog is used. In case * that fails or it is unset, the user is asked to correct or fill it. * * @param uri The URI to open in the web browser. * * @since 0.16 **/ void utils_open_browser(const gchar *uri) { #ifdef G_OS_WIN32 g_return_if_fail(uri != NULL); win32_open_browser(uri); #else gboolean again = TRUE; g_return_if_fail(uri != NULL); while (again) { gchar *cmdline = g_strconcat(tool_prefs.browser_cmd, " \"", uri, "\"", NULL); if (g_spawn_command_line_async(cmdline, NULL)) again = FALSE; else { gchar *new_cmd = dialogs_show_input(_("Select Browser"), GTK_WINDOW(main_widgets.window), _("Failed to spawn the configured browser command. " "Please correct it or enter another one."), tool_prefs.browser_cmd); if (new_cmd == NULL) /* user canceled */ again = FALSE; else SETPTR(tool_prefs.browser_cmd, new_cmd); } g_free(cmdline); } #endif } /* taken from anjuta, to determine the EOL mode of the file */ gint utils_get_line_endings(const gchar* buffer, gsize size) { gsize i; guint cr, lf, crlf, max_mode; gint mode; cr = lf = crlf = 0; for (i = 0; i < size ; i++) { if (buffer[i] == 0x0a) { /* LF */ lf++; } else if (buffer[i] == 0x0d) { if (i >= (size - 1)) { /* Last char, CR */ cr++; } else { if (buffer[i + 1] != 0x0a) { /* CR */ cr++; } else { /* CRLF */ crlf++; } i++; } } } /* Vote for the maximum */ mode = SC_EOL_LF; max_mode = lf; if (crlf > max_mode) { mode = SC_EOL_CRLF; max_mode = crlf; } if (cr > max_mode) { mode = SC_EOL_CR; max_mode = cr; } return mode; } gboolean utils_isbrace(gchar c, gboolean include_angles) { switch (c) { case '<': case '>': return include_angles; case '(': case ')': case '{': case '}': case '[': case ']': return TRUE; default: return FALSE; } } gboolean utils_is_opening_brace(gchar c, gboolean include_angles) { switch (c) { case '<': return include_angles; case '(': case '{': case '[': return TRUE; default: return FALSE; } } /** * Writes @a text into a file named @a filename. * If the file doesn't exist, it will be created. * If it already exists, it will be overwritten. * * @warning You should use @c g_file_set_contents() instead if you don't need * file permissions and other metadata to be preserved, as that always handles * disk exhaustion safely. * * @param filename The filename of the file to write, in locale encoding. * @param text The text to write into the file. * * @return 0 if the file was successfully written, otherwise the @c errno of the * failed operation is returned. **/ gint utils_write_file(const gchar *filename, const gchar *text) { g_return_val_if_fail(filename != NULL, ENOENT); g_return_val_if_fail(text != NULL, EINVAL); if (file_prefs.use_safe_file_saving) { GError *error = NULL; if (! g_file_set_contents(filename, text, -1, &error)) { geany_debug("%s: could not write to file %s (%s)", G_STRFUNC, filename, error->message); g_error_free(error); return EIO; } } else { FILE *fp; gsize bytes_written, len; gboolean fail = FALSE; if (filename == NULL) return ENOENT; len = strlen(text); errno = 0; fp = g_fopen(filename, "w"); if (fp == NULL) fail = TRUE; else { bytes_written = fwrite(text, sizeof(gchar), len, fp); if (len != bytes_written) { fail = TRUE; geany_debug( "utils_write_file(): written only %"G_GSIZE_FORMAT" bytes, had to write %"G_GSIZE_FORMAT" bytes to %s", bytes_written, len, filename); } if (fclose(fp) != 0) fail = TRUE; } if (fail) { geany_debug("utils_write_file(): could not write to file %s (%s)", filename, g_strerror(errno)); return NVL(errno, EIO); } } return 0; } /** Searches backward through @a size bytes looking for a '<'. * @param sel . * @param size . * @return The tag name (newly allocated) or @c NULL if no opening tag was found. */ gchar *utils_find_open_xml_tag(const gchar sel[], gint size) { const gchar *cur, *begin; gsize len; cur = utils_find_open_xml_tag_pos(sel, size); if (cur == NULL) return NULL; cur++; /* skip the bracket */ begin = cur; while (strchr(":_-.", *cur) || isalnum(*cur)) cur++; len = (gsize)(cur - begin); return len ? g_strndup(begin, len) : NULL; } /** Searches backward through @a size bytes looking for a '<'. * @param sel . * @param size . * @return pointer to '<' of the found opening tag within @a sel, or @c NULL if no opening tag was found. */ const gchar *utils_find_open_xml_tag_pos(const gchar sel[], gint size) { /* stolen from anjuta and modified */ const gchar *begin, *cur; if (G_UNLIKELY(size < 3)) { /* Smallest tag is "

" which is 3 characters */ return NULL; } begin = &sel[0]; cur = &sel[size - 1]; /* Skip to the character before the closing brace */ while (cur > begin) { if (*cur == '>') break; --cur; } --cur; /* skip whitespace */ while (cur > begin && isspace(*cur)) cur--; if (*cur == '/') return NULL; /* we found a short tag which doesn't need to be closed */ while (cur > begin) { if (*cur == '<') break; /* exit immediately if such non-valid XML/HTML is detected, e.g. "