Hello community,
here is the log from the commit of package kdevelop4
checked in at Wed Nov 28 23:34:57 CET 2007.
--------
--- KDE/kdevelop4/kdevelop4.changes 2007-11-21 09:34:39.000000000 +0100
+++ /mounts/work_src_done/STABLE/kdevelop4/kdevelop4.changes 2007-11-24 01:33:37.000000000 +0100
@@ -1,0 +2,5 @@
+Sat Nov 24 01:33:37 CET 2007 - dmueller@suse.de
+
+- update to 3.96.0.svn740723
+
+-------------------------------------------------------------------
Old:
----
r738689.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kdevelop4.spec ++++++
--- /var/tmp/diff_new_pack.H26174/_old 2007-11-28 23:34:27.000000000 +0100
+++ /var/tmp/diff_new_pack.H26174/_new 2007-11-28 23:34:27.000000000 +0100
@@ -1,5 +1,5 @@
#
-# spec file for package kdevelop4 (Version 3.96.0.svn738446)
+# spec file for package kdevelop4 (Version 3.96.0.svn740723)
#
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -15,11 +15,10 @@
Group: Development/Tools/IDE
Summary: Integrated Development Environment for the X Window System, Qt, KDE, and GNOME
Url: http://www.kdevelop.org
-Version: 3.96.0.svn738446
+Version: 3.96.0.svn740723
Release: 1
Source0: kdevelop.tar.bz2
Source1: _upstream
-Patch0: r738689.diff
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Requires: kdebase4-runtime
@@ -46,7 +45,6 @@
%prep
%setup -q -n kdevelop
-%patch0
%build
%cmake_kde4 -d build
@@ -90,7 +88,6 @@
Walter Tasin
John Birch
-
%files devel
%defattr(-,root,root)
/usr/share/kde4/apps/cmake/modules/FindKDevelop.cmake
@@ -133,7 +130,10 @@
%_kde_share_dir/services/kcm_kdev*
%_kde_share_dir/services/kdev*
%_kde_share_dir/apps/kdevcmakebuilder
+
%changelog
+* Sat Nov 24 2007 - dmueller@suse.de
+- update to 3.96.0.svn740723
* Wed Nov 21 2007 - stbinner@suse.de
- update to 3.96.0.svn738446
* Sun Nov 18 2007 - dmueller@suse.de
++++++ kdevelop.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/buildtools/builders/cmakebuilder/cmakebuilder.cpp new/kdevelop/buildtools/builders/cmakebuilder/cmakebuilder.cpp
--- old/kdevelop/buildtools/builders/cmakebuilder/cmakebuilder.cpp 2007-11-12 01:14:16.000000000 +0100
+++ new/kdevelop/buildtools/builders/cmakebuilder/cmakebuilder.cpp 2007-11-23 15:28:58.000000000 +0100
@@ -178,7 +178,7 @@
delete m_cmds[id];
}else
{
- id = view->registerView(i18n("CMake: %1", project->name() ) );
+ id = view->registerView(i18n("CMake: %1", project->name()), KDevelop::IOutputView::AllowUserClose | KDevelop::IOutputView::AutoScroll );
m_ids[project->projectItem()] = id;
m_models[id] = new KDevelop::OutputModel(this);
view->setModel( id, m_models[id] );
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/buildtools/builders/cmakebuilder/kdevcmakebuilder.desktop new/kdevelop/buildtools/builders/cmakebuilder/kdevcmakebuilder.desktop
--- old/kdevelop/buildtools/builders/cmakebuilder/kdevcmakebuilder.desktop 2007-11-02 08:38:07.000000000 +0100
+++ new/kdevelop/buildtools/builders/cmakebuilder/kdevcmakebuilder.desktop 2007-11-23 08:40:13.000000000 +0100
@@ -8,6 +8,7 @@
Comment[el]=Κατασκευή έργων CMake
Comment[es]=Construye proyectos CMake
Comment[fa]=پروژههای CMake را میسازد
+Comment[fr]=Construit les projets CMake
Comment[ga]=Tóg Tionscadail CMake
Comment[it]=Compila i progetti CMake
Comment[ko]=CMake 프로젝트를 빌드합니다
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/buildtools/builders/makebuilder/kcm_kdev_makebuilder.desktop new/kdevelop/buildtools/builders/makebuilder/kcm_kdev_makebuilder.desktop
--- old/kdevelop/buildtools/builders/makebuilder/kcm_kdev_makebuilder.desktop 2007-11-02 08:38:07.000000000 +0100
+++ new/kdevelop/buildtools/builders/makebuilder/kcm_kdev_makebuilder.desktop 2007-11-23 08:40:13.000000000 +0100
@@ -19,6 +19,7 @@
Comment[el]=Ρύθμιση επιλογών Make
Comment[es]=Configurar las preferencias de make
Comment[fa]=پیکربندی تنظیمات Make
+Comment[fr]=Configurer les options de Make
Comment[ga]=Cumraigh socruithe Make
Comment[gl]=Configura os parámetros de Make
Comment[it]=Configura le impostazioni di Make
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/buildtools/builders/makebuilder/kdevmakebuilder.desktop new/kdevelop/buildtools/builders/makebuilder/kdevmakebuilder.desktop
--- old/kdevelop/buildtools/builders/makebuilder/kdevmakebuilder.desktop 2007-11-02 08:38:07.000000000 +0100
+++ new/kdevelop/buildtools/builders/makebuilder/kdevmakebuilder.desktop 2007-11-23 08:40:13.000000000 +0100
@@ -10,6 +10,7 @@
Comment[de]=Make Builder von KDevelop
Comment[el]=Κατασκευαστής Make του KDevelop
Comment[es]=Constructor make de KDevelop
+Comment[fr]=Constructeur Make pour KDevelop
Comment[ga]=Tógálaí Make le haghaidh KDevelop
Comment[gl]=Axudante para o Make de KDevelop
Comment[it]=Compilatore per Make di KDevelop
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/buildtools/builders/makebuilder/makebuilder.cpp new/kdevelop/buildtools/builders/makebuilder/makebuilder.cpp
--- old/kdevelop/buildtools/builders/makebuilder/makebuilder.cpp 2007-11-12 00:22:36.000000000 +0100
+++ new/kdevelop/buildtools/builders/makebuilder/makebuilder.cpp 2007-11-23 15:28:58.000000000 +0100
@@ -304,7 +304,7 @@
{
item->text();
}
- id = view->registerView(i18n("Make: %1", target ) );
+ id = view->registerView(i18n("Make: %1", target), KDevelop::IOutputView::AllowUserClose | KDevelop::IOutputView::AutoScroll );
m_ids[item] = id;
m_models[id] = new MakeOutputModel(this, this);
m_delegates[id] = new MakeOutputDelegate(this);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/buildtools/builders/qmakebuilder/kcm_kdev_qmakebuilder.desktop new/kdevelop/buildtools/builders/qmakebuilder/kcm_kdev_qmakebuilder.desktop
--- old/kdevelop/buildtools/builders/qmakebuilder/kcm_kdev_qmakebuilder.desktop 2007-11-02 08:38:07.000000000 +0100
+++ new/kdevelop/buildtools/builders/qmakebuilder/kcm_kdev_qmakebuilder.desktop 2007-11-23 08:40:13.000000000 +0100
@@ -19,6 +19,7 @@
Comment[el]=Ρύθμιση επιλογών του QMake
Comment[es]=Configurar las preferencias de QMake
Comment[fa]=پیکربندی تنظیمات QMake
+Comment[fr]=Configurer les options de QMake
Comment[ga]=Cumraigh socruithe QMake
Comment[gl]=Configura os parámetros de QMake
Comment[it]=Configura le impostazioni di QMake
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/buildtools/builders/qmakebuilder/kdevqmakebuilder.desktop new/kdevelop/buildtools/builders/qmakebuilder/kdevqmakebuilder.desktop
--- old/kdevelop/buildtools/builders/qmakebuilder/kdevqmakebuilder.desktop 2007-11-02 08:38:07.000000000 +0100
+++ new/kdevelop/buildtools/builders/qmakebuilder/kdevqmakebuilder.desktop 2007-11-23 08:40:13.000000000 +0100
@@ -10,6 +10,7 @@
Comment[el]=Κατασκευή έργων QMake
Comment[es]=Construye proyectos QMake
Comment[fa]=پروژههای QMake را میسازد
+Comment[fr]=Construit les projets QMake
Comment[ga]=Tóg tionscadail QMake
Comment[gl]=Elabora proxectos de QMake
Comment[it]=Compila i progetti QMake
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/buildtools/builders/qmakebuilder/qmakebuilder.cpp new/kdevelop/buildtools/builders/qmakebuilder/qmakebuilder.cpp
--- old/kdevelop/buildtools/builders/qmakebuilder/qmakebuilder.cpp 2007-11-12 00:23:12.000000000 +0100
+++ new/kdevelop/buildtools/builders/qmakebuilder/qmakebuilder.cpp 2007-11-23 20:13:23.000000000 +0100
@@ -81,7 +81,7 @@
connect( m_makeBuilder, SIGNAL( failed( KDevelop::ProjectBaseItem* ) ),
this, SIGNAL( failed( KDevelop::ProjectBaseItem* ) ) );
connect( m_makeBuilder, SIGNAL( makeTargetBuilt( KDevelop::ProjectBaseItem*, const QString& ) ),
- this, SIGNAL( distcleanCompleted( KDevelop::ProjectBaseItem*, const QString& ) ) );
+ this, SIGNAL( pruned( KDevelop::ProjectBaseItem* ) ) );
}
}
}
@@ -166,7 +166,7 @@
delete m_cmds[id];
}else
{
- id = view->registerView(i18n("QMake: %1", project->name() ) );
+ id = view->registerView(i18n("QMake: %1", project->name()), KDevelop::IOutputView::AllowUserClose | KDevelop::IOutputView::AutoScroll );
m_ids[project->projectItem()] = id;
m_models[id] = new KDevelop::OutputModel(this);
view->setModel( id, m_models[id] );
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/buildtools/managers/automake/kdevautomakeimporter.desktop new/kdevelop/buildtools/managers/automake/kdevautomakeimporter.desktop
--- old/kdevelop/buildtools/managers/automake/kdevautomakeimporter.desktop 2007-11-02 08:38:07.000000000 +0100
+++ new/kdevelop/buildtools/managers/automake/kdevautomakeimporter.desktop 2007-11-23 08:40:13.000000000 +0100
@@ -6,6 +6,7 @@
Name[el]=Εισαγωγέας Autotools του KDevelop
Name[es]=Importador de Autotools de KDevelop
Name[fa]=واردکنندۀ ابزارهای خودکار KDevelop
+Name[fr]=Importation des « Autotools » pour KDevelop
Name[ga]=Iompórtálaí Autotools de chuid KDevelop
Name[gl]=Importador das Autotools de KDevelop
Name[it]=Importatore di Autotools per KDevelop
@@ -23,6 +24,7 @@
Comment[de]=Ermöglicht die Verwaltung von Projekten mit GNU-basiertem Erstellungssystem mit KDevelop
Comment[el]=Επιτρέπει στο KDevelop το χειρισμό έργων που χρησιμοποιούν ένα σύστημα κατασκευής GNU
Comment[es]=Permite que KDevelop gestione proyectos que usan un sistema de construcción basado en GNU
+Comment[fr]=Permet à KDevelop de gérer les projets utilisant un système de construction basé sur GNU
Comment[ga]=Ceadaigh do KDevelop tionscadail a bhainistiú le córas tógála atá bunaithe ar GNU
Comment[gl]=Permítelle a KDevelop xestionar proxectos usando un sistema de compilación baseado en GNU
Comment[it]=Permette a KDevelop di gestire progetti usando il sistema di compilazione basato su GNU
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/buildtools/managers/cmake/kcm_kdevcmake_settings.desktop new/kdevelop/buildtools/managers/cmake/kcm_kdevcmake_settings.desktop
--- old/kdevelop/buildtools/managers/cmake/kcm_kdevcmake_settings.desktop 2007-11-02 08:38:07.000000000 +0100
+++ new/kdevelop/buildtools/managers/cmake/kcm_kdevcmake_settings.desktop 2007-11-23 08:40:13.000000000 +0100
@@ -19,6 +19,7 @@
Comment[el]=Ρύθμιση επιλογών CMake
Comment[es]=Configurar las preferencias de CMake
Comment[fa]=پیکربندی تنظیمات CMake
+Comment[fr]=Configurer les options de CMake
Comment[ga]=Cumraigh socruithe CMake
Comment[gl]=Configura os parámetros de CMake
Comment[it]=Configura impostazioni CMake
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/buildtools/managers/cmake/kdevcmakemanager.desktop new/kdevelop/buildtools/managers/cmake/kdevcmakemanager.desktop
--- old/kdevelop/buildtools/managers/cmake/kdevcmakemanager.desktop 2007-11-02 08:38:07.000000000 +0100
+++ new/kdevelop/buildtools/managers/cmake/kdevcmakemanager.desktop 2007-11-23 08:40:13.000000000 +0100
@@ -6,6 +6,7 @@
Name[el]=Διαχειριστής CMake του KDevelop
Name[es]=Gestor CMake de KDevelop
Name[fa]=مدیر KDevelop CMake
+Name[fr]=Gestionnaire CMake pour KDevelop
Name[ga]=Bainisteoir CMake le haghaidh KDevelop
Name[gl]=Xestor de CMake de KDevelop
Name[it]=Gestore CMake di KDevelop
@@ -24,6 +25,7 @@
Comment[de]=Erlaubt das Erstellen CMake basierter Projekte mit KDevelop
Comment[el]=Επιτρέπει στο KDevelop το χειρισμό έργων με βάση το CMake
Comment[es]=Permite que KDevelop gestione proyectos basados en CMake
+Comment[fr]=Permet à KDevelop de gérer les projets basés sur CMake
Comment[ga]=Ceadaigh do KDevelop tionscadail CMake a bhainistiú
Comment[gl]=Permítelle a KDevelop xestionar proxectos baseados en CMake
Comment[it]=Permette a KDevelop di gestire i progetti basati su CMake
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/buildtools/managers/custommake/kdevcustommakemanager.desktop new/kdevelop/buildtools/managers/custommake/kdevcustommakemanager.desktop
--- old/kdevelop/buildtools/managers/custommake/kdevcustommakemanager.desktop 2007-11-02 08:38:07.000000000 +0100
+++ new/kdevelop/buildtools/managers/custommake/kdevcustommakemanager.desktop 2007-11-23 08:40:13.000000000 +0100
@@ -6,6 +6,7 @@
Name[el]=Διαχειριστής προσαρμοσμένης δημιουργίας του KDevelop
Name[es]=Gestor de Make personalizado de KDevelop
Name[fa]=مدیر KDevelop CustomMake
+Name[fr]=Gestionnaire Make personnalisé pour KDevelop
Name[ga]=Bainisteoir CustomMake le haghaidh KDevelop
Name[gl]=Xestor de CustomMake de KDevelop
Name[it]=Gestore personalizzato di Make per KDevelop
@@ -25,6 +26,7 @@
Comment[el]=Εισαγωγή και επεξεργασία έργων προσαρμοσμένου make
Comment[es]=Importa y edita proyectos make personalizados
Comment[fa]=پروژههای make سفارشی را وارد و ویرایش میکند
+Comment[fr]=Importe et modifie des projets Make personnalisés
Comment[ga]=Iompórtáil tionscadail shaincheaptha make agus cuir iad in eagar
Comment[gl]=Importa e edita proxectos que usen un sistema make personalizado
Comment[it]=Importa e modifica i progetti personalizzati di Make
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/buildtools/managers/qmake/kdevqmakemanager.desktop new/kdevelop/buildtools/managers/qmake/kdevqmakemanager.desktop
--- old/kdevelop/buildtools/managers/qmake/kdevqmakemanager.desktop 2007-11-02 08:38:07.000000000 +0100
+++ new/kdevelop/buildtools/managers/qmake/kdevqmakemanager.desktop 2007-11-23 08:40:13.000000000 +0100
@@ -6,6 +6,7 @@
Name[el]=Διαχειριστής QMake του KDevelop
Name[es]=Gestor QMake de KDevelop
Name[fa]=مدیر KDevelop QMake
+Name[fr]=Gestionnaire QMake pour KDevelop
Name[ga]=Bainisteoir QMake le haghaidh KDevelop
Name[gl]=Xestor de QMake de KDevelop
Name[it]=Gestore QMake di KDevelop
@@ -30,7 +31,7 @@
Comment[et]=QMake'i projektide import ja redigeerimine.
Comment[eu]=Qmake proiektuak inportatu eta editatzen ditu
Comment[fa]=پروژههای qmake را وارد و ویرایش میکند
-Comment[fr]=Importe et modifie des projets qmake
+Comment[fr]=Importe et modifie des projets Qmake
Comment[ga]=Iompórtáil tionscadail qmake agus cuir iad in eagar
Comment[gl]=Importa e edita proxectos baseados en qmake
Comment[hu]=Qmake-projektek importálása és szerkesztése
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/buildtools/managers/qmake/parser/generated/qmake_parser.cpp new/kdevelop/buildtools/managers/qmake/parser/generated/qmake_parser.cpp
--- old/kdevelop/buildtools/managers/qmake/parser/generated/qmake_parser.cpp 2007-11-18 18:36:21.000000000 +0100
+++ new/kdevelop/buildtools/managers/qmake/parser/generated/qmake_parser.cpp 2007-11-19 14:12:35.000000000 +0100
@@ -8,6 +8,7 @@
#include
#include
#include <cstddef>
+#include <limits>
namespace QMake
{
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/buildtools/managers/qmake/parser/qmake.g new/kdevelop/buildtools/managers/qmake/parser/qmake.g
--- old/kdevelop/buildtools/managers/qmake/parser/qmake.g 2007-11-18 18:36:21.000000000 +0100
+++ new/kdevelop/buildtools/managers/qmake/parser/qmake.g 2007-11-19 14:12:35.000000000 +0100
@@ -26,6 +26,7 @@
[:
#include
+#include <limits>
namespace QMake
{
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/app_templates/qmake_qt4guiapp/qmake_qt4guiapp.kdevtemplate new/kdevelop/languages/cpp/app_templates/qmake_qt4guiapp/qmake_qt4guiapp.kdevtemplate
--- old/kdevelop/languages/cpp/app_templates/qmake_qt4guiapp/qmake_qt4guiapp.kdevtemplate 2007-11-02 08:38:07.000000000 +0100
+++ new/kdevelop/languages/cpp/app_templates/qmake_qt4guiapp/qmake_qt4guiapp.kdevtemplate 2007-11-23 08:40:13.000000000 +0100
@@ -5,6 +5,7 @@
Name[el]=Εφαρμογή GUI της Qt4
Name[es]=Aplicación con interfaz gráfica Qt4
Name[fa]=کاربرد ونک Qt4
+Name[fr]=Application avec interface graphique Qtopia
Name[ga]=Feidhmchlár Grafach Qt4
Name[gl]=Aplicación Qt4 con GUI
Name[it]=Applicazione GUI Qt4
@@ -24,6 +25,7 @@
Comment[el]=Δημιουργία μιας εφαρμογής με βάση τα QMake/Qt4 με γραφικό περιβάλλον (συμβατή με πολλαπλές πλατφόρμες)
Comment[es]=Genera una aplicación basada en QMake/Qt4 con interfaz gráfica (compatible multiplataforma)
Comment[fa]=یک کاربرد بر مبنای QMake/Qt4 با واسط کاربر نگارهای تولید میکند )همساز بین سکویی(
+Comment[fr]=Générer une application basée sur QMake / Qt4 avec interface graphique (compatible multiplate-forme)
Comment[ga]=Cruthaigh feidhmchlár bunaithe ar QMake/Qt4 le comhéadan grafach (feidhmchlár trasardáin)
Comment[gl]=Xera un programa baseado en QMake/Qt4 con inteface gráfica para o usuario (compatíbel con multiplataforma)
Comment[it]=Genera un'applicazione basata su QMake/Qt4 con interfaccia utente grafica (compatibile multipiattaforma)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/cppcodecompletionmodel.cpp new/kdevelop/languages/cpp/cppcodecompletionmodel.cpp
--- old/kdevelop/languages/cpp/cppcodecompletionmodel.cpp 2007-11-16 15:16:30.000000000 +0100
+++ new/kdevelop/languages/cpp/cppcodecompletionmodel.cpp 2007-11-21 13:15:45.000000000 +0100
@@ -109,11 +109,11 @@
, m_mutex(new QMutex)
, m_worker(new CodeCompletionWorker(this))
{
- qRegisterMetaType<CompletionItem>("CppCodeCompletionModel::CompletionItem");
+ qRegisterMetaType("QListCppCodeCompletionModel::CompletionItem");
qRegisterMetaTypeKTextEditor::Cursor("KTextEditor::Cursor");
connect(this, SIGNAL(completionsNeeded(KDevelop::DUContextPointer, const KTextEditor::Cursor&, KTextEditor::View*)), m_worker, SLOT(computeCompletions(KDevelop::DUContextPointer, const KTextEditor::Cursor&, KTextEditor::View*)), Qt::QueuedConnection);
- connect(m_worker, SIGNAL(foundDeclaration(CppCodeCompletionModel::CompletionItem, void*)), this, SLOT(foundDeclaration(CppCodeCompletionModel::CompletionItem, void*)), Qt::QueuedConnection);
+ connect(m_worker, SIGNAL(foundDeclarations(QListCppCodeCompletionModel::CompletionItem, void*)), this, SLOT(foundDeclarations(QListCppCodeCompletionModel::CompletionItem, void*)), Qt::QueuedConnection);
m_worker->start();
}
@@ -182,12 +182,17 @@
}
}
-void CppCodeCompletionModel::foundDeclaration(CompletionItem item, void* completionContext)
+void CppCodeCompletionModel::foundDeclarations(QList<CompletionItem> items, void* completionContext)
{
if (completionContext == m_completionContext.data()) {
- beginInsertRows(QModelIndex(), m_declarations.count(), m_declarations.count());
- m_declarations << item;
- endInsertRows();
+ if( !m_declarations.isEmpty() ) {
+ beginInsertRows(QModelIndex(), m_declarations.count(), m_declarations.count() + items.count() - 1);
+ m_declarations += items;
+ endInsertRows();
+ } else {
+ m_declarations = items;
+ reset();
+ }
}
}
@@ -306,6 +311,8 @@
}
++num;
+ if( paramNameIt != paramNames.end() )
+ ++paramNameIt;
}
ret += ')';
if( functionType->isConstant() )
@@ -491,7 +498,7 @@
{
QString indentation;
int depth = item.inheritanceDepth;
- if( depth > 1000 )
+ if( depth >= 1000 )
depth-=1000;
for( int a = 0; a < depth; a++ )
indentation += " ";
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/cppcodecompletionmodel.h new/kdevelop/languages/cpp/cppcodecompletionmodel.h
--- old/kdevelop/languages/cpp/cppcodecompletionmodel.h 2007-11-12 13:39:16.000000000 +0100
+++ new/kdevelop/languages/cpp/cppcodecompletionmodel.h 2007-11-21 13:05:35.000000000 +0100
@@ -85,7 +85,7 @@
void completionsNeeded(KDevelop::DUContextPointer context, const KTextEditor::Cursor& position, KTextEditor::View* view);
private Q_SLOTS:
- void foundDeclaration(CppCodeCompletionModel::CompletionItem item, void* completionContext);
+ void foundDeclarations(QListCppCodeCompletionModel::CompletionItem item, void* completionContext);
private:
KSharedPtrCpp::CodeCompletionContext m_completionContext;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/cppcodecompletionworker.cpp new/kdevelop/languages/cpp/cppcodecompletionworker.cpp
--- old/kdevelop/languages/cpp/cppcodecompletionworker.cpp 2007-11-16 13:21:45.000000000 +0100
+++ new/kdevelop/languages/cpp/cppcodecompletionworker.cpp 2007-11-21 13:05:35.000000000 +0100
@@ -101,6 +101,8 @@
if (m_abort)
return;
+ QListCppCodeCompletionModel::CompletionItem items;
+
if( completionContext->memberAccessContainer().isValid() ||completionContext->memberAccessOperation() == Cpp::CodeCompletionContext::StaticMemberChoose )
{
QList containers = completionContext->memberAccessContainers();
@@ -109,8 +111,8 @@
if (m_abort)
return;
- foreach( const DeclarationDepthPair& decl, Cpp::hideOverloadedDeclarations( ctx->allDeclarations(ctx->textRange().end(), false) ) )
- emit foundDeclaration(CppCodeCompletionModel::CompletionItem( DeclarationPointer(decl.first), completionContext, decl.second ), completionContext.data());
+ foreach( const DeclarationDepthPair& decl, Cpp::hideOverloadedDeclarations( ctx->allDeclarations(ctx->textRange().end(), context->topContext(), false ) ) )
+ items << CppCodeCompletionModel::CompletionItem( DeclarationPointer(decl.first), completionContext, decl.second ), completionContext.data();
}
} else {
kDebug(9007) << "CppCodeCompletionModel::setContext: no container-type";
@@ -125,17 +127,17 @@
CppCodeCompletionModel::CompletionItem completionItem;
completionItem.includeItem = includeItem;
- emit foundDeclaration(completionItem, completionContext.data());
+ items << completionItem;
++cnt;
}
kDebug(9007) << "Added " << cnt << " include-files to completion-list";
} else {
//Show all visible declarations
- foreach( const DeclarationDepthPair& decl, Cpp::hideOverloadedDeclarations( context->allDeclarations(context->type() == DUContext::Class ? context->textRange().end() : position) ) ) {
+ foreach( const DeclarationDepthPair& decl, Cpp::hideOverloadedDeclarations( context->allDeclarations(context->type() == DUContext::Class ? context->textRange().end() : position, context->topContext()) ) ) {
if (m_abort)
return;
- emit foundDeclaration(CppCodeCompletionModel::CompletionItem( DeclarationPointer(decl.first), completionContext, decl.second ), completionContext.data());
+ items << CppCodeCompletionModel::CompletionItem( DeclarationPointer(decl.first), completionContext, decl.second ), completionContext.data();
}
kDebug(9007) << "CppCodeCompletionModel::setContext: using all declarations visible";
@@ -152,7 +154,7 @@
if( parentContext->memberAccessOperation() == Cpp::CodeCompletionContext::FunctionCallAccess ) {
int num = 0;
foreach( Cpp::CodeCompletionContext::Function function, parentContext->functions() ) {
- emit foundDeclaration(CppCodeCompletionModel::CompletionItem( function.function.declaration(), parentContext, 0, num ), completionContext.data());
+ items << CppCodeCompletionModel::CompletionItem( function.function.declaration(), parentContext, 0, num ), completionContext.data();
++num;
}
} else {
@@ -160,6 +162,7 @@
}
}
} while( parentContext );
+ emit foundDeclarations( items, completionContext.data() );
} else {
kDebug(9007) << "CppCodeCompletionModel::setContext: Invalid code-completion context";
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/cppcodecompletionworker.h new/kdevelop/languages/cpp/cppcodecompletionworker.h
--- old/kdevelop/languages/cpp/cppcodecompletionworker.h 2007-11-12 13:39:16.000000000 +0100
+++ new/kdevelop/languages/cpp/cppcodecompletionworker.h 2007-11-21 13:05:35.000000000 +0100
@@ -23,6 +23,7 @@
#define KDEVCPPCODECOMPLETIONWORKER_H
#include <QThread>
+#include <QList>
#include "cppcodecompletionmodel.h"
@@ -39,7 +40,7 @@
void abortCurrentCompletion();
Q_SIGNALS:
- void foundDeclaration(CppCodeCompletionModel::CompletionItem, void* completionContext);
+ void foundDeclarations(QListCppCodeCompletionModel::CompletionItem, void* completionContext);
protected:
virtual void run();
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/cppduchain/contextbuilder.cpp new/kdevelop/languages/cpp/cppduchain/contextbuilder.cpp
--- old/kdevelop/languages/cpp/cppduchain/contextbuilder.cpp 2007-11-18 02:32:35.000000000 +0100
+++ new/kdevelop/languages/cpp/cppduchain/contextbuilder.cpp 2007-11-20 02:09:18.000000000 +0100
@@ -220,13 +220,17 @@
if( topLevelContext && !topLevelContext->smartRange() && m_editor->smart() ) {
lock.unlock();
+ kWarning() << "Smartening Context!";
smartenContext(topLevelContext);
lock.lock();
topLevelContext = updateContext.data(); //In case the context was deleted, updateContext as a DUChainPointer will have noticed it.
}
- if( topLevelContext && topLevelContext->smartRange() )
- Q_ASSERT(!topLevelContext->smartRange()->parentRange()); //Top-range must have no parent, else something is wrong with the structure
+ if( topLevelContext && topLevelContext->smartRange() && !(topLevelContext->flags() & TopDUContext::ProxyContextFlag))
+ if (topLevelContext->smartRange()->parentRange()) { //Top-range must have no parent, else something is wrong with the structure
+ kDebug() << *topLevelContext->smartRange() << "erroneously has a parent range" << *topLevelContext->smartRange()->parentRange();
+ Q_ASSERT(false);
+ }
if (topLevelContext) {
kDebug(9007) << "ContextBuilder::buildContexts: recompiling";
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/cppduchain/cppducontext.h new/kdevelop/languages/cpp/cppduchain/cppducontext.h
--- old/kdevelop/languages/cpp/cppduchain/cppducontext.h 2007-11-18 05:13:12.000000000 +0100
+++ new/kdevelop/languages/cpp/cppduchain/cppducontext.h 2007-11-22 18:26:35.000000000 +0100
@@ -191,10 +191,9 @@
delayed->setQualifiedIdentifier( currentIdentifier.templateIdentifiers().at(a) );
Cpp::ExpressionEvaluationResult res;
- res.type = Cpp::resolveDelayedTypes( AbstractType::Ptr( delayed.data() ), this, trace, BaseContext::NoSearchFlags );
+ res.type = Cpp::resolveDelayedTypes( AbstractType::Ptr( delayed.data() ), this, trace, basicFlags & KDevelop::DUContext::NoUndefinedTemplateParams ? DUContext::NoUndefinedTemplateParams : DUContext::NoSearchFlags );
- if( (basicFlags & KDevelop::DUContext::NoUndefinedTemplateParams) && dynamic_cast(res.type.data()) ) {
- kDebug() << "breaking because template involved";
+ if( (basicFlags & KDevelop::DUContext::NoUndefinedTemplateParams) && (dynamic_cast(res.type.data()) || dynamic_cast(res.type.data())) ) {
return false;
}
@@ -225,12 +224,14 @@
prepend.pop();
}
allIdentifiers << currentLookup;
+
for( int a = trace.count()-1; a >= 0; --a ) {
const DUContext::ImportTraceItem& traceItem(trace[a]);
QList decls;
///@todo Give a correctly modified trace(without the used items)
- traceItem.ctx->findDeclarationsInternal( allIdentifiers, traceItem.position.isValid() ? traceItem.position : traceItem.ctx->textRange().end(), AbstractType::Ptr(), tempDecls, trace.mid(0,a), KDevelop::DUContext::NoUndefinedTemplateParams );
+ traceItem.ctx->findDeclarationsInternal( allIdentifiers, traceItem.position.isValid() ? traceItem.position : traceItem.ctx->textRange().end(), AbstractType::Ptr(), decls, trace.mid(0,a), KDevelop::DUContext::NoUndefinedTemplateParams );
if( !decls.isEmpty() ) {
+ tempDecls = decls;
break;
}
}
@@ -271,19 +272,18 @@
Declaration* dec = instantiateDeclaration(decl, templateArgumentTypes, trace);
if( dec )
ret << dec;
- else
- kDebug(9007) << "Could not instantiate template-declaration";
+ ifDebug( else kDebug(9007) << "Could not instantiate template-declaration"; )
}
}
}else{
//Only a part of the scope found, keep on searching
//Handle normal found declarations
- currentLookup.clear();
if( tempDecls.size() == 1 ) {
} else {
- kDebug(9007) << "CppDUContext::findDeclarationsInternal: found " << tempDecls.size() << " multiple ambiguous declarations for scope " << currentLookup.toString();
+ kDebug(9007) << "CppDUContext::findDeclarationsInternal: found " << tempDecls.size() << " ambiguous declarations for scope " << currentLookup.toString();
}
+ currentLookup.clear();
//Extract a context, maybe it would be enough only testing the first found declaration
foreach( Declaration* decl, tempDecls ) {
Declaration* instanceDecl = decl;
@@ -473,7 +473,7 @@
TemplateDeclaration* templateDecl = dynamic_cast(decl);
if( !templateDecl ) {
- kDebug(9007) << "Tried to instantiate a non-template declaration";
+ ifDebug( kDebug(9007) << "Tried to instantiate a non-template declaration" << decl->toString(); )
return 0;
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/cppduchain/declarationbuilder.cpp new/kdevelop/languages/cpp/cppduchain/declarationbuilder.cpp
--- old/kdevelop/languages/cpp/cppduchain/declarationbuilder.cpp 2007-11-18 02:32:35.000000000 +0100
+++ new/kdevelop/languages/cpp/cppduchain/declarationbuilder.cpp 2007-11-22 19:44:22.000000000 +0100
@@ -531,29 +531,11 @@
currentDeclaration()->setType(type);
}
-void DeclarationBuilder::closeDeclaration()
+void DeclarationBuilder::eventuallyAssignInternalContext()
{
- if (lastType() || m_lastContext) {
+ if (m_lastContext) {
DUChainWriteLocker lock(DUChain::lock());
- if(lastType()) {
- IdentifiedType* idType = dynamic_cast(lastType().data());
- DelayedType* delayed = dynamic_cast(lastType().data());
-
- //When the given type has no declaration yet, assume we are declaring it now.
- //If the type is a delayed type, it is a searched type, and not a declared one, so don't set the declaration then.
- if( idType && idType->declaration() == 0 && !delayed )
- idType->setDeclaration( currentDeclaration() );
-
- //If the type is not identified, it is an instance-declaration too, because those types have no type-declarations.
- if( (((!idType) || (idType && idType->declaration() != currentDeclaration())) && !currentDeclaration()->isTypeAlias() && !currentDeclaration()->isForwardDeclaration() ) )
- currentDeclaration()->setKind(Declaration::Instance);
- else
- currentDeclaration()->setKind(Declaration::Type);
-
- currentDeclaration()->setType(lastType());
- }
-
if( dynamic_cast(currentDeclaration()) )
Q_ASSERT( !static_cast(currentDeclaration())->isConstructor() || currentDeclaration()->context()->type() == DUContext::Class );
@@ -569,8 +551,31 @@
}
}
}
+}
+void DeclarationBuilder::closeDeclaration()
+{
+ if (lastType()) {
+ DUChainWriteLocker lock(DUChain::lock());
+ IdentifiedType* idType = dynamic_cast(lastType().data());
+ DelayedType* delayed = dynamic_cast(lastType().data());
+
+ //When the given type has no declaration yet, assume we are declaring it now.
+ //If the type is a delayed type, it is a searched type, and not a declared one, so don't set the declaration then.
+ if( idType && idType->declaration() == 0 && !delayed )
+ idType->setDeclaration( currentDeclaration() );
+
+ //If the type is not identified, it is an instance-declaration too, because those types have no type-declarations.
+ if( (((!idType) || (idType && idType->declaration() != currentDeclaration())) && !currentDeclaration()->isTypeAlias() && !currentDeclaration()->isForwardDeclaration() ) )
+ currentDeclaration()->setKind(Declaration::Instance);
+ else
+ currentDeclaration()->setKind(Declaration::Type);
+
+ currentDeclaration()->setType(lastType());
+ }
+
+ eventuallyAssignInternalContext();
//kDebug(9007) << "Mangled declaration:" << currentDeclaration()->mangledIdentifier();
@@ -621,6 +626,8 @@
DeclarationBuilderBase::visitClassSpecifier(node);
+ eventuallyAssignInternalContext();
+
if( node->name ) {
//Resolve forward-declarations
DUChainWriteLocker lock(DUChain::lock());
@@ -804,7 +811,7 @@
injectType(AbstractType::Ptr(declarations.first()->abstractType().data()), node);
return;
}else{
- kDebug() << "Error: Bad declaration";
+ kDebug(9007) << "Error: Bad declaration";
}
}
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/cppduchain/declarationbuilder.h new/kdevelop/languages/cpp/cppduchain/declarationbuilder.h
--- old/kdevelop/languages/cpp/cppduchain/declarationbuilder.h 2007-11-17 03:35:11.000000000 +0100
+++ new/kdevelop/languages/cpp/cppduchain/declarationbuilder.h 2007-11-22 19:44:22.000000000 +0100
@@ -95,6 +95,7 @@
KDevelop::Declaration* openDeclaration(NameAST* name, AST* range, bool isFunction = false, bool isForward = false, bool isDefinition = false, bool isNamespaceAlias = false, const Identifier& customName = Identifier());
/// Same as the above, but sets it as the definition too
KDevelop::Declaration* openDefinition(NameAST* name, AST* range, bool isFunction = false);
+ void eventuallyAssignInternalContext();
void closeDeclaration();
void abortDeclaration();
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/cppduchain/expressionparser.cpp new/kdevelop/languages/cpp/cppduchain/expressionparser.cpp
--- old/kdevelop/languages/cpp/cppduchain/expressionparser.cpp 2007-11-18 02:32:35.000000000 +0100
+++ new/kdevelop/languages/cpp/cppduchain/expressionparser.cpp 2007-11-20 02:09:18.000000000 +0100
@@ -69,7 +69,7 @@
ast = parser.parseTypeOrExpression(session, forceExpression);
if(!ast) {
- kDebug() << "Failed to parse \"" << unit << "\"";
+ kDebug(9007) << "Failed to parse \"" << unit << "\"";
delete session;
return ExpressionEvaluationResult();
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/cppduchain/expressionvisitor.cpp new/kdevelop/languages/cpp/cppduchain/expressionvisitor.cpp
--- old/kdevelop/languages/cpp/cppduchain/expressionvisitor.cpp 2007-11-18 05:13:12.000000000 +0100
+++ new/kdevelop/languages/cpp/cppduchain/expressionvisitor.cpp 2007-11-22 01:49:06.000000000 +0100
@@ -197,7 +197,7 @@
}
-ExpressionVisitor::ExpressionVisitor(ParseSession* session, const KDevelop::DUContext::ImportTrace& inclusionTrace, bool strict) : m_strict(strict), m_session(session), m_currentContext(0) {
+ExpressionVisitor::ExpressionVisitor(ParseSession* session, const KDevelop::DUContext::ImportTrace& inclusionTrace, bool strict) : m_strict(strict), m_inclusionTrace(inclusionTrace), m_session(session), m_currentContext(0) {
}
ExpressionVisitor::~ExpressionVisitor() {
@@ -1406,7 +1406,7 @@
PushPositiveContext pushContext( m_currentContext, node->ducontext );
clearLast();
visit(node->expression);
- kDebug() << "expression kind" << node->kind;
+ kDebug(9007) << "expression kind" << node->kind;
if( m_lastType )
expressionType( node, m_lastType, m_lastInstance );
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/cppduchain/templatedeclaration.cpp new/kdevelop/languages/cpp/cppduchain/templatedeclaration.cpp
--- old/kdevelop/languages/cpp/cppduchain/templatedeclaration.cpp 2007-11-18 05:13:12.000000000 +0100
+++ new/kdevelop/languages/cpp/cppduchain/templatedeclaration.cpp 2007-11-23 15:54:40.000000000 +0100
@@ -125,7 +125,7 @@
const DelayedType* delayed = dynamic_cast(base.baseClass.data());
if( delayed )
return delayed;
- else if( delayed = containsDelayedType( base.baseClass.data() ) )
+ else if( (delayed = containsDelayedType( base.baseClass.data() )) )
return delayed;
}
}
@@ -159,7 +159,7 @@
QList decls;
if( !searchContext->findDeclarationsInternal( identifiers, searchContext->textRange().end(), AbstractType::Ptr(), decls, inclusionTrace, searchFlags ) ) {
- kDebug() << "stopping exchange because template involved";
+ kDebug(9007) << "stopping exchange because template involved";
return const_cast(type);
}
@@ -458,7 +458,7 @@
///@todo Use explicitly declared specializations
Declaration* TemplateDeclaration::instantiate( const QList<ExpressionEvaluationResult>& templateArguments, const DUContext::ImportTrace& inclusionTrace )
{
- foreach(const ExpressionEvaluationResult& res, templateArguments)
+ //foreach(const ExpressionEvaluationResult& res, templateArguments)
if( ForwardDeclaration* forward = dynamic_cast(this) ) {
TemplateDeclaration* resolvedTemplate = dynamic_cast(forward->resolved());
@@ -491,7 +491,7 @@
return clone;
}
-AbstractType::Ptr resolveDelayedTypes( AbstractType::Ptr type, const KDevelop::DUContext* context, const KDevelop::DUContext::ImportTrace& inclusionTrace , KDevelop::DUContext::SearchFlags searchFlags ) {
+AbstractType::Ptr resolveDelayedTypes( AbstractType::Ptr type, const KDevelop::DUContext* context, const KDevelop::DUContext::ImportTrace& inclusionTrace, KDevelop::DUContext::SearchFlags searchFlags ) {
if( !type )
return type;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/cppduchain/tests/test_duchain.cpp new/kdevelop/languages/cpp/cppduchain/tests/test_duchain.cpp
--- old/kdevelop/languages/cpp/cppduchain/tests/test_duchain.cpp 2007-11-18 05:10:46.000000000 +0100
+++ new/kdevelop/languages/cpp/cppduchain/tests/test_duchain.cpp 2007-11-22 18:28:34.000000000 +0100
@@ -1225,6 +1225,17 @@
release(top);
}
+void TestDUChain::testTemplateDependentClass() {
+ QByteArray method("class A {}; template<class T> class B { class Q{ typedef T Type; }; }; B<A>::Q::Type t;");
+
+ DUContext* top = parse(method, DumpNone);
+
+ DUChainWriteLocker lock(DUChain::lock());
+ Declaration* d = findDeclaration(top, QualifiedIdentifier("t"));
+ QVERIFY(d);
+ QCOMPARE(d->abstractType().data(), top->localDeclarations()[0]->abstractType().data());
+}
+
void TestDUChain::testTemplates() {
QByteArray method("template<class T> T test(const T& t) {}; template class A {T2 a; typedef T Template1; }; class B{int b;}; class C{int c;}; template<class T>class A{}; typedef A D;");
@@ -1391,9 +1402,8 @@
void TestDUChain::testTemplatesRebind() {
QByteArray method("struct A {}; struct S {typedef A Value;} ; template<class TT> class Base { template<class T> struct rebind { typedef Base<T> other; }; typedef TT Type; }; template<class T> class Class { typedef Base<T>::rebind<T>::other::Type MemberType; MemberType member; Base<T>::template rebind<T>::other::Type member2; T::Value value; }; };");
- //QByteArray method("struct A {}; struct S {typedef A Value;} ; template<class TT> class Base { template<class Q> struct rebind { typedef Base<Q> other; }; typedef TT Type; }; template<class T> class Class { typedef Base<T>::rebind<T>::other MemberType; MemberType member; Base<T>::template rebind<T>::other member2; T::Value value; }; };");
- DUContext* top = parse(method, DumpAll);
+ DUContext* top = parse(method, DumpNone);
DUChainWriteLocker lock(DUChain::lock());
@@ -1426,12 +1436,22 @@
}
void TestDUChain::testTemplatesRebind2() {
- QByteArray method("struct A {}; struct S {typedef A Value;} ;template<class T> class Class { T::Value value; }; };");
+ QByteArray method("struct A {}; struct S {typedef A Value;} ;template<class T> class Test { }; template<class T> class Class { typedef T::Value Value; T::Value value; typedef Test<Value> ValueClass; Test<const Value> ValueClass2;}; };");
- DUContext* top = parse(method, DumpNone);
+ DUContext* top = parse(method, DumpAll);
DUChainWriteLocker lock(DUChain::lock());
+ Declaration* member5Decl = findDeclaration(top, QualifiedIdentifier("Class<S>::ValueClass2"));
+ QVERIFY(member5Decl);
+ QVERIFY(member5Decl->abstractType());
+ QCOMPARE(member5Decl->abstractType()->toString(), QString("Test< A >")); ///@todo This will fail once we parse "const" correctly, change it to "Test< const A >" then
+
+ Declaration* member4Decl = findDeclaration(top, QualifiedIdentifier("Class<S>::ValueClass"));
+ QVERIFY(member4Decl);
+ QVERIFY(member4Decl->abstractType());
+ QCOMPARE(member4Decl->abstractType()->toString(), QString("Test< A >"));
+
Declaration* member3Decl = findDeclaration(top, QualifiedIdentifier("Class<S>::value"));
QVERIFY(member3Decl);
QVERIFY(member3Decl->abstractType());
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/cppduchain/tests/test_duchain.h new/kdevelop/languages/cpp/cppduchain/tests/test_duchain.h
--- old/kdevelop/languages/cpp/cppduchain/tests/test_duchain.h 2007-11-18 02:26:09.000000000 +0100
+++ new/kdevelop/languages/cpp/cppduchain/tests/test_duchain.h 2007-11-22 17:24:21.000000000 +0100
@@ -73,6 +73,7 @@
void testTemplateEnums();
void testIntegralTemplates();
void testTypedef();
+ void testTemplateDependentClass();
void testTemplates();
void testTemplates2();
void testTemplatesRebind();
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/cppduchain/tests/test_expressionparser.cpp new/kdevelop/languages/cpp/cppduchain/tests/test_expressionparser.cpp
--- old/kdevelop/languages/cpp/cppduchain/tests/test_expressionparser.cpp 2007-11-13 00:36:15.000000000 +0100
+++ new/kdevelop/languages/cpp/cppduchain/tests/test_expressionparser.cpp 2007-11-22 18:28:34.000000000 +0100
@@ -410,8 +410,23 @@
lock.unlock();
Cpp::ExpressionParser parser;
+ Cpp::ExpressionEvaluationResult result;
- Cpp::ExpressionEvaluationResult result = parser.evaluateExpression( "c.a", KDevelop::DUContextPointer(testContext));
+ result = parser.evaluateType( "const Cont", KDevelop::DUContextPointer(testContext));
+ lock.lock();
+ QVERIFY(result.isValid());
+ QCOMPARE(result.type->toString(), QString("Cont")); ///@todo Change this to "const Cont" once we parse const correctly
+ QVERIFY(!result.instance);
+ lock.unlock();
+
+ result = parser.evaluateExpression( "Cont", KDevelop::DUContextPointer(testContext));
+ lock.lock();
+ QVERIFY(result.isValid());
+ QCOMPARE(result.type->toString(), QString("Cont"));
+ QVERIFY(!result.instance);
+ lock.unlock();
+
+ result = parser.evaluateExpression( "c.a", KDevelop::DUContextPointer(testContext));
lock.lock();
QVERIFY(result.isValid());
QVERIFY(result.instance);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/cppduchain/typebuilder.cpp new/kdevelop/languages/cpp/cppduchain/typebuilder.cpp
--- old/kdevelop/languages/cpp/cppduchain/typebuilder.cpp 2007-11-18 02:32:35.000000000 +0100
+++ new/kdevelop/languages/cpp/cppduchain/typebuilder.cpp 2007-11-22 17:24:21.000000000 +0100
@@ -61,6 +61,33 @@
: TypeBuilderBase(editor), m_declarationHasInitDeclarators(false)
{
}
+///DUChain must be locked
+bool isTemplateDependent(Declaration* decl) {
+ ///@todo Store this information somewhere, instead of recomputing it for each item
+ if( !decl )
+ return false;
+ if( dynamic_cast(decl->abstractType().data()) )
+ return true;
+
+ DUContext* ctx = decl->context();
+
+ while( ctx && ctx->type() != DUContext::Global && ctx->type() != DUContext::Namespace ) {
+ //Check if there is an imported template-context, which has an unresolved template-parameter
+ foreach( DUContextPointer importedCtx, ctx->importedParentContexts() ) {
+ if( !importedCtx )
+ continue;
+ if( importedCtx->type() == DUContext::Template ) {
+ foreach( Declaration* paramDecl, importedCtx->localDeclarations() ) {
+ CppTemplateParameterType* templateParamType = dynamic_cast(paramDecl->abstractType().data());
+ if( templateParamType )
+ return true;
+ }
+ }
+ }
+ ctx = ctx->parentContext();
+ }
+ return false;
+}
void TypeBuilder::supportBuild(AST *node, DUContext* context)
{
@@ -151,28 +178,49 @@
Q_ASSERT( klass );
QualifiedIdentifier baseClassIdentifier = identifierForName(node->name);
- KTextEditor::Cursor pos = m_editor->findPosition(node->start_token, KDevelop::EditorIntegrator::FrontEdge);
-
- QList declarations = searchContext()->findDeclarations(baseClassIdentifier, pos, AbstractType::Ptr(), DUContext::NoUndefinedTemplateParams);
+
+ bool delay = false;
bool openedType = false;
- if( !declarations.isEmpty() )
- {
- if( declarations.count() > 1 )
- kDebug(9007) << "found multiple declarations for" << baseClassIdentifier.toString();
+
+ if(!delay) {
+ KTextEditor::Cursor pos = m_editor->findPosition(node->start_token, KDevelop::EditorIntegrator::FrontEdge);
- foreach( Declaration* decl, declarations )
+ QList declarations = searchContext()->findDeclarations(baseClassIdentifier, pos, AbstractType::Ptr(), 0, DUContext::NoUndefinedTemplateParams);
+ /**
+ * @todo If we somewhere within a template class/function declaration,
+ * we need to check here whether the found declaration is template-dependent.
+ * If it is, it needs to be delayed. Template-dependent means:
+ * - Does it contain any types that depend on an unresolved template-parameter?
+ *
+ * Until we correctly check for that, we need to make all types within template-classes delayed. This hurts.
+ * */
+ if( !declarations.isEmpty() )
{
- if( decl->kind() == Declaration::Type && decl->abstractType() && dynamic_cast(decl->abstractType().data()) )
+ if( declarations.count() > 1 )
+ kDebug(9007) << "found multiple declarations for" << baseClassIdentifier.toString();
+
+ foreach( Declaration* decl, declarations )
{
- openType( decl->abstractType(), node );
- openedType = true;
- break;
+ if( decl->kind() == Declaration::Type && decl->abstractType() && dynamic_cast(decl->abstractType().data()) )
+ {
+ if( !templateDeclarationDepth() || !isTemplateDependent(decl) ) {
+ openType( decl->abstractType(), node );
+ openedType = true;
+ } else {
+ delay = true;
+ }
+ break;
+ }
}
+ } else {
+ delay = true;
}
- } else {
+ }
+
+ if(delay) {
//We are in a template, and the searched type probably involves undefined template-parameters. So delay the resolution.
openedType = true;
- openDelayedType(baseClassIdentifier, node, (templateDeclarationDepth() != 0) ? DelayedType::Delayed : DelayedType::Unresolved );
+ openDelayedType( baseClassIdentifier, node, (templateDeclarationDepth() != 0) ? DelayedType::Delayed : DelayedType::Unresolved );
}
if( openedType ) {
@@ -231,39 +279,38 @@
Cpp::ExpressionEvaluationResult res;
- DUChainReadLocker lock(DUChain::lock());
- node->expression->ducontext = currentContext();
- res = parser.evaluateType( node->expression, m_editor->parseSession(), DUContext::ImportTrace() );
-
bool delay = false;
- //Delay the type-resolution of template-parameters
- if( !res.allDeclarations.isEmpty() && dynamic_cast(res.allDeclarations.front()) )
- delay = true;
-
- if ( !delay && res.isValid() && res.instance ) {
- if( dynamic_cast(res.type.data()) ) {
- CppConstantIntegralType* type = static_cast(res.type.data());
- m_currentEnumeratorValue = (int)type->value<qint64>();
- } else if( dynamic_cast(res.type.data()) ) {
- DelayedType* type = static_cast(res.type.data());
- openType(AbstractType::Ptr(type), node); ///@todo Make this an enumerator-type that holds the same information
- openedType = true;
+ if(!delay) {
+ DUChainReadLocker lock(DUChain::lock());
+ node->expression->ducontext = currentContext();
+ res = parser.evaluateType( node->expression, m_editor->parseSession(), DUContext::ImportTrace() );
+
+ //Delay the type-resolution of template-parameters
+ if( !res.allDeclarations.isEmpty() && (dynamic_cast(res.allDeclarations.front()) || isTemplateDependent(res.allDeclarations.front())) )
+ delay = true;
+
+ if ( !delay && res.isValid() && res.instance ) {
+ if( dynamic_cast(res.type.data()) ) {
+ CppConstantIntegralType* type = static_cast(res.type.data());
+ m_currentEnumeratorValue = (int)type->value<qint64>();
+ } else if( dynamic_cast(res.type.data()) ) {
+ DelayedType* type = static_cast(res.type.data());
+ openType(AbstractType::Ptr(type), node); ///@todo Make this an enumerator-type that holds the same information
+ openedType = true;
+ }
}
- } else {
- if( delay || templateDeclarationDepth() > 0 ) {
- QString str;
- ///Only record the strings, because these expressions may depend on template-parameters and thus must be evaluated later
- str += stringFromSessionTokens( m_editor->parseSession(), node->expression->start_token, node->expression->end_token );
+ }
+ if( delay || (!openedType && templateDeclarationDepth() != 0) ) {
+ QString str;
+ ///Only record the strings, because these expressions may depend on template-parameters and thus must be evaluated later
+ str += stringFromSessionTokens( m_editor->parseSession(), node->expression->start_token, node->expression->end_token );
- QualifiedIdentifier id( str.trimmed() );
- id.setIsExpression( true );
+ QualifiedIdentifier id( str.trimmed() );
+ id.setIsExpression( true );
- openDelayedType(id, node, DelayedType::Delayed);
- openedType = true;
- } else {
- ///@todo Report problem, bad expression
- }
+ openDelayedType(id, node, DelayedType::Delayed);
+ openedType = true;
}
}
@@ -422,27 +469,35 @@
bool TypeBuilder::openTypeFromName(NameAST* name) {
QualifiedIdentifier id = identifierForName(name);
- KTextEditor::Cursor pos = m_editor->findPosition(name->start_token, KDevelop::EditorIntegrator::FrontEdge);
- DUChainReadLocker lock(DUChain::lock());
bool openedType = false;
- QList dec = searchContext()->findDeclarations(id, pos, AbstractType::Ptr(), DUContext::NoUndefinedTemplateParams);
+ bool delay = false;
+
+ if(!delay) {
+ KTextEditor::Cursor pos = m_editor->findPosition(name->start_token, KDevelop::EditorIntegrator::FrontEdge);
+ DUChainReadLocker lock(DUChain::lock());
+ QList dec = searchContext()->findDeclarations(id, pos, AbstractType::Ptr(), 0, DUContext::NoUndefinedTemplateParams);
- if (!dec.isEmpty() && dec.front()->abstractType()) {
- ///@todo only functions may have multiple declarations here
- ifDebug( if( dec.count() > 1 ) kDebug(9007) << id.toString() << "was found" << dec.count() << "times" )
- //kDebug(9007) << "found for" << id.toString() << ":" << dec.front()->toString() << "type:" << dec.front()->abstractType()->toString() << "context:" << dec.front()->context();
- openedType = true;
- openType(dec.front()->abstractType(), name);
- } else {
+
+ if (!dec.isEmpty() && dec.front()->abstractType() && (!templateDeclarationDepth() || !isTemplateDependent(dec.front()))) {
+ ///@todo only functions may have multiple declarations here
+ ifDebug( if( dec.count() > 1 ) kDebug(9007) << id.toString() << "was found" << dec.count() << "times" )
+ //kDebug(9007) << "found for" << id.toString() << ":" << dec.front()->toString() << "type:" << dec.front()->abstractType()->toString() << "context:" << dec.front()->context();
+ openedType = true;
+ openType(dec.front()->abstractType(), name);
+ } else {
+ delay = true;
+ }
+ }
///@todo What about position?
+ if(delay) {
//Either delay the resolution for template-dependent types, or create an unresolved type that stores the name.
openedType = true;
- openDelayedType(id, name, (templateDeclarationDepth() != 0) ? DelayedType::Delayed : DelayedType::Unresolved );
+ openDelayedType(id, name, templateDeclarationDepth() ? DelayedType::Delayed : DelayedType::Unresolved );
- ifDebug( if(templateDeclarationDepth() != 0) kDebug(9007) << "no declaration found for" << id.toString() << "in context \"" << searchContext()->scopeIdentifier(true).toString() << "\"" << "" << searchContext() )
+ ifDebug( if(templateDeclarationDepth() == 0) kDebug(9007) << "no declaration found for" << id.toString() << "in context \"" << searchContext()->scopeIdentifier(true).toString() << "\"" << "" << searchContext() )
}
return openedType;
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/cpplanguagesupport.cpp new/kdevelop/languages/cpp/cpplanguagesupport.cpp
--- old/kdevelop/languages/cpp/cpplanguagesupport.cpp 2007-11-01 09:36:36.000000000 +0100
+++ new/kdevelop/languages/cpp/cpplanguagesupport.cpp 2007-11-20 02:09:18.000000000 +0100
@@ -205,6 +205,11 @@
core()->languageController()->backgroundParser()->addDocument(doc->url());
}
+void CppLanguageSupport::documentClosed(KDevelop::IDocument *)
+{
+ kDebug( 9007 ) << "CppLanguageSupport::documentClosed";
+}
+
KDevelop::ICodeHighlighting *CppLanguageSupport::codeHighlighting() const
{
return m_highlights;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/cpplanguagesupport.h new/kdevelop/languages/cpp/cpplanguagesupport.h
--- old/kdevelop/languages/cpp/cpplanguagesupport.h 2007-10-21 16:34:03.000000000 +0200
+++ new/kdevelop/languages/cpp/cpplanguagesupport.h 2007-11-20 02:09:18.000000000 +0100
@@ -76,6 +76,7 @@
private slots:
void documentLoaded(KDevelop::IDocument*);
+ void documentClosed(KDevelop::IDocument*);
void projectOpened(KDevelop::IProject *project);
void projectClosing(KDevelop::IProject *project);
void documentChanged( KDevelop::IDocument* document );
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/cppparsejob.cpp new/kdevelop/languages/cpp/cppparsejob.cpp
--- old/kdevelop/languages/cpp/cppparsejob.cpp 2007-11-17 03:35:11.000000000 +0100
+++ new/kdevelop/languages/cpp/cppparsejob.cpp 2007-11-23 16:54:30.000000000 +0100
@@ -275,8 +275,10 @@
ast->session = parentJob()->parseSession();
}
- foreach (const KDevelop::Problem& p, control.problems())
+ foreach (KDevelop::Problem p, control.problems()) {
+ p.setLocationStack(parentJob()->includeStack());
KDevelop::DUChain::problemEncountered(p);
+ }
parentJob()->setAST(ast);
}
@@ -287,7 +289,7 @@
return parentJob()->abortJob();
//If we are building a separate content-context
- TopDUContext* updating = parentJob()->updatingContext().data();
+ TopDUContextPointer updating = parentJob()->updatingContext();
Cpp::EnvironmentFilePointer environmentFile(parentJob()->environmentFile());
if( parentJob()->contentEnvironmentFile() )
@@ -354,8 +356,7 @@
kDebug( 9007 ) << "building duchain";
DeclarationBuilder declarationBuilder(&editor);
- TopDUContextPointer updatingptr(updating);
- topContext = declarationBuilder.buildDeclarations(environmentFile, ast, &chains, updatingptr, !(bool)parentJob()->contentContext());
+ topContext = declarationBuilder.buildDeclarations(environmentFile, ast, &chains, updating, !(bool)parentJob()->contentContext());
if(updating) {
DUChainWriteLocker l(DUChain::lock());
@@ -487,5 +488,15 @@
m_priority = priority;
}
+const QStack< DocumentCursor > & CPPParseJob::includeStack() const
+{
+ return m_includeStack;
+}
+
+void CPPParseJob::setIncludeStack(const QStack< DocumentCursor > & includeStack)
+{
+ m_includeStack = includeStack;
+}
+
#include "cppparsejob.moc"
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/cppparsejob.h new/kdevelop/languages/cpp/cppparsejob.h
--- old/kdevelop/languages/cpp/cppparsejob.h 2007-11-17 03:35:11.000000000 +0100
+++ new/kdevelop/languages/cpp/cppparsejob.h 2007-11-23 16:50:37.000000000 +0100
@@ -79,6 +79,9 @@
void addIncludedFile(KDevelop::TopDUContext* duChain, int sourceLine);
const IncludeFileList& includedFiles() const;
+ const QStack<DocumentCursor>& includeStack() const;
+ void setIncludeStack(const QStack<DocumentCursor>& includeStack);
+
///Returns the preprocessor-job that is parent of this job, or 0
PreprocessJob* parentPreprocessor() const;
@@ -114,11 +117,11 @@
void setContentContext( const KDevelop::TopDUContextPointer& context );
///If this is set, the contentContext should either be used without modification, or updated if it is outdated.
KDevelop::TopDUContextPointer contentContext() const;
-
+
///If this file was included from another, this contains the path within the search-paths that this file was found through
KUrl includedFromPath() const;
void setIncludedFromPath( const KUrl& path );
-
+
//Returns the master parse-job, which means the one that was not issued as an include-file
const CPPParseJob* masterJob() const;
CPPParseJob* masterJob();
@@ -140,11 +143,12 @@
//The following two members are used when simplified-matching is used, which means that one content-context and one specialized context will be used.
KDevelop::TopDUContextPointer m_contentContext;
KSharedPtr m_contentEnvironmentFile;
-
+
KUrl m_includedFromPath;
mutable bool m_includePathsComputed;
mutable KUrl::List m_includePaths; //Only a master-job has this set
bool m_useContentContext;
+ QStack<DocumentCursor> m_includeStack;
};
class CPPInternalParseJob : public ThreadWeaver::Job
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/kdevcppsupport.desktop new/kdevelop/languages/cpp/kdevcppsupport.desktop
--- old/kdevelop/languages/cpp/kdevcppsupport.desktop 2007-11-02 08:38:07.000000000 +0100
+++ new/kdevelop/languages/cpp/kdevcppsupport.desktop 2007-11-23 08:40:13.000000000 +0100
@@ -9,6 +9,7 @@
Comment[el]=Υποστήριξη γλώσσας C/C++
Comment[es]=Soporte para lenguaje C/C++
Comment[fa]=پشتیبانی زبان C/C++
+Comment[fr]=Prise en charge du langage C / C++
Comment[ga]=Tacaíocht C/C++
Comment[gl]=Soporte da linguaxe C/C++
Comment[it]=Supporto al linguaggio C/C++
@@ -38,6 +39,7 @@
GenericName[el]=Υποστήριξη C/C++
GenericName[es]=Soporte para C/C++
GenericName[fa]=پشتیبانی C/C++
+GenericName[fr]=Prise en charge du C / C++
GenericName[ga]=Tacaíocht C/C++
GenericName[gl]=Soporte de C/C++
GenericName[it]=Supporto C/C++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/parser/name_compiler.cpp new/kdevelop/languages/cpp/parser/name_compiler.cpp
--- old/kdevelop/languages/cpp/parser/name_compiler.cpp 2007-11-13 01:52:37.000000000 +0100
+++ new/kdevelop/languages/cpp/parser/name_compiler.cpp 2007-11-22 18:28:34.000000000 +0100
@@ -38,7 +38,7 @@
QString ret;
for( size_t a = ast->start_token; a < ast->end_token; a++ ) {
const Token &tk = m_session->token_stream->token(a);
- ret += tk.symbol();
+ ret += tk.symbol() + " ";
}
return ret;
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/parser/rpp/pp-location.cpp new/kdevelop/languages/cpp/parser/rpp/pp-location.cpp
--- old/kdevelop/languages/cpp/parser/rpp/pp-location.cpp 2007-11-08 10:49:48.000000000 +0100
+++ new/kdevelop/languages/cpp/parser/rpp/pp-location.cpp 2007-11-20 02:09:18.000000000 +0100
@@ -113,9 +113,9 @@
void LocationTable::dump() const
{
QMapIterator it = m_offsetTable;
- kDebug() << "Location Table:";
+ kDebug(9007) << "Location Table:";
while (it.hasNext()) {
it.next();
- kDebug() << it.key() << " => " << it.value();
+ kDebug(9007) << it.key() << " => " << it.value();
}
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/languages/cpp/preprocessjob.cpp new/kdevelop/languages/cpp/preprocessjob.cpp
--- old/kdevelop/languages/cpp/preprocessjob.cpp 2007-11-17 03:35:11.000000000 +0100
+++ new/kdevelop/languages/cpp/preprocessjob.cpp 2007-11-23 16:50:37.000000000 +0100
@@ -194,8 +194,10 @@
QString result = preprocessor.processFile(parentJob()->document().prettyUrl(), rpp::pp::Data, contents);
- foreach (const KDevelop::Problem& p, preprocessor.problems())
+ foreach (KDevelop::Problem p, preprocessor.problems()) {
+ p.setLocationStack(parentJob()->includeStack());
KDevelop::DUChain::problemEncountered(p);
+ }
parentJob()->parseSession()->setContents( result.toUtf8(), m_currentEnvironment->takeLocationTable() );
parentJob()->parseSession()->setUrl( parentJob()->document() );
@@ -286,8 +288,13 @@
KUrl localPath(parentJob()->document());
localPath.setFileName(QString());
-
- QPair included = parentJob()->cpp()->findInclude(parentJob()->includePaths(), localPath, fileName, type, skipCurrentPath ? parentJob()->includedFromPath() : KUrl() );
+ QStack<DocumentCursor> includeStack = parentJob()->includeStack();
+
+ KUrl from;
+ if (skipCurrentPath)
+ from = parentJob()->includedFromPath();
+
+ QPair included = parentJob()->cpp()->findInclude(parentJob()->includePaths(), localPath, fileName, type, from );
KUrl includedFile = included.first;
if (includedFile.isValid()) {
kDebug(9007) << "PreprocessJob" << parentJob()->document() << "(" << m_currentEnvironment->environment().size() << "macros)" << ": found include-file" << fileName << ":" << includedFile;
@@ -314,6 +321,7 @@
}
} else {
kDebug(9007) << "PreprocessJob" << parentJob()->document() << ": no fitting entry in du-chain, parsing";
+
/// Why bother the threadweaver? We need the preprocessed text NOW so we simply parse the
/// included file right here. Parallel parsing cannot be used here, because we need the
/// macros before we can continue.
@@ -325,7 +333,12 @@
///The second parameter is zero because we are in a background-thread and we here
///cannot create a slave of the foreground cpp-support-part.
CPPParseJob slaveJob(includedFile, 0, this);
+
slaveJob.setIncludedFromPath(included.second);
+
+ includeStack.append(DocumentCursor(includedFile, KTextEditor::Cursor(sourceLine, 0)));
+ slaveJob.setIncludeStack(includeStack);
+
slaveJob.parseForeground();
// Add the included file.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/plugins/appwizard/kdevappwizard.desktop new/kdevelop/plugins/appwizard/kdevappwizard.desktop
--- old/kdevelop/plugins/appwizard/kdevappwizard.desktop 2007-09-27 11:34:46.000000000 +0200
+++ new/kdevelop/plugins/appwizard/kdevappwizard.desktop 2007-11-23 08:40:13.000000000 +0100
@@ -12,7 +12,7 @@
Comment[et]=Rakenduse nõustaja
Comment[eu]=Aplikazio morroia
Comment[fa]=جادوگر کاربرد
-Comment[fr]=Un module externe pour la gestion de l'assistant de création d'applications.
+Comment[fr]=Assistant d'application
Comment[ga]=Treoraí Feidhmchláir
Comment[gl]=Asistente para aplicacións
Comment[hu]=Alkalmazásvarázsló
@@ -56,7 +56,7 @@
GenericName[et]=Rakenduse nõustaja
GenericName[eu]=Aplikazio morroia
GenericName[fa]=جادوگر کاربرد
-GenericName[fr]=Création d'applications
+GenericName[fr]=Assistant d'applications
GenericName[ga]=Treoraí Feidhmchláir
GenericName[gl]=Asistente para aplicacións
GenericName[hu]=Alkalmazásvarázsló
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/plugins/documentview/kdevdocumentview.desktop new/kdevelop/plugins/documentview/kdevdocumentview.desktop
--- old/kdevelop/plugins/documentview/kdevdocumentview.desktop 2007-11-05 09:13:37.000000000 +0100
+++ new/kdevelop/plugins/documentview/kdevdocumentview.desktop 2007-11-23 08:40:13.000000000 +0100
@@ -6,6 +6,7 @@
Comment[de]=Dieses Modul zeigt eine graphische Darstellung aller gerade offenen Dokumente nach Mime-Typ getrennt an.
Comment[el]=Αυτό το πρόσθετο εμφανίζει μια γραφική προβολή όλων των φορτωμένων εγγράφων και τα διαχωρίζει κατά τον τύπο mime τους.
Comment[es]=Este complemento muestra una vista gráfica de todos los documentos cargados y los organiza por su tipo MIME.
+Comment[fr]=Ce module externe affiche une vue graphique de tous les documents actuellement chargés et les sépare par type MIME.
Comment[ga]=Taispeánann an breiseán seo amharc grafach ar gach cáipéis atá luchtaithe faoi láthair, agus dealaíonn sé iad de réir a gcineál MIME.
Comment[gl]=Esta extensión mostra unha vista gráfica de todos os documentos agora cargados e sepáraos segundo o seu tipo mime.
Comment[it]=Questo plugin mostra una vista grafica di tutti i documenti attualmente caricati e li separa dal tipo di MIME
@@ -23,6 +24,7 @@
Name[el]=Προβολή εγγράφου
Name[es]=Visor de documentos
Name[fa]=نمای مستندات
+Name[fr]=Vue du document
Name[ga]=Amharc Cáipéise
Name[gl]=Vista dos documentos
Name[it]=Visualizzatore documento
@@ -40,6 +42,7 @@
GenericName[el]=Προβολή εγγράφου
GenericName[es]=Visor de documentos
GenericName[fa]=نمای مستندات
+GenericName[fr]=Vue du document
GenericName[ga]=Amharc Cáipéise
GenericName[gl]=Vista dos documentos
GenericName[it]=Visualizzatore documento
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/plugins/documentview/settings/kcm_documentview_settings.desktop new/kdevelop/plugins/documentview/settings/kcm_documentview_settings.desktop
--- old/kdevelop/plugins/documentview/settings/kcm_documentview_settings.desktop 2007-11-02 08:38:07.000000000 +0100
+++ new/kdevelop/plugins/documentview/settings/kcm_documentview_settings.desktop 2007-11-23 08:40:13.000000000 +0100
@@ -16,6 +16,7 @@
Name[el]=Προβολή εγγράφου
Name[es]=Visor de documentos
Name[fa]=نمای مستندات
+Name[fr]=Vue du document
Name[ga]=Amharc Cáipéise
Name[gl]=Vista dos documentos
Name[it]=Visualizzatore documento
@@ -32,6 +33,7 @@
Comment[de]=Dokumentansicht Einstellungen
Comment[el]=Ρύθμιση επιλογών προβολής εγγράφου
Comment[es]=Configurar las preferencias del visor de documentos
+Comment[fr]=Configurer les paramètres des vues du document
Comment[ga]=Cumraigh an tAmharc Cáipéise
Comment[gl]=Configura os parámetros da vista dos documentos
Comment[it]=Configura impostazioni di visualizzazione documento
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/plugins/grepview/grepviewpart.cpp new/kdevelop/plugins/grepview/grepviewpart.cpp
--- old/kdevelop/plugins/grepview/grepviewpart.cpp 2007-11-08 09:21:59.000000000 +0100
+++ new/kdevelop/plugins/grepview/grepviewpart.cpp 2007-11-23 15:28:58.000000000 +0100
@@ -347,7 +347,7 @@
connect( xargsProc, SIGNAL(error( QProcess::ProcessError )),
model, SLOT(slotFailed()) );
- int id = m_view->registerView( m_grepdlg->patternString() );
+ int id = m_view->registerView( m_grepdlg->patternString(), KDevelop::IOutputView::AllowUserClose );
m_view->setModel( id, model );
m_view->setDelegate( id, delegate );
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/plugins/grepview/kdevgrepview.desktop new/kdevelop/plugins/grepview/kdevgrepview.desktop
--- old/kdevelop/plugins/grepview/kdevgrepview.desktop 2007-10-31 08:31:44.000000000 +0100
+++ new/kdevelop/plugins/grepview/kdevgrepview.desktop 2007-11-23 08:40:13.000000000 +0100
@@ -8,7 +8,7 @@
Comment[es]=Integra «find|grep» en KDevelop (permite búsqueda rápida en múltiples archivos usando patrones o expresiones regulares).
Comment[et]=Integreerib KDevelopi programmi "Find|grep", mis lubab mustreid või regulaaravaldisi kasutades kiiresti paljudes failides teksti otsida.
Comment[eu]="find|grep" KDevelop-en txertatzen du - fitxategi anitzetan eredu edo espresio erregularrak erabiliz bilaketa azkarrak egiteko aukera ematen du.
-Comment[fr]=Intègre le programme « grep » à KDevelop. Il permet d'effectuer des recherches rapides dans des fichiers multiples en utilisant des motifs ou des expressions rationnelles.
+Comment[fr]=Intègre « find|grep » dans KDevelop - permet d'effectuer une recherche rapide dans des fichiers multiples en utilisant des motifs ou des expressions rationnelles.
Comment[ga]=Comhtháthaíonn sé seo "find|grep" i KDevelop - ceadaíonn sé duit il-comhaid a chuardach le patrúin nó sloinn ionadaíochta.
Comment[hu]=A "find|grep" programok integrálása a KDevelopba - lehetővé teszi szövegek fájlokban való gyors keresését minták és reguláris kifejezések felhasználásával
Comment[it]=Integra "find|grep" in KDevelop - permette la ricerca rapida di file multipli utilizzando motivi o espressioni regolari.
@@ -45,7 +45,7 @@
GenericName[es]=Interfaz para Grep
GenericName[et]=Programmi grep kasutajaliides
GenericName[eu]=Grep interfazea
-GenericName[fr]=Interface pour grep
+GenericName[fr]=Interface pour Ggrep
GenericName[ga]=Comhéadan Grep
GenericName[hu]=Grafikus felület a Grep-hez
GenericName[it]=Interfaccia a "grep"
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/plugins/qtdesigner/kdevqtdesigner.desktop new/kdevelop/plugins/qtdesigner/kdevqtdesigner.desktop
--- old/kdevelop/plugins/qtdesigner/kdevqtdesigner.desktop 2007-11-02 08:38:07.000000000 +0100
+++ new/kdevelop/plugins/qtdesigner/kdevqtdesigner.desktop 2007-11-23 08:40:13.000000000 +0100
@@ -6,6 +6,7 @@
Comment[de]=Oberflächengenerator von KDevelop, auf QT Designer basierend
Comment[el]=Κατασκευή GUI με βάση το σχεδιαστή Qt του KDevelop
Comment[es]=Constructor de interfaces de KDevelop basado en el Diseñador Qt
+Comment[fr]=Constructeur d'interfaces graphiques KDevelop basé sur Qt Designer
Comment[ga]=Tógálaí Comhéadan Grafach le haghaidh KDevelop, bunaithe ar Qt Designer
Comment[gl]=Construtor de GUIs de KDevelop baseado no Qt Designer
Comment[it]=Compilatore GUI di KDevelop basato su Designer di Qt
@@ -24,6 +25,7 @@
Name[el]=Υποστήριξη σχεδιαστή Qt
Name[es]=Soporte del Diseñador Qt
Name[fa]=پشتیبانی طراح Qt
+Name[fr]=Prise en charge de Qt Designer
Name[ga]=Tacaíocht do Qt Designer
Name[gl]=Soporte de Qt Designer
Name[it]=Supporto Designer Qt
@@ -42,6 +44,7 @@
GenericName[el]=Υποστήριξη σχεδιαστή Qt του KDevelop
GenericName[es]=Soporte del Diseñador Qt de KDevelop
GenericName[fa]=پشتیبانی طراح Qt KDevelop
+GenericName[fr]=Prise en charge de Qt Designer pour KDevelop
GenericName[ga]=Tacaíocht Qt Designer le haghaidh KDevelop
GenericName[gl]=Soporte de Qt Designer para KDevelop
GenericName[it]=Supporto Designer Qt di KDevelop
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/plugins/valgrind/kdevvalgrind.desktop new/kdevelop/plugins/valgrind/kdevvalgrind.desktop
--- old/kdevelop/plugins/valgrind/kdevvalgrind.desktop 2007-11-02 08:38:07.000000000 +0100
+++ new/kdevelop/plugins/valgrind/kdevvalgrind.desktop 2007-11-23 08:40:13.000000000 +0100
@@ -7,6 +7,7 @@
Comment[el]=Το Valgrind είναι ένα εργαλείο που βοηθά στην εύρεση προβλημάτων διαχείρισης μνήμης στα προγράμματα. http://www.valgrind.org/
Comment[es]=Valgrind es una herramienta que le ayuda a encontrar problemas de gestión de memoria en los programas. http://www.valgrind.org/
Comment[fa]=Valgrind ابزاری است که به شما کمک میکند تا مسائل مدیریت حافظه را در برنامهها بیابید. http://www.valgrind.org/
+Comment[fr]=Valgrind est un outil qui vous aide à trouver les problèmes de gestion de la mémoire dans les programmes. http://valgrind.org/
Comment[ga]=Uirlis é Valgrind a chabhraíonn leat fadhbanna a aimsiú a bhaineann le bainisteoireacht chuimhne i do ríomhchláir. http://www.valgrind.org/
Comment[gl]=Valgrind é unha ferramenta que lle permite atopar problemas de xestión da memoria nos programas. http://www.valgrind.org/
Comment[it]=Valgrind è uno strumento che ti aiuta a trovare problemi di gestione della memoria nei programmi. http://www.valgrind.org/
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/src/kdevelop.desktop new/kdevelop/src/kdevelop.desktop
--- old/kdevelop/src/kdevelop.desktop 2007-09-21 08:27:12.000000000 +0200
+++ new/kdevelop/src/kdevelop.desktop 2007-11-23 08:40:13.000000000 +0100
@@ -7,6 +7,7 @@
X-DocPath=kdevelop/index.html
Terminal=false
Name=KDevelop 4
+Name[fr]=KDevelop 4
Name[ne]=केडीई विकास ४
Name[x-test]=xxKDevelop 4xx
GenericName=IDE
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/src/kdevelopui.rc new/kdevelop/src/kdevelopui.rc
--- old/kdevelop/src/kdevelopui.rc 2007-11-15 13:25:51.000000000 +0100
+++ new/kdevelop/src/kdevelopui.rc 2007-11-22 02:45:38.000000000 +0100
@@ -1,5 +1,5 @@
<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
-<kpartgui version="42" name="kdevelop" >
+<kpartgui version="44" name="kdevelop" >
<MenuBar>
<Menu name="file"><text>&File</text>
<Action name="file_new"/>
@@ -117,6 +117,9 @@
<Action name="hide_all_docks"/>
<Action name="anchor_current_dock"/>
<Action name="maximize_current_dock"/>
+ <Action name="select_next_dock"/>
+ <Action name="select_previous_dock"/>
+ <Action name="docks_submenu"/>
<Separator/>
<Merge/>
</Menu>
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/kdevelop/src/x-kdevelop.desktop new/kdevelop/src/x-kdevelop.desktop
--- old/kdevelop/src/x-kdevelop.desktop 2007-11-02 08:38:07.000000000 +0100
+++ new/kdevelop/src/x-kdevelop.desktop 2007-11-23 08:40:13.000000000 +0100
@@ -5,6 +5,7 @@
Comment[el]=Αρχείο έργου KDevelop 4
Comment[es]=Archivo de proyecto de KDevelop 4
Comment[fa]=پروندۀ پروژۀ KDevelop 4
+Comment[fr]=Fichier projet KDevelop 4
Comment[ga]=Comhad Tionscadail KDevelop 4
Comment[gl]=Ficheiro de proxecto de KDevelop 4
Comment[it]=File di progetto per KDevelop 4
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org