Revision: 920 http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=920&view=rev Author: frlan Date: 2009-09-07 19:01:24 +0000 (Mon, 07 Sep 2009)
Log Message: ----------- Remove geanyVC as single project from repository as it will be developed from inside geany-plugins combined project
Removed Paths: ------------- trunk/geanyvc/.gitignore trunk/geanyvc/COPYING trunk/geanyvc/ChangeLog trunk/geanyvc/INSTALL trunk/geanyvc/Makefile.am trunk/geanyvc/README trunk/geanyvc/THANKS trunk/geanyvc/TODO trunk/geanyvc/autogen.sh trunk/geanyvc/commit.glade trunk/geanyvc/configure.in trunk/geanyvc/depcomp trunk/geanyvc/dist/.gitignore trunk/geanyvc/dist/PKGBUILD.in trunk/geanyvc/dist/ebuild.in trunk/geanyvc/dist/geninst.sh trunk/geanyvc/dist/setup.nsi.in trunk/geanyvc/externdiff.c trunk/geanyvc/geanyvc.c trunk/geanyvc/geanyvc.h trunk/geanyvc/indent-all.sh trunk/geanyvc/install-sh trunk/geanyvc/makefile.win32 trunk/geanyvc/missing trunk/geanyvc/po/.gitignore trunk/geanyvc/po/ChangeLog trunk/geanyvc/po/LINGUAS trunk/geanyvc/po/POTFILES.in trunk/geanyvc/po/POTFILES.skip trunk/geanyvc/po/de.po trunk/geanyvc/tests/Makefile.am trunk/geanyvc/tests/unittests.c trunk/geanyvc/update_web.sh trunk/geanyvc/utils.c trunk/geanyvc/vc_bzr.c trunk/geanyvc/vc_cvs.c trunk/geanyvc/vc_git.c trunk/geanyvc/vc_hg.c trunk/geanyvc/vc_svk.c trunk/geanyvc/vc_svn.c
Deleted: trunk/geanyvc/.gitignore =================================================================== --- trunk/geanyvc/.gitignore 2009-09-07 19:00:22 UTC (rev 919) +++ trunk/geanyvc/.gitignore 2009-09-07 19:01:24 UTC (rev 920) @@ -1,22 +0,0 @@ -autom4te.cache -Makefile -Makefile.in -aclocal.m4 -config.log -config.status -config.guess -config.sub -configure -.deps -.libs -*.o -*.la -*.lo -libtool -*.tar.gz -stamp-h1 -config.h -config.h.in -intltool-* -mkinstalldirs -ltmain.sh
Deleted: trunk/geanyvc/COPYING =================================================================== --- trunk/geanyvc/COPYING 2009-09-07 19:00:22 UTC (rev 919) +++ trunk/geanyvc/COPYING 2009-09-07 19:01:24 UTC (rev 920) @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin St, 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 St, 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.
Deleted: trunk/geanyvc/INSTALL =================================================================== --- trunk/geanyvc/INSTALL 2009-09-07 19:00:22 UTC (rev 919) +++ trunk/geanyvc/INSTALL 2009-09-07 19:01:24 UTC (rev 920) @@ -1,13 +0,0 @@ -These installation instructions are written for a GNU/Linux system. - -At the time of this writing, building the plugin requires a recent SVN geany (r2411+) -installed. - - % configure - % make - % make install - -There is no "make uninstall" target, so if you want to remove the plugin, -just delete the "geanyvc.so" from geany plugins directory (usually: /usr/lib/geany). - -
Deleted: trunk/geanyvc/Makefile.am =================================================================== --- trunk/geanyvc/Makefile.am 2009-09-07 19:00:22 UTC (rev 919) +++ trunk/geanyvc/Makefile.am 2009-09-07 19:01:24 UTC (rev 920) @@ -1,23 +0,0 @@ -## Makefile.am -- Process this file with automake to produce Makefile.in -SUBDIRS = po tests - -EXTRA_DIST = \ - autogen.sh \ - makefile.win32 \ - intltool-extract.in \ - intltool-merge.in \ - intltool-update.in \ - indent-all.sh \ - THANKS \ - commit.glade - -dist_noinst_SCRIPTS = indent-all.sh - -noinst_HEADERS = geanyvc.h - -lib_LTLIBRARIES = geanyvc.la -geanyvc_la_SOURCES = geanyvc.c externdiff.c utils.c vc_git.c vc_cvs.c vc_svn.c vc_svk.c vc_bzr.c vc_hg.c -geanyvc_la_LDFLAGS = -module -avoid-version -geanyvc_la_LIBADD = @GEANY_LIBS@ - -AM_CPPFLAGS = @GEANY_CFLAGS@ -DGEANY_DISABLE_DEPRECATED -DLOCALEDIR=""$(localedir)""
Deleted: trunk/geanyvc/README =================================================================== --- trunk/geanyvc/README 2009-09-07 19:00:22 UTC (rev 919) +++ trunk/geanyvc/README 2009-09-07 19:01:24 UTC (rev 920) @@ -1,199 +0,0 @@ -.. |(version)| replace:: 0.6 - -======= -geanyvc -======= - -.. contents:: - -About -===== - -geanyvc is plugin that provides a uniform way of accessing the different -version-control systems inside Geany IDE. Only small subset of vc is -implemented, but, hey, you don't need anything besides diff, log, status, -revert and commit most time. - -In order to use it you need Geany 0.16. - -Features -======== - -geanyvc currently support the following version control systems: - -Bazaar, GIT, Mercurial, Subversion, SVK:: - - * diff file - * diff directory - * diff base directory - * blame - * log file - * log directory - * log base directory - * status - * revert file - * revert directory - * revert base directory - * show unmodified original file - * add file - * remove file - * update - * commit - -CVS:: - - * diff file - * diff directory - * diff base directory - * log file - * log directory - * log base directory - * status - * revert file - * revert directory - * revert base directory - * update - -Requirements -============ - -For compiling the plugin yourself, you will need the GTK (>= 2.6.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. -If you like to use spellchecking for your commit -messages you will also need gtkspell (>=2.0), but this is only optional. - -And obviously, you will need have Geany installed. If you have Geany installed -from the sources, you should be ready to go. -If you used a prepared package e.g. from your distribution you probably need -to install an additional package, this might be called geany-dev or geany-devel. -Please note that in order to compile and use this plugin, you need Geany 0.15 -or later. - -Furthermore you need, of course, a C compiler and the Make tool. -The GNU versions of these tools are recommended. - -Usage -===== - -After compiling and/or installing geanyvc, start Geany and go to menu -Tools->Plugin Manager and set checkbox at VC plugin. - -You can configure the following options: - -* Set Change flag for document tabs created with pluging. - -If this option is activated, every new by the VC-plugin created document tab -will be marked as changed. Even thus this option is useful in some cases, it -could cause a big number of sometimes annoying "Do you want to save"-dialogs. - -* Confirm adding new files to a VCS - -Shows a confirmation dialog on adding a new (created) file to VCS. If not set -you will not see dialog "Do you want to add <file>?" - -* Maximize commit dialog - -If this option is activated, commit dialog will fit the full size of your -monitor. If it is not set commit dialog size will be 700x500. - -* Use external diff viewer - -If this option is activated and you have **meld**, **kompare**, **kdiff3**, -**diffuse** or **tkdiff** available from command line, one of these program -will be used to show differences for "Diff From Current File" command. - -* Enable CVS/GIT/SVN/SVK/Bazaar/Mercurial - -geanyvc detect if opened file is in version control by checking directories -and executing commands from version control systems toolchain. These options -disable checking for particular version control system. Disabling not -required ones can speed up things. So it is recommended to activate svk only -if you want to use it, since it is quiet slow. - -License -======= - -geanyvc 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. - -Ideas, questions, patches and bug reports -========================================= - -If you add something, or fix a bug, please send a patch (in 'diff -u' -format) to the geany mailing list or to one of the authors listed bellow. - -Coding -====== - -Use static functions where possible. -Try to use GLib types and functions - e.g. g_free instead of free and -try to use only GLib 2.6 and GTK 2.6 functions. At least for the moment, -we want to keep the minimum requirement for GTK at 2.6. - -Style -===== - -The file indent-all.sh contains information about -the current code style. Run this script before commit. - -Download -======== - -The current version is: - -============= =============== ========================================================== -Geany Version Geanyvc Version Download -============= =============== ========================================================== -0.16 0.6 http://users.cosmostv.by/yurand/geanyvc/geanyvc-0.6.tar.gz -============= =============== ========================================================== - -Up to date source code can be downloaded here:: - - svn checkout http://geany-plugins.svn.sourceforge.net/svnroot/geany-plugins/trunk/geanyvc - -If you have old version of Geany installed you need old version of plugin as well. These versions of plugin -are no longer supported and if you find bug in one of them, it won't be fixed unless you do it yourself. - -============= =============== ========================================================== -Geany Version Geanyvc Version Download -============= =============== ========================================================== -0.15 0.5 http://users.cosmostv.by/yurand/geanyvc/geanyvc-0.5.tar.gz - -0.15 0.4 http://users.cosmostv.by/yurand/geanyvc/geanyvc-0.4.tar.gz - -0.14 0.3 http://users.cosmostv.by/yurand/geanyvc/geanyvc-0.3.tar.gz - -0.13 0.2 http://users.cosmostv.by/yurand/geanyvc/geanyvc-0.2.tar.gz -============= =============== ========================================================== - -Gentoo ------- - -Gentoo ebuild is available here: http://bugs.gentoo.org/show_bug.cgi?id=218522 - -Arch linux ----------- - -A package for Arch Linux is available here: http://aur.archlinux.org/packages.php?ID=16484 - -Source Mage ------------ - -To install geanyvc, just run the following command:: - - cast geanyvc - -Windows -------- - -A windows installer is available here: http://users.cosmostv.by/yurand/geanyvc/geanyvc-0.5_setup.exe - --- -2007-2008 by Yura Siamashka and Frank Lanitz -yurand2(at)gmail(dot)com -frank(at)frank(dot)uvena(dot)de
Deleted: trunk/geanyvc/THANKS =================================================================== --- trunk/geanyvc/THANKS 2009-09-07 19:00:22 UTC (rev 919) +++ trunk/geanyvc/THANKS 2009-09-07 19:01:24 UTC (rev 920) @@ -1,15 +0,0 @@ -What's this file about? ------------------------ -This file lists all external people that have contributed to this project. - -Testers and contributors: -------------------------- -Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com> - some patches -Enrico Troeger <enrico(dot)troeger(at)uvena(dot)de> - Geany IDE author, some patches and testing -Jeff Pohlmeyer <yetanothergeek(at)gmail(dot)com> - INSTALL instructions stolen from him. -Karel Kolman <kolmis(at)gmail(dot)com> - Bazaar support. -David Kalnischkies <kalnischkies(at)gmail(dot)com> - Mercurial support - -Projects --------- -Sylpheed
Deleted: trunk/geanyvc/TODO =================================================================== --- trunk/geanyvc/TODO 2009-09-07 19:00:22 UTC (rev 919) +++ trunk/geanyvc/TODO 2009-09-07 19:01:24 UTC (rev 920) @@ -1,11 +0,0 @@ -* fix mess with local and utf8 encodings. -* implement in_vc_cvs function. -* implement cvs commit command. -* implement cvs blame(?) command. -* option external diff program. -* check windows build for problems with stdout/stderr output -* (add spellchecking to commit dialog) -* (add function to change branches for VCS that support it) -* (add auto wrapping long line at commit dialog) -* (add commit function for a single file) -* (add git bisec support)
Deleted: trunk/geanyvc/autogen.sh =================================================================== --- trunk/geanyvc/autogen.sh 2009-09-07 19:00:22 UTC (rev 919) +++ trunk/geanyvc/autogen.sh 2009-09-07 19:01:24 UTC (rev 920) @@ -1,159 +0,0 @@ -#!/bin/sh -# Run this to generate all the initial makefiles, etc. - -srcdir=`dirname $0` -test -z "$srcdir" && srcdir=. - -DIE=0 - -if [ -n "$GNOME2_DIR" ]; then - ACLOCAL_FLAGS="-I $GNOME2_DIR/share/aclocal $ACLOCAL_FLAGS" - LD_LIBRARY_PATH="$GNOME2_DIR/lib:$LD_LIBRARY_PATH" - PATH="$GNOME2_DIR/bin:$PATH" - export PATH - export LD_LIBRARY_PATH -fi - -(test -f $srcdir/configure.in) || { - echo -n "**Error**: Directory "`$srcdir'" does not look like the" - echo " 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 -} - -(grep "^AC_PROG_INTLTOOL" $srcdir/configure.in >/dev/null) && { - (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 - } -} - -(grep "^AM_PROG_XML_I18N_TOOLS" $srcdir/configure.in >/dev/null) && { - (xml-i18n-toolize --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have `xml-i18n-toolize' installed." - echo "You can get it from:" - echo " ftp://ftp.gnome.org/pub/GNOME/" - DIE=1 - } -} - -(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && { - (libtool --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have `libtool' installed." - echo "You can get it from: ftp://ftp.gnu.org/pub/gnu/" - DIE=1 - } -} - -(grep "^AM_GLIB_GNU_GETTEXT" $srcdir/configure.in >/dev/null) && { - (grep "sed.*POTFILES" $srcdir/configure.in) > /dev/null || \ - (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 - } -} - -(automake --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have `automake' 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 "$*"; 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 - -case $CC in -xlc ) - am_opt=--include-deps;; -esac - -for coin in `find $srcdir -path $srcdir/CVS -prune -o -name configure.in -print` -do - dr=`dirname $coin` - if test -f $dr/NO-AUTO-GEN; then - echo skipping $dr -- flagged as no auto-gen - else - echo processing $dr - ( cd $dr - - aclocalinclude="$ACLOCAL_FLAGS" - - if grep "^AM_GLIB_GNU_GETTEXT" configure.in >/dev/null; then - echo "Creating $dr/aclocal.m4 ..." - test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 - echo "Running glib-gettextize... Ignore non-fatal messages." - echo "no" | glib-gettextize --force --copy - echo "Making $dr/aclocal.m4 writable ..." - test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 - fi - if grep "^AC_PROG_INTLTOOL" configure.in >/dev/null; then - echo "Running intltoolize..." - intltoolize --copy --force --automake - fi - if grep "^AM_PROG_XML_I18N_TOOLS" configure.in >/dev/null; then - echo "Running xml-i18n-toolize..." - xml-i18n-toolize --copy --force --automake - fi - if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then - if test -z "$NO_LIBTOOLIZE" ; then - echo "Running libtoolize..." - libtoolize --force --copy - fi - fi - echo "Running aclocal $aclocalinclude ..." - aclocal $aclocalinclude - if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then - echo "Running autoheader..." - autoheader - fi - echo "Running automake --gnu $am_opt ..." - automake --add-missing --gnu $am_opt - echo "Running autoconf ..." - autoconf - ) - fi -done - -conf_flags="--enable-maintainer-mode" - -if test x$NOCONFIGURE = x; then - echo Running $srcdir/configure $conf_flags "$@" ... - $srcdir/configure $conf_flags "$@" \ - && echo Now type `make' to compile. || exit 1 -else - echo Skipping configure process. -fi
Deleted: trunk/geanyvc/commit.glade =================================================================== --- trunk/geanyvc/commit.glade 2009-09-07 19:00:22 UTC (rev 919) +++ trunk/geanyvc/commit.glade 2009-09-07 19:01:24 UTC (rev 920) @@ -1,168 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd"> -<!--Generated with glade3 3.2.2 on Thu Nov 29 23:29:48 2007 by yura@localhost--> -<glade-interface> - <widget class="GtkDialog" id="commitDialog"> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="border_width">5</property> - <property name="title" translatable="yes">Commit</property> - <property name="modal">True</property> - <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property> - <property name="destroy_with_parent">True</property> - <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> - <property name="has_separator">False</property> - <child internal-child="vbox"> - <widget class="GtkVBox" id="dialog-vbox1"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="spacing">2</property> - <child> - <widget class="GtkVPaned" id="vpaned1"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <child> - <widget class="GtkScrolledWindow" id="scrolledwindow1"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <child> - <widget class="GtkTreeView" id="treeSelect"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="headers_clickable">True</property> - </widget> - </child> - </widget> - <packing> - <property name="resize">False</property> - <property name="shrink">True</property> - </packing> - </child> - <child> - <widget class="GtkVPaned" id="vpaned2"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <child> - <widget class="GtkScrolledWindow" id="scrolledwindow2"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <child> - <widget class="GtkTextView" id="textDiff"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="editable">False</property> - </widget> - </child> - </widget> - <packing> - <property name="resize">True</property> - <property name="shrink">True</property> - </packing> - </child> - <child> - <widget class="GtkFrame" id="frame1"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label_xalign">0</property> - <property name="shadow_type">GTK_SHADOW_NONE</property> - <child> - <widget class="GtkAlignment" id="alignment1"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="left_padding">12</property> - <child> - <widget class="GtkScrolledWindow" id="scrolledwindow3"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <child> - <widget class="GtkTextView" id="textCommitMessage"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - </widget> - </child> - </widget> - </child> - </widget> - </child> - <child> - <widget class="GtkLabel" id="label1"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes"><b>Commit message:</b></property> - <property name="use_markup">True</property> - </widget> - <packing> - <property name="type">label_item</property> - </packing> - </child> - </widget> - <packing> - <property name="resize">True</property> - <property name="shrink">True</property> - </packing> - </child> - </widget> - <packing> - <property name="resize">True</property> - <property name="shrink">True</property> - </packing> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - <child internal-child="action_area"> - <widget class="GtkHButtonBox" id="dialog-action_area1"> - <property name="visible">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="layout_style">GTK_BUTTONBOX_END</property> - <child> - <widget class="GtkButton" id="btnCancel"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes">gtk-cancel</property> - <property name="use_stock">True</property> - <property name="response_id">-6</property> - </widget> - </child> - <child> - <widget class="GtkButton" id="btnCommit"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property> - <property name="label" translatable="yes">_Commit</property> - <property name="response_id">-10</property> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="pack_type">GTK_PACK_END</property> - </packing> - </child> - </widget> - </child> - </widget> -</glade-interface>
Deleted: trunk/geanyvc/configure.in =================================================================== --- trunk/geanyvc/configure.in 2009-09-07 19:00:22 UTC (rev 919) +++ trunk/geanyvc/configure.in 2009-09-07 19:01:24 UTC (rev 920) @@ -1,94 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. - -AC_INIT([geanyvc], [0.6], [yurand2@gmail.com]) -AM_INIT_AUTOMAKE([1.9 foreign]) - -AM_CONFIG_HEADER(config.h) - -AC_PROG_CC - -AC_DISABLE_STATIC -AM_PROG_LIBTOOL -LIBTOOL="$LIBTOOL --silent" - -AC_PROG_INSTALL -AC_PROG_INTLTOOL - - -# checking for Geany -PKG_CHECK_MODULES(GEANY, [geany >= 0.18]) -AC_SUBST(GTK_CFLAGS) -AC_SUBST(GTK_LIBS) - -GEANY_VERSION=`$PKG_CONFIG --modversion geany` -GTK_VERSION=`$PKG_CONFIG --modversion gtk+-2.0` - - -dnl Check for GtkSpell support -AC_MSG_CHECKING([whether to use GtkSpell]) -AC_ARG_ENABLE(gtkspell, - [ --disable-gtkspell Do not use GtkSpell in editor], - [ac_cv_enable_gtkspell=$enableval], [ac_cv_enable_gtkspell=yes]) -if test "$ac_cv_enable_gtkspell" = yes; then - AC_MSG_RESULT(yes) - AC_MSG_CHECKING([whether GtkSpell is available]) - if $PKG_CONFIG gtkspell-2.0 ; then - AC_MSG_RESULT(yes) - CFLAGS="$CFLAGS `$PKG_CONFIG --cflags gtkspell-2.0`" - LIBS="$LIBS `$PKG_CONFIG --libs gtkspell-2.0`" - AC_DEFINE(USE_GTKSPELL, 1, Use GtkSpell in editor) - else - AC_MSG_RESULT(no) - ac_cv_enable_gtkspell=no - fi -else - AC_MSG_RESULT(no) -fi - -# i18n -GETTEXT_PACKAGE=geanyvc -AC_SUBST(GETTEXT_PACKAGE) -AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package.]) - -ALL_LINGUAS="`sed -e '/^#/d' $srcdir/po/LINGUAS`" # take all languages found in file po/LINGUAS - -AM_GLIB_GNU_GETTEXT -# workaround for intltool bug (http://bugzilla.gnome.org/show_bug.cgi?id=490845) -if test "x$MSGFMT" = "xno"; then - AC_MSG_ERROR([msgfmt not found. Please install the gettext package.]) -fi - -# intltool hack to define install_sh on Debian/Ubuntu systems -if test "x$install_sh" = "x"; then - install_sh="`pwd`/install-sh" - AC_SUBST(install_sh) -fi - -# get the plugin installed at the correct location for Geany -# TODO find a way to NOT override --libdir command line option if given -libdir="`$PKG_CONFIG --variable=libdir geany`/geany" - -dnl unittests -PKG_CHECK_MODULES([CHECK], [check >= 0.9.4], [ -AC_SUBST(CHECK_CFLAGS) -AC_SUBST(CHECK_LIBS) -AM_CONDITIONAL(UNITTESTS, true) -], [ -AM_CONDITIONAL(UNITTESTS, false) -]) - - -AC_OUTPUT([ -Makefile -po/Makefile.in -tests/Makefile -]) - -echo "----------------------------------------" -echo "Install geanyvc in : ${libdir}" -echo "Using Geany version : ${GEANY_VERSION}" -echo "Using GTK version : ${GTK_VERSION}" -echo "Building with GtkSpell support : ${ac_cv_enable_gtkspell}" -echo "" -echo "Configuration is done OK." -echo ""
Deleted: trunk/geanyvc/depcomp =================================================================== --- trunk/geanyvc/depcomp 2009-09-07 19:00:22 UTC (rev 919) +++ trunk/geanyvc/depcomp 2009-09-07 19:01:24 UTC (rev 920) @@ -1,584 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2006-10-15.18 - -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software -# Foundation, Inc. - -# 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, 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. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Alexandre Oliva oliva@dcc.unicamp.br. - -case $1 in - '') - echo "$0: No command. Try `$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by `PROGRAMS ARGS'. - object Object file output by `PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputing dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to bug-automake@gnu.org. -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\/]*$|'${DEPDIR-.deps}'/&|;s|.([^.]*)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/.([^.]*)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. -## Unfortunately, FreeBSD c89 acceptance of flags depends upon -## the command line argument order; so add the flags where they -## appear in depend2.am. Note that the slowdown incurred here -## affects only configure: in makefiles, %FASTDEP% shortcuts this. - for arg - do - case $arg in - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory -## that the space means something, we add a space to the output as -## well. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \" > "$depfile" - - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the - # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> $depfile - echo >> $depfile - - # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> $depfile - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts `$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. - stripped=`echo "$object" | sed 's/(.*)..*$/\1/'` - tmpdepfile="$stripped.u" - if test "$libtool" = yes; then - "$@" -Wc,-M - else - "$@" -M - fi - stat=$? - - if test -f "$tmpdepfile"; then : - else - stripped=`echo "$stripped" | sed 's,^.*/,,'` - tmpdepfile="$stripped.u" - fi - - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - - if test -f "$tmpdepfile"; then - outname="$stripped.o" - # Each line is of the form `foo.o: dependent.h'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" - sed -e "s,^$outname: (.*)$,\1:," < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -icc) - # Intel's C compiler understands `-MD -MF file'. However on - # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want: - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using \ : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h ', or ` dep3.h dep4.h '. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: (.*)$,\1,;s/^\$//;/^$/d;/:$/d' < "$tmpdepfile" | - sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/.o$//' -e 's/.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add `dependent.h:' lines. - sed -ne '2,${; s/^ *//; s/ \*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/.o$//' -e 's/.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for `:' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. - "$@" $dashmflag | - sed 's:^[ ]*[^: ][^:][^:]*:[ ]*:'"$object"': :' > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no - for arg in "$@"; do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix="`echo $object | sed 's/^.*././'`" - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "([^"]*)".*/ s:: \1 \:p' \ - -e '/^#line [0-9][0-9]* "([^"]*)".*/ s:: \1 \:p' | - sed '$ s: \$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o, - # because we must use -o when running libtool. - "$@" || exit $? - IFS=" " - for arg - do - case "$arg" in - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E | - sed -n '/^#line [0-9][0-9]* "([^"]*)"/ s::echo "`cygpath -u \"\1\"`":p' | sort | uniq > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \" > "$depfile" - . "$tmpdepfile" | sed 's% %\ %g' | sed -n '/^(.*)$/ s:: \1 \:p' >> "$depfile" - echo " " >> "$depfile" - . "$tmpdepfile" | sed 's% %\ %g' | sed -n '/^(.*)$/ s::\1::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End:
Deleted: trunk/geanyvc/dist/.gitignore =================================================================== --- trunk/geanyvc/dist/.gitignore 2009-09-07 19:00:22 UTC (rev 919) +++ trunk/geanyvc/dist/.gitignore 2009-09-07 19:01:24 UTC (rev 920) @@ -1,3 +0,0 @@ -PKGBUILD -*.ebuild -*.nsi
Deleted: trunk/geanyvc/dist/PKGBUILD.in =================================================================== --- trunk/geanyvc/dist/PKGBUILD.in 2009-09-07 19:00:22 UTC (rev 919) +++ trunk/geanyvc/dist/PKGBUILD.in 2009-09-07 19:01:24 UTC (rev 920) @@ -1,22 +0,0 @@ -# Contributor: Yura Siamashka yurand2@gmail.com -pkgname=geanyvc -pkgver=VERSION -pkgrel=1 -pkgdesc="Version control systems plugin for Geany IDE" -arch=(i686 x86_64) -url="http://geany-plugins.sourceforge.net/geanyvc/" -license=("GPL") -depends=('geany>=0.16') -makedepends=('intltool') -conflicts=() -replaces=() -backup=() -install= -source=(http://users.cosmostv.by/yurand/$pkgname/$pkgname-$pkgver.tar.gz) - -build() { - cd $startdir/src/$pkgname-$pkgver - ./configure --prefix=/usr || return 1 - make || return 1 - make install DESTDIR=$startdir/pkg || return 1 -}
Deleted: trunk/geanyvc/dist/ebuild.in =================================================================== --- trunk/geanyvc/dist/ebuild.in 2009-09-07 19:00:22 UTC (rev 919) +++ trunk/geanyvc/dist/ebuild.in 2009-09-07 19:01:24 UTC (rev 920) @@ -1,26 +0,0 @@ -# Copyright 1999-2008 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: $ - -DESCRIPTION="Version control systems plugin for Geany IDE" -HOMEPAGE="http://geany-plugins.sourceforge.net/geanyvc/" -SRC_URI="http://users.cosmostv.by/yurand/$%7BPN%7D/$%7BP%7D.tar.gz" - -LICENSE="GPL-2" -SLOT="0" -IUSE="" -KEYWORDS="~amd64 ~x86" - -RDEPEND=">=dev-util/geany-0.16" - -DEPEND="${RDEPEND}" - -src_compile() { - econf || die "econf failed." - emake || die "emake failed." -} - -src_install() { - emake DESTDIR="${D}" install || die "emake install failed." -} -
Deleted: trunk/geanyvc/dist/geninst.sh =================================================================== --- trunk/geanyvc/dist/geninst.sh 2009-09-07 19:00:22 UTC (rev 919) +++ trunk/geanyvc/dist/geninst.sh 2009-09-07 19:01:24 UTC (rev 920) @@ -1,21 +0,0 @@ -#!/bin/sh -# -# Generate PKGBUILD, spec and ebuild files -# - -PKGNAME=`cat ../configure.in | awk '/AC_INIT/ {split($0, a, "["); v = a[2]; sub("\], ", "", v);print v;}'` -VERSION=`cat ../configure.in | awk '/AC_INIT/ {split($0, a, "["); v = a[3]; sub("\], ", "", v);print v;}'` - -MD5SUM=`md5sum ../${PKGNAME}-${VERSION}.tar.gz | awk '// {print $1}'` - -if [ -f PKGBUILD.in ]; then - awk -v md5=$MD5SUM -v ver=$VERSION '/VERSION/ {gsub("VERSION",ver,$0);} // {print} /^source=/ {printf("md5sums=(%s)\n", md5)}' < PKGBUILD.in > PKGBUILD -fi - -if [ -f ebuild.in ]; then - cp ebuild.in ${PKGNAME}-${VERSION}.ebuild -fi - -if [ -f setup.nsi.in ]; then - cat setup.nsi.in | sed s/VERSION/${VERSION}/g | sed s/PKGNAME/${PKGNAME}/g > ${PKGNAME}.nsi -fi
Deleted: trunk/geanyvc/dist/setup.nsi.in =================================================================== --- trunk/geanyvc/dist/setup.nsi.in 2009-09-07 19:00:22 UTC (rev 919) +++ trunk/geanyvc/dist/setup.nsi.in 2009-09-07 19:01:24 UTC (rev 920) @@ -1,43 +0,0 @@ -!include "StrFunc.nsh" - -${StrRep} - -; The name of the installer -Name "PKGNAME" - -; The file to write -OutFile "PKGNAME-VERSION_setup.exe" - -SetCompressor /SOLID lzma - -; Request application privileges for Windows Vista -RequestExecutionLevel user - -LicenseData ../COPYING - -;;;;;;;;;;;;;;;; -; Init code ; -;;;;;;;;;;;;;;;; -Function .onInit - ReadRegStr $R0 "HKLM" "Software\Microsoft\Windows\CurrentVersion\Uninstall\Geany" "UninstallString" - StrCmp $R0 "" warning - ${StrRep} $INSTDIR $R0 "uninst.exe" "lib" - goto done - warning: - MessageBox MB_OK|MB_ICONEXCLAMATION "You need install geany first." - done: -FunctionEnd - - -; Pages -Page license -Page directory -Page instfiles - -Section "" - ; Set output path to the installation directory. - SetOutPath $INSTDIR - - ; Put file there - File ..\PKGNAME.dll -SectionEnd
Deleted: trunk/geanyvc/externdiff.c =================================================================== --- trunk/geanyvc/externdiff.c 2009-09-07 19:00:22 UTC (rev 919) +++ trunk/geanyvc/externdiff.c 2009-09-07 19:01:24 UTC (rev 920) @@ -1,76 +0,0 @@ -/* - * externdiff.h - Plugin to geany light IDE to work with vc - * - * Copyright 2008 Yura Siamashka yurand2@gmail.com - * - * 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. - */ - -#include <string.h> - -#include "geanyplugin.h" -#include "geanyvc.h" - -extern GeanyFunctions *geany_functions; - -enum -{ - EXTERNAL_DIFF_MELD, - EXTERNAL_DIFF_KOMPARE, - EXTERNAL_DIFF_KDIFF3, - EXTERNAL_DIFF_DIFFUSE, - EXTERNAL_DIFF_TKDIFF, - EXTERNAL_DIFF_COUNT -}; - -static gchar *viewers[EXTERNAL_DIFF_COUNT] = { "meld", "kompare", "kdiff3", "diffuse", "tkdiff" }; - -static gchar *extern_diff_viewer = NULL; -const gchar * -get_external_diff_viewer() -{ - gint i; - - if (extern_diff_viewer) - return extern_diff_viewer; - - for (i = 0; i < EXTERNAL_DIFF_COUNT; i++) - { - if (g_find_program_in_path(viewers[i])) - { - extern_diff_viewer = viewers[i]; - return extern_diff_viewer; - } - } - return NULL; -} - -void -vc_external_diff(const gchar * src, const gchar * dest) -{ - gchar *argv[4] = { NULL, NULL, NULL, NULL }; - - const gchar *diff = get_external_diff_viewer(); - if (!diff) - return; - - argv[0] = (gchar *) diff; - argv[1] = (gchar *) src; - argv[2] = (gchar *) dest; - - utils_spawn_sync(NULL, argv, NULL, - G_SPAWN_SEARCH_PATH | G_SPAWN_STDOUT_TO_DEV_NULL | - G_SPAWN_STDERR_TO_DEV_NULL, NULL, NULL, NULL, NULL, NULL, NULL); -}
Deleted: trunk/geanyvc/geanyvc.c =================================================================== --- trunk/geanyvc/geanyvc.c 2009-09-07 19:00:22 UTC (rev 919) +++ trunk/geanyvc/geanyvc.c 2009-09-07 19:01:24 UTC (rev 920) @@ -1,2285 +0,0 @@ -/* - * geanyvc.c - Plugin to geany light IDE to work with vc - * - * Copyright 2007-2009 Frank Lanitz <frank(at)frank(dot)uvena(dot)de> - * Copyright 2007-2009 Enrico Tröger enrico.troeger@uvena.de - * Copyright 2007 Nick Treleaven nick.treleaven@btinternet.com - * Copyright 2007-2009 Yura Siamashka yurand2@gmail.com - * - * 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. - */ - -/* VC plugin */ -/* This plugin allow to works with cvs/svn/git inside geany light IDE. */ - -#include <string.h> -#include <glib.h> -#include <glib/gstdio.h> -#include <unistd.h> - -#ifdef HAVE_LOCALE_H -# include <locale.h> -#endif - -#include "geanyvc.h" -#include "geanyplugin.h" -#include "SciLexer.h" - -#include <config.h> - -#ifdef USE_GTKSPELL -#include <gtkspell/gtkspell.h> -#endif - - - -PluginFields *plugin_fields; -GeanyData *geany_data; -GeanyFunctions *geany_functions; - -PLUGIN_VERSION_CHECK(115); -PLUGIN_SET_INFO(_("VC"), _("Interface to different Version Control systems."), VERSION, - _("Yura Siamashka yurand2@gmail.com,\nFrank Lanitz frank@frank.uvena.de")); - -/* Some global variables */ -static gboolean set_changed_flag; -static gboolean set_add_confirmation; -static gboolean set_maximize_commit_dialog; -static gboolean set_external_diff; -static gboolean set_editor_menu_entries; - -static gchar *config_file; - -static gboolean enable_cvs; -static gboolean enable_git; -static gboolean enable_svn; -static gboolean enable_svk; -static gboolean enable_bzr; -static gboolean enable_hg; - -#ifdef USE_GTKSPELL -static gchar *lang; -#endif - -static GSList *VC = NULL; - -/* The addresses of these strings act as enums, their contents are not used. */ -/* absolute path dirname of file */ -const gchar ABS_DIRNAME[] = "*ABS_DIRNAME*"; -/* absolute path filename of file */ -const gchar ABS_FILENAME[] = "*ABS_FILENAME*";; - -/* path to directory from base vc directory */ -const gchar BASE_DIRNAME[] = "*BASE_DIRNAME*"; -/* path to file from base vc directory */ -const gchar BASE_FILENAME[] = "*BASE_FILENAME*"; - -/* basename of file */ -const gchar BASENAME[] = "*BASENAME*"; -/* list with absolute file names*/ -const gchar FILE_LIST[] = "*FILE_LIST*"; -/* message */ -const gchar MESSAGE[] = "*MESSAGE*"; - - -/* this string is used when action require to run several commands */ -const gchar CMD_SEPARATOR[] = "*CMD-SEPARATOR*"; -const gchar CMD_FUNCTION[] = "*CUSTOM_FUNCTION*"; - -/* commit status */ -const gchar FILE_STATUS_MODIFIED[] = "Modified"; -const gchar FILE_STATUS_ADDED[] = "Added"; -const gchar FILE_STATUS_DELETED[] = "Deleted"; -const gchar FILE_STATUS_UNKNOWN[] = "Unknown"; - -static GtkWidget *editor_menu_vc = NULL; -static GtkWidget *editor_menu_commit = NULL; -static GtkWidget *menu_item_sep = NULL; - -static void registrate(); -static void add_menuitems_to_editor_menu(); -static void remove_menuitems_from_editor_menu(); - - -/* Doing some basic keybinding stuff */ -enum -{ - VC_DIFF_FILE, - VC_DIFF_DIR, - VC_DIFF_BASEDIR, - VC_COMMIT, - VC_STATUS, - VC_UPDATE, - VC_REVERT_FILE, - VC_REVERT_DIR, - VC_REVERT_BASEDIR, - COUNT_KB -}; - -PLUGIN_KEY_GROUP(geanyvc, COUNT_KB) - GSList *get_commit_files_null(G_GNUC_UNUSED const gchar * dir) -{ - return NULL; -} - -static void -free_text_list(GSList * lst) -{ - GSList *tmp; - if (!lst) - return; - for (tmp = lst; tmp != NULL; tmp = g_slist_next(tmp)) - { - g_free((CommitItem *) (tmp->data)); - } - g_slist_free(lst); -} - -static void -free_commit_list(GSList * lst) -{ - GSList *tmp; - if (!lst) - return; - for (tmp = lst; tmp != NULL; tmp = g_slist_next(tmp)) - { - g_free(((CommitItem *) (tmp->data))->path); - g_free((CommitItem *) (tmp->data)); - } - g_slist_free(lst); -} - -gchar * -find_subdir_path(const gchar * filename, const gchar * subdir) -{ - gboolean ret = FALSE; - gchar *base; - gchar *gitdir; - gchar *base_prev = g_strdup(":"); - - if (g_file_test(filename, G_FILE_TEST_IS_DIR)) - base = g_strdup(filename); - else - base = g_path_get_dirname(filename); - - while (strcmp(base, base_prev) != 0) - { - gitdir = g_build_filename(base, subdir, NULL); - ret = g_file_test(gitdir, G_FILE_TEST_IS_DIR); - g_free(gitdir); - if (ret) - break; - g_free(base_prev); - base_prev = base; - base = g_path_get_dirname(base); - } - - g_free(base_prev); - if (ret) - return base; - g_free(base); - return NULL; -} - -static gboolean -find_subdir(const gchar * filename, const gchar * subdir) -{ - gchar *basedir; - basedir = find_subdir_path(filename, subdir); - if (basedir) - { - g_free(basedir); - return TRUE; - } - return FALSE; -} - -gboolean -find_dir(const gchar * filename, const char *find, gboolean recursive) -{ - gboolean ret; - gchar *base; - gchar *dir; - - if (!filename) - return FALSE; - - if (recursive) - { - ret = find_subdir(filename, find); - } - else - { - if (g_file_test(filename, G_FILE_TEST_IS_DIR)) - base = g_strdup(filename); - else - base = g_path_get_dirname(filename); - dir = g_build_filename(base, find, NULL); - - ret = g_file_test(dir, G_FILE_TEST_IS_DIR); - - g_free(base); - g_free(dir); - } - return ret; -} - - -static const VC_RECORD * -find_vc(const char *filename) -{ - GSList *tmp; - - for (tmp = VC; tmp != NULL; tmp = g_slist_next(tmp)) - { - if (((VC_RECORD *) tmp->data)->in_vc(filename)) - { - return (VC_RECORD *) tmp->data; - } - } - return NULL; -} - -static void * -find_cmd_env(gint cmd_type, gboolean cmd, const gchar * filename) -{ - const VC_RECORD *vc; - vc = find_vc(filename); - if (vc) - { - if (cmd) - return vc->commands[cmd_type].command; - else - return vc->commands[cmd_type].env; - } - return NULL; -} - -/* Get list of commands for given command spec*/ -static GSList * -get_cmd(const gchar ** argv, const gchar * dir, const gchar * filename, GSList * filelist, - const gchar * message) -{ - gint i, j; - gint len = 0; - gchar **ret; - gchar *abs_dir; - gchar *base_filename; - gchar *base_dirname; - gchar *basename; - GSList *head = NULL; - GSList *tmp; - GString *repl; - - if (g_file_test(filename, G_FILE_TEST_IS_DIR)) - abs_dir = g_strdup(filename); - else - abs_dir = g_path_get_dirname(filename); - basename = g_path_get_basename(filename); - base_filename = get_relative_path(dir, filename); - base_dirname = get_relative_path(dir, abs_dir); - - while (1) - { - if (argv[len] == NULL) - break; - len++; - } - if (filelist) - ret = g_malloc0(sizeof(gchar *) * (len * g_slist_length(filelist) + 1)); - else - ret = g_malloc0(sizeof(gchar *) * (len + 1)); - - head = g_slist_alloc(); - head->data = ret; - - for (i = 0, j = 0; i < len; i++, j++) - { - if (argv[i] == CMD_SEPARATOR) - { - if (filelist) - ret = g_malloc0(sizeof(gchar *) * - (len * g_slist_length(filelist) + 1)); - else - ret = g_malloc0(sizeof(gchar *) * (len + 1)); - j = -1; - head = g_slist_append(head, ret); - } - else if (argv[i] == ABS_DIRNAME) - { - ret[j] = utils_get_locale_from_utf8(abs_dir); - } - else if (argv[i] == ABS_FILENAME) - { - ret[j] = utils_get_locale_from_utf8(filename); - } - else if (argv[i] == BASE_DIRNAME) - { - ret[j] = utils_get_locale_from_utf8(base_dirname); - } - else if (argv[i] == BASE_FILENAME) - { - ret[j] = utils_get_locale_from_utf8(base_filename); - } - else if (argv[i] == BASENAME) - { - ret[j] = utils_get_locale_from_utf8(basename); - } - else if (argv[i] == FILE_LIST) - { - for (tmp = filelist; tmp != NULL; tmp = g_slist_next(tmp)) - { - ret[j] = utils_get_locale_from_utf8((gchar *) tmp->data); - j++; - } - j--; - } - else if (argv[i] == MESSAGE) - { - ret[j] = utils_get_locale_from_utf8(message); - } - else - { - repl = g_string_new(argv[i]); - utils_string_replace_all(repl, P_ABS_DIRNAME, abs_dir); - utils_string_replace_all(repl, P_ABS_FILENAME, filename); - utils_string_replace_all(repl, P_BASENAME, basename); - ret[j] = g_string_free(repl, FALSE); - setptr(ret[j], utils_get_locale_from_utf8(ret[j])); - } - } - g_free(abs_dir); - g_free(base_dirname); - g_free(base_filename); - g_free(basename); - return head; -} - - -/* name should be in UTF-8, and can have a path. */ -static void -show_output(const gchar * std_output, const gchar * name, - const gchar * force_encoding, GeanyFiletype * ftype) -{ - gint page; - GtkNotebook *book; - GeanyDocument *doc, *cur_doc; - - if (std_output) - { - cur_doc = document_get_current(); - doc = document_find_by_filename(name); - if (doc == NULL) - { - doc = document_new_file(name, ftype, std_output); - } - else - { - sci_set_text(doc->editor->sci, std_output); - if (ftype) - document_set_filetype(doc, ftype); - book = GTK_NOTEBOOK(geany->main_widgets->notebook); - page = gtk_notebook_page_num(book, GTK_WIDGET(doc->editor->sci)); - gtk_notebook_set_current_page(book, page); - } - document_set_text_changed(doc, set_changed_flag); - document_set_encoding(doc, (force_encoding ? force_encoding : "UTF-8")); - navqueue_goto_line(cur_doc, doc, 1); - } - else - { - ui_set_statusbar(FALSE, _("Could not parse the output of command")); - } -} - -/* - * Execute command by command spec, return std_out std_err - * - * @dir - start directory of command - * @argv - command spec - * @env - envirounment - * @std_out - if not NULL here will be returned standard output converted to utf8 of last command in spec - * @std_err - if not NULL here will be returned standard error converted to utf8 of last command in spec - * @filename - filename for spec, commands will be running in it's basedir . Used to replace FILENAME, BASE_FILENAME in spec - * @list - used to replace FILE_LIST in spec - * @message - used to replace MESSAGE in spec - * - * @return - exit code of last command in spec - */ -gint -execute_custom_command(const gchar * dir, const gchar ** argv, const gchar ** env, gchar ** std_out, - gchar ** std_err, const gchar * filename, GSList * list, - const gchar * message) -{ - gint exit_code; - GString *tmp; - GSList *cur; - GSList *largv = get_cmd(argv, dir, filename, list, message); - GError *error = NULL; - - if (std_out) - *std_out = NULL; - if (std_err) - *std_err = NULL; - - if (!largv) - { - return 0; - } - for (cur = largv; cur != NULL; cur = g_slist_next(cur)) - { - argv = cur->data; - if (cur != g_slist_last(largv)) - { - utils_spawn_sync(dir, cur->data, (gchar **) env, - G_SPAWN_SEARCH_PATH | G_SPAWN_STDOUT_TO_DEV_NULL | - G_SPAWN_STDERR_TO_DEV_NULL, NULL, NULL, NULL, NULL, - &exit_code, &error); - } - else - { - utils_spawn_sync(dir, cur->data, (gchar **) env, - G_SPAWN_SEARCH_PATH | (std_out ? 0 : - G_SPAWN_STDOUT_TO_DEV_NULL) | - (std_err ? 0 : G_SPAWN_STDERR_TO_DEV_NULL), NULL, NULL, - std_out, std_err, &exit_code, &error); - } - if (error) - { - g_warning("geanyvc: s_spawn_sync error: %s", error->message); - ui_set_statusbar(FALSE, _("geanyvc: s_spawn_sync error: %s"), - error->message); - g_error_free(error); - } - - // need to convert output text from the encoding of the original file into - // UTF-8 because internally Geany always needs UTF-8 - if (std_out && *std_out) - { - tmp = g_string_new(*std_out); - utils_string_replace_all(tmp, "\r\n", "\n"); - utils_string_replace_all(tmp, "\r", "\n"); - setptr(*std_out, g_string_free(tmp, FALSE)); - - if (!g_utf8_validate(*std_out, -1, NULL)) - { - setptr(*std_out, encodings_convert_to_utf8(*std_out, - strlen(*std_out), NULL)); - } - if (!NZV(*std_out)) - { - g_free(*std_out); - *std_out = NULL; - } - } - if (std_err && *std_err) - { - tmp = g_string_new(*std_err); - utils_string_replace_all(tmp, "\r\n", "\n"); - utils_string_replace_all(tmp, "\r", "\n"); - setptr(*std_err, g_string_free(tmp, FALSE)); - - if (!g_utf8_validate(*std_err, -1, NULL)) - { - setptr(*std_err, encodings_convert_to_utf8(*std_err, - strlen(*std_err), NULL)); - } - if (!NZV(*std_err)) - { - g_free(*std_err); - *std_err = NULL; - } - } - g_strfreev(cur->data); - } - g_slist_free(largv); - return exit_code; -} - -static gint -execute_command(const VC_RECORD * vc, gchar ** std_out, gchar ** std_err, const gchar * filename, - gint cmd, GSList * list, const gchar * message) -{ - gchar *dir; - gint ret; - - if (std_out) - *std_out = NULL; - if (std_err) - *std_err = NULL; - - if (vc->commands[cmd].function) - { - return vc->commands[cmd].function(std_out, std_err, filename, list, message); - } - - if (vc->commands[cmd].startdir == VC_COMMAND_STARTDIR_FILE) - { - if (g_file_test(filename, G_FILE_TEST_IS_DIR)) - dir = g_strdup(filename); - else - dir = g_path_get_dirname(filename); - } - else if (vc->commands[cmd].startdir == VC_COMMAND_STARTDIR_BASE) - { - dir = vc->get_base_dir(filename); - } - else - { - g_warning("geanyvc: unknown startdir type: %d", vc->commands[cmd].startdir); - } - - ret = execute_custom_command(dir, vc->commands[cmd].command, vc->commands[cmd].env, std_out, - std_err, filename, list, message); - g_free(dir); - return ret; -} - -/* Callback if menu item for a single file was activated */ -static void -vcdiff_file_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata) -{ - gchar *text = NULL; - gchar *new, *old; - gchar *name; - gchar *localename; - const VC_RECORD *vc; - GeanyDocument *doc; - - doc = document_get_current(); - g_return_if_fail(doc != NULL && doc->file_name != NULL); - - if (doc->changed) - { - document_save_file(doc, FALSE); - } - - vc = find_vc(doc->file_name); - g_return_if_fail(vc); - - execute_command(vc, &text, NULL, doc->file_name, VC_COMMAND_DIFF_FILE, NULL, NULL); - if (text) - { - if (set_external_diff && get_external_diff_viewer()) - { - g_free(text); - - /* 1) rename file to file.geany.~NEW~ - 2) revert file - 3) rename file to file.geanyvc.~BASE~ - 4) rename file.geany.~NEW~ to origin file - 5) show diff - */ - localename = utils_get_locale_from_utf8(doc->file_name); - - new = g_strconcat(doc->file_name, ".geanyvc.~NEW~", NULL); - setptr(new, utils_get_locale_from_utf8(new)); - - old = g_strconcat(doc->file_name, ".geanyvc.~BASE~", NULL); - setptr(old, utils_get_locale_from_utf8(old)); - - if (g_rename(localename, new) != 0) - { - g_warning(_ - ("geanyvc: vcdiff_file_activated: Unable to rename '%s' to '%s'"), - localename, new); - goto end; - } - - execute_command(vc, NULL, NULL, doc->file_name, - VC_COMMAND_REVERT_FILE, NULL, NULL); - - if (g_rename(localename, old) != 0) - { - g_warning(_ - ("geanyvc: vcdiff_file_activated: Unable to rename '%s' to '%s'"), - localename, old); - g_rename(new, localename); - goto end; - } - g_rename(new, localename); - - vc_external_diff(old, localename); - g_unlink(old); - end: - g_free(old); - g_free(new); - g_free(localename); - return; - } - else - { - name = g_strconcat(doc->file_name, ".vc.diff", NULL); - show_output(text, name, doc->encoding, NULL); - g_free(text); - g_free(name); - } - - } - else - { - ui_set_statusbar(FALSE, _("No changes were made.")); - } -} - - - -/* Callback if menu item for the base directory was activated */ -static void -vcdiff_dir_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, gpointer data) -{ - gchar *text = NULL; - gchar *dir; - gint flags = GPOINTER_TO_INT(data); - const VC_RECORD *vc; - GeanyDocument *doc; - - doc = document_get_current(); - g_return_if_fail(doc != NULL && doc->file_name != NULL); - - if (doc && doc->changed && doc->file_name != NULL) - { - document_save_file(doc, FALSE); - } - - vc = find_vc(doc->file_name); - g_return_if_fail(vc); - - if (flags & FLAG_BASEDIR) - { - dir = vc->get_base_dir(doc->file_name); - } - else if (flags & FLAG_DIR) - { - dir = g_path_get_dirname(doc->file_name); - } - else - return; - g_return_if_fail(dir); - - execute_command(vc, &text, NULL, dir, VC_COMMAND_DIFF_DIR, NULL, NULL); - if (text) - { - gchar *name; - name = g_strconcat(dir, ".vc.diff", NULL); - show_output(text, name, doc->encoding, NULL); - g_free(text); - g_free(name); - } - else - { - ui_set_statusbar(FALSE, _("No changes were made.")); - } - g_free(dir); -} - -static void -vcblame_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata) -{ - gchar *text = NULL; - const VC_RECORD *vc; - GeanyDocument *doc; - - doc = document_get_current(); - g_return_if_fail(doc != NULL && doc->file_name != NULL); - - vc = find_vc(doc->file_name); - g_return_if_fail(vc); - - execute_command(vc, &text, NULL, doc->file_name, VC_COMMAND_BLAME, NULL, NULL); - if (text) - { - show_output(text, "*VC-BLAME*", NULL, doc->file_type); - g_free(text); - } - else - { - ui_set_statusbar(FALSE, _("No history avaible")); - } -} - - -static void -vclog_file_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata) -{ - gchar *output = NULL; - const VC_RECORD *vc; - GeanyDocument *doc; - - doc = document_get_current(); - g_return_if_fail(doc != NULL && doc->file_name != NULL); - - vc = find_vc(doc->file_name); - g_return_if_fail(vc); - - execute_command(vc, &output, NULL, doc->file_name, VC_COMMAND_LOG_FILE, NULL, NULL); - if (output) - { - show_output(output, "*VC-LOG*", NULL, NULL); - g_free(output); - } -} - -static void -vclog_dir_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata) -{ - gchar *base_name = NULL; - gchar *text = NULL; - const VC_RECORD *vc; - GeanyDocument *doc; - - doc = document_get_current(); - g_return_if_fail(doc != NULL && doc->file_name != NULL); - - base_name = g_path_get_dirname(doc->file_name); - - vc = find_vc(base_name); - g_return_if_fail(vc); - - execute_command(vc, &text, NULL, base_name, VC_COMMAND_LOG_DIR, NULL, NULL); - if (text) - { - show_output(text, "*VC-LOG*", NULL, NULL); - g_free(text); - } - - g_free(base_name); -} - -static void -vclog_basedir_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata) -{ - gchar *text = NULL; - const VC_RECORD *vc; - GeanyDocument *doc; - gchar *basedir; - - doc = document_get_current(); - g_return_if_fail(doc != NULL && doc->file_name != NULL); - - vc = find_vc(doc->file_name); - g_return_if_fail(vc); - - basedir = vc->get_base_dir(doc->file_name); - g_return_if_fail(basedir); - - execute_command(vc, &text, NULL, basedir, VC_COMMAND_LOG_DIR, NULL, NULL); - if (text) - { - show_output(text, "*VC-LOG*", NULL, NULL); - g_free(text); - } - g_free(basedir); -} - -/* Show status from the current directory */ -static void -vcstatus_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata) -{ - gchar *base_name = NULL; - gchar *text = NULL; - const VC_RECORD *vc; - GeanyDocument *doc; - - doc = document_get_current(); - g_return_if_fail(doc != NULL && doc->file_name != NULL); - - if (doc->changed) - { - document_save_file(doc, FALSE); - } - - base_name = g_path_get_dirname(doc->file_name); - - vc = find_vc(base_name); - g_return_if_fail(vc); - - execute_command(vc, &text, NULL, base_name, VC_COMMAND_STATUS, NULL, NULL); - if (text) - { - show_output(text, "*VC-STATUS*", NULL, NULL); - g_free(text); - } - - g_free(base_name); -} - -static void -vcshow_file_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata) -{ - gchar *output = NULL; - const VC_RECORD *vc; - GeanyDocument *doc; - - doc = document_get_current(); - g_return_if_fail(doc != NULL && doc->file_name != NULL); - - vc = find_vc(doc->file_name); - g_return_if_fail(vc); - - execute_command(vc, &output, NULL, doc->file_name, VC_COMMAND_SHOW, NULL, NULL); - if (output) - { - gchar *name; - name = g_strconcat(doc->file_name, ".vc.orig", NULL); - show_output(output, name, doc->encoding, doc->file_type); - g_free(name); - g_free(output); - } -} - -static gboolean -command_with_question_activated(gchar ** text, gint cmd, const gchar * question, gint flags) -{ - GtkWidget *dialog; - gint result; - gchar *dir; - const VC_RECORD *vc; - GeanyDocument *doc; - - doc = document_get_current(); - g_return_val_if_fail(doc != NULL && doc->file_name != NULL, FALSE); - - dir = g_path_get_dirname(doc->file_name); - vc = find_vc(dir); - g_return_val_if_fail(vc, FALSE); - - if (flags & FLAG_BASEDIR) - { - dir = vc->get_base_dir(dir); - } - - if (doc->changed) - { - document_save_file(doc, FALSE); - } - - if ((flags & FLAG_FORCE_ASK) || set_add_confirmation) - { - dialog = gtk_message_dialog_new(GTK_WINDOW(geany->main_widgets->window), - GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_MESSAGE_QUESTION, - GTK_BUTTONS_YES_NO, question, - (flags & (FLAG_DIR | FLAG_BASEDIR) ? dir : - doc->file_name)); - result = gtk_dialog_run(GTK_DIALOG(dialog)); - gtk_widget_destroy(dialog); - } - else - { - result = GTK_RESPONSE_YES; - } - - if (result == GTK_RESPONSE_YES) - { - if (flags & FLAG_FILE) - execute_command(vc, text, NULL, doc->file_name, cmd, NULL, NULL); - if (flags & (FLAG_DIR | FLAG_BASEDIR)) - execute_command(vc, text, NULL, dir, cmd, NULL, NULL); - if (flags & FLAG_RELOAD) - document_reload_file(doc, NULL); - } - g_free(dir); - return (result == GTK_RESPONSE_YES); -} - -static void -vcrevert_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata) -{ - command_with_question_activated(NULL, VC_COMMAND_REVERT_FILE, - _("Do you really want to revert: %s?"), - FLAG_RELOAD | FLAG_FILE | FLAG_FORCE_ASK); -} - -static void -vcrevert_dir_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, gint flags) -{ - command_with_question_activated(NULL, VC_COMMAND_REVERT_DIR, - _("Do you really want to revert: %s?"), - FLAG_RELOAD | flags | FLAG_FORCE_ASK); -} - -static void -vcadd_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata) -{ - command_with_question_activated(NULL, VC_COMMAND_ADD, - _("Do you really want to add: %s?"), FLAG_FILE); -} - -static void -vcremove_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata) -{ - if (command_with_question_activated(NULL, VC_COMMAND_REMOVE, - _("Do you really want to remove: %s?"), - FLAG_FORCE_ASK | FLAG_FILE)) - { - document_remove_page(gtk_notebook_get_current_page - (GTK_NOTEBOOK(geany->main_widgets->notebook))); - } -} - -static void -vcupdate_activated(G_GNUC_UNUSED GtkMenuItem * menuitem, G_GNUC_UNUSED gpointer gdata) -{ - gchar *text = NULL; - GeanyDocument *doc; - - doc = document_get_current(); - g_return_if_fail(doc != NULL && doc->file_name != NULL); - - if (doc->changed) - { - document_save_file(doc, FALSE); - } - - if (command_with_question_activated(&text, VC_COMMAND_UPDATE, - _("Do you really want to update?"), FLAG_BASEDIR)) - { - document_reload_file(doc, NULL); - - if (NZV(text)) - show_output(text, "*VC-UPDATE*", NULL, NULL); - g_free(text); - } -} - -enum -{ - COLUMN_COMMIT, - COLUMN_STATUS, - COLUMN_PATH, - NUM_COLUMNS -}; - -static GtkTreeModel * -create_commit_model(const GSList * commit) -{ - GtkListStore *store; - GtkTreeIter iter; - const GSList *cur; - - /* create list store */ - store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_STRING); - - /* add data to the list store */ - - for (cur = commit; cur != NULL; cur = g_slist_next(cur)) - { - gtk_list_store_append(store, &iter); - gtk_list_store_set(store, &iter, - COLUMN_COMMIT, TRUE, - COLUMN_STATUS, ((CommitItem *) (cur->data))->status, - COLUMN_PATH, ((CommitItem *) (cur->data))->path, -1); - } - - return GTK_TREE_MODEL(store); -} - -static gboolean -get_commit_files_foreach(GtkTreeModel * model, G_GNUC_UNUSED GtkTreePath * path, GtkTreeIter * iter, - gpointer data) -{ - GSList **files = (GSList **) data; - gboolean commit; - gchar *filename; - - gtk_tree_model_get(model, iter, COLUMN_COMMIT, &commit, -1); - if (!commit) - return FALSE; - - gtk_tree_model_get(model, iter, COLUMN_PATH, &filename, -1); - *files = g_slist_prepend(*files, filename); - return FALSE; -} - -static gboolean -get_commit_diff_foreach(GtkTreeModel * model, G_GNUC_UNUSED GtkTreePath * path, GtkTreeIter * iter, - gpointer data) -{ - GString *diff = data; - gboolean commit; - gchar *filename; - gchar *tmp = NULL; - gchar *status; - const VC_RECORD *vc; - - gtk_tree_model_get(model, iter, COLUMN_COMMIT, &commit, -1); - if (!commit) - return FALSE; - - gtk_tree_model_get(model, iter, COLUMN_STATUS, &status, -1); - - if (! utils_str_equal(status, FILE_STATUS_MODIFIED)) - { - g_free(status); - return FALSE; - } - - gtk_tree_model_get(model, iter, COLUMN_PATH, &filename, -1); - - vc = find_vc(filename); - g_return_val_if_fail(vc, FALSE); - - execute_command(vc, &tmp, NULL, filename, VC_COMMAND_DIFF_FILE, NULL, NULL); - if (tmp) - { - /* We temporarily add the filename to the diff output for parsing the diff output later, - * after we have finished parsing, we apply the tag "invisible" which hides the text. */ - g_string_append_printf(diff, "VC_DIFF%s\n", filename); - g_string_append(diff, tmp); - g_free(tmp); - } - else - { - g_warning("error: geanyvc: get_commit_diff_foreach: empty diff output"); - } - g_free(filename); - return FALSE; -} - -static gchar * -get_commit_diff(GtkTreeView * treeview) -{ - GtkTreeModel *model = gtk_tree_view_get_model(treeview); - GString *ret = g_string_new(NULL); - - gtk_tree_model_foreach(model, get_commit_diff_foreach, ret); - - return g_string_free(ret, FALSE); -} - -static void -set_diff_buff(GtkTextBuffer * buffer, const gchar * txt) -{ - GtkTextIter start, end; - GtkTextMark *mark; - gchar *filename; - const gchar *tagname = ""; - const gchar *c, *p = txt; - - gtk_text_buffer_set_text(buffer, txt, -1); - - gtk_text_buffer_get_start_iter(buffer, &start); - gtk_text_buffer_get_end_iter(buffer, &end); - - gtk_text_buffer_remove_all_tags(buffer, &start, &end); - - while (p) - { - c = NULL; - if (*p == '-') - { - tagname = "deleted"; - } - else if (*p == '+') - { - tagname = "added"; - } - else if (*p == ' ') - { - tagname = ""; - } - else if (strncmp(p, "VC_DIFF", 7) == 0) - { /* Lines starting with VC_DIFF are special and were added by our code to tell about - * filename to which the following diff lines belong. We use this file to create - * text marks which we then later use to scroll to if the corresponding file has been - * selected in the commit dialog's files list. */ - tagname = "invisible"; - c = strchr(p + 7, '\n'); - } - else - { - tagname = "default"; - } - gtk_text_buffer_get_iter_at_offset(buffer, &start, - g_utf8_pointer_to_offset(txt, p)); - - if (c) - { /* create the mark *after* the start iter has been updated */ - filename = g_strndup(p + 7, c - p - 7); - /* delete old text marks */ - mark = gtk_text_buffer_get_mark(buffer, filename); - if (mark) - gtk_text_buffer_delete_mark(buffer, mark); - /* create a new one */ - gtk_text_buffer_create_mark(buffer, filename, &start, TRUE); - g_free(filename); - } - - p = strchr(p, '\n'); - if (p) - { - if (*tagname) - { - gtk_text_buffer_get_iter_at_offset(buffer, &end, - g_utf8_pointer_to_offset(txt, p + 1)); - gtk_text_buffer_apply_tag_by_name(buffer, tagname, &start, &end); - } - p++; - } - } -} - -static void -refresh_diff_view(GtkTreeView *treeview) -{ - gchar *diff; - GtkWidget *diffView = ui_lookup_widget(GTK_WIDGET(treeview), "textDiff"); - diff = get_commit_diff(GTK_TREE_VIEW(treeview)); - set_diff_buff(gtk_text_view_get_buffer(GTK_TEXT_VIEW(diffView)), diff); - g_free(diff); -} - -static void -commit_toggled(G_GNUC_UNUSED GtkCellRendererToggle * cell, gchar * path_str, gpointer data) -{ - GtkTreeView *treeview = GTK_TREE_VIEW(data); - GtkTreeModel *model = gtk_tree_view_get_model(treeview); - GtkTreeIter iter; - GtkTreePath *path = gtk_tree_path_new_from_string(path_str); - gboolean fixed; - gchar *filename; - GtkTextView *diffView = GTK_TEXT_VIEW(ui_lookup_widget(GTK_WIDGET(treeview), "textDiff")); - GtkTextMark *mark; - - /* get toggled iter */ - gtk_tree_model_get_iter(model, &iter, path); - gtk_tree_model_get(model, &iter, COLUMN_COMMIT, &fixed, COLUMN_PATH, &filename, -1); - - /* do something with the value */ - fixed ^= 1; - - /* set new value */ - gtk_list_store_set(GTK_LIST_STORE(model), &iter, COLUMN_COMMIT, fixed, -1); - - if (! fixed) - { - mark = gtk_text_buffer_get_mark(gtk_text_view_get_buffer(diffView), filename); - if (mark) - gtk_text_buffer_delete_mark(gtk_text_view_get_buffer(diffView), mark); - } - - refresh_diff_view(treeview); - - /* clean up */ - gtk_tree_path_free(path); - g_free(filename); -} - -static gboolean -toggle_all_commit_files (GtkTreeModel *model, GtkTreePath *path, - GtkTreeIter *iter, gpointer data) -{ - (void)path; - gtk_list_store_set(GTK_LIST_STORE(model), iter, COLUMN_COMMIT, *(gint*)data, -1); - return FALSE; -} - -static void -commit_all_toggled_cb(GtkToggleButton *check_box, gpointer treeview) -{ - GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview)); - gint toggled = gtk_toggle_button_get_active(check_box); - - gtk_tree_model_foreach(model, toggle_all_commit_files, &toggled); - - refresh_diff_view(treeview); -} - -static void -add_commit_columns(GtkTreeView * treeview) -{ - GtkCellRenderer *renderer; - GtkTreeViewColumn *column; - - /* column for fixed toggles */ - renderer = gtk_cell_renderer_toggle_new(); - g_signal_connect(renderer, "toggled", G_CALLBACK(commit_toggled), treeview); - - column = gtk_tree_view_column_new_with_attributes(_("Commit Y/N"), - renderer, "active", COLUMN_COMMIT, NULL); - - /* set this column to a fixed sizing (of 80 pixels) */ - gtk_tree_view_column_set_sizing(GTK_TREE_VIEW_COLUMN(column), GTK_TREE_VIEW_COLUMN_FIXED); - gtk_tree_view_column_set_fixed_width(GTK_TREE_VIEW_COLUMN(column), 80); - gtk_tree_view_append_column(treeview, column); - - /* column for status */ - renderer = gtk_cell_renderer_text_new(); - column = gtk_tree_view_column_new_with_attributes(_("Status"), - renderer, "text", COLUMN_STATUS, NULL); - gtk_tree_view_column_set_sort_column_id(column, COLUMN_STATUS); - gtk_tree_view_append_column(treeview, column); - - /* column for path of file to commit */ - renderer = gtk_cell_renderer_text_new(); - column = gtk_tree_view_column_new_with_attributes(_("Path"), - renderer, "text", COLUMN_PATH, NULL);
@@ Diff output truncated at 100000 characters. @@
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.