[Libreoffice-commits] core.git: Branch 'feature/gsoc-basic-ide-completion-and-other-bits' - basic/source include/basic

Gergo Mocsi gmocsi91 at gmail.com
Sun Sep 15 17:22:52 PDT 2013


 basic/source/classes/codecompletecache.cxx |   17 +++++++++++++++++
 basic/source/classes/sbxmod.cxx            |    4 ++--
 basic/source/comp/dim.cxx                  |    6 ++++--
 include/basic/codecompletecache.hxx        |    2 ++
 4 files changed, 25 insertions(+), 4 deletions(-)

New commits:
commit 9dfcb24d5ec5d38d2362297d62dec46ae02d2359
Author: Gergo Mocsi <gmocsi91 at gmail.com>
Date:   Fri Sep 13 18:02:09 2013 +0200

    GSOC work, shorthand fot "com.sun.star"
    
    I've applied a shorthand for "com.sun.star" when using the extended types:
    - css.XSomething ("css" == "com.sun.star" )
    - or simply leave it out (like ui.dialogs.XFilePicker instead of com.sun.star.ui.dialogs.XFilePicker)
    The function which does the substitution is called: CodeCompleteOptions::AddUnoPrefix().
    
    Change-Id: Ib0b9970d9d36237aa81123a82ad0c04c0af91a03

diff --git a/basic/source/classes/codecompletecache.cxx b/basic/source/classes/codecompletecache.cxx
index aad0e4f..71de600 100644
--- a/basic/source/classes/codecompletecache.cxx
+++ b/basic/source/classes/codecompletecache.cxx
@@ -97,6 +97,23 @@ void CodeCompleteOptions::SetAutoCorrectOn( const bool& b )
     theCodeCompleteOptions::get().bIsAutoCorrectOn = b;
 }
 
+OUString CodeCompleteOptions::AddUnoPrefix( const OUString& sTypeName )
+{
+    OUString sNewTypeName = sTypeName;
+    if( sNewTypeName.toAsciiLowerCase().startsWith("css.") )
+    {//enables shorthand "css" instead of "com.sun.star"
+        sNewTypeName = sNewTypeName.replaceFirst("css","com.sun.star");
+    }
+    else
+    {
+        if( !sNewTypeName.toAsciiLowerCase().startsWith("com.sun.star.") )
+        {//if "com.sun.star" left out, add it
+            sNewTypeName = OUString("com.sun.star.") + sTypeName;
+        }
+    }
+    return sNewTypeName;
+}
+
 std::ostream& operator<< (std::ostream& aStream, const CodeCompleteDataCache& aCache)
 {
     aStream << "Global variables" << std::endl;
diff --git a/basic/source/classes/sbxmod.cxx b/basic/source/classes/sbxmod.cxx
index 567d26f..d62b400 100644
--- a/basic/source/classes/sbxmod.cxx
+++ b/basic/source/classes/sbxmod.cxx
@@ -1796,7 +1796,7 @@ void SbModule::GetCodeCompleteDataFromParse(CodeCompleteDataCache& aCache)
         SbiSymDef* pSymDef = pPool->Get(i);
         //std::cerr << "i: " << i << ", type: " << pSymDef->GetType() << "; name:" << pSymDef->GetName() << std::endl;
         if( (pSymDef->GetType() != SbxEMPTY) || (pSymDef->GetType() != SbxNULL) )
-            aCache.InsertGlobalVar( pSymDef->GetName(), pParser->aGblStrings.Find(pSymDef->GetTypeId()) );
+            aCache.InsertGlobalVar( pSymDef->GetName(), CodeCompleteOptions::AddUnoPrefix(pParser->aGblStrings.Find(pSymDef->GetTypeId())) );
 
         SbiSymPool& pChildPool = pSymDef->GetPool();
         for(sal_uInt16 j = 0; j < pChildPool.GetSize(); ++j )
@@ -1804,7 +1804,7 @@ void SbModule::GetCodeCompleteDataFromParse(CodeCompleteDataCache& aCache)
             SbiSymDef* pChildSymDef = pChildPool.Get(j);
             //std::cerr << "j: " << j << ", type: " << pChildSymDef->GetType() << "; name:" << pChildSymDef->GetName() << std::endl;
             if( (pChildSymDef->GetType() != SbxEMPTY) || (pChildSymDef->GetType() != SbxNULL) )
-                aCache.InsertLocalVar( pSymDef->GetName(), pChildSymDef->GetName(), pParser->aGblStrings.Find(pChildSymDef->GetTypeId()) );
+                aCache.InsertLocalVar( pSymDef->GetName(), pChildSymDef->GetName(), CodeCompleteOptions::AddUnoPrefix(pParser->aGblStrings.Find(pChildSymDef->GetTypeId())) );
         }
     }
     delete pParser;
diff --git a/basic/source/comp/dim.cxx b/basic/source/comp/dim.cxx
index 64d0565..c213919 100644
--- a/basic/source/comp/dim.cxx
+++ b/basic/source/comp/dim.cxx
@@ -29,6 +29,7 @@
 #include "com/sun/star/reflection/XIdlMethod.hpp"
 #include "com/sun/star/uno/Exception.hpp"
 #include <basic/codecompletecache.hxx>
+#include <iostream>
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::uno;
@@ -1333,6 +1334,7 @@ void SbiParser::DefStatic( bool bPrivate )
 
 bool SbiParser::IsUnoInterface(const OUString& sTypeName)
 {
+    OUString sNewTypeName = CodeCompleteOptions::AddUnoPrefix( sTypeName );
     try
     {
         Reference< lang::XMultiServiceFactory > xFactory( comphelper::getProcessServiceFactory(), UNO_SET_THROW );
@@ -1342,14 +1344,14 @@ bool SbiParser::IsUnoInterface(const OUString& sTypeName)
         {
             return false;
         }
-        Reference< reflection::XIdlClass > xClass = xRefl->forName(sTypeName);
+        Reference< reflection::XIdlClass > xClass = xRefl->forName(sNewTypeName);
         if( xClass != NULL )
         {
             return true;
         }
         return false;
     }
-    catch(const Exception& ex)
+    catch( const Exception& ex )
     {
         OSL_FAIL("Could not create reflection.CoreReflection.");
     }
diff --git a/include/basic/codecompletecache.hxx b/include/basic/codecompletecache.hxx
index e85b0d8..6dc389a 100644
--- a/include/basic/codecompletecache.hxx
+++ b/include/basic/codecompletecache.hxx
@@ -69,6 +69,8 @@ public:
 
     static bool IsAutoCorrectOn();
     static void SetAutoCorrectOn( const bool& b );
+
+    static OUString AddUnoPrefix( const OUString& sTypeName );
 };
 
 class BASIC_DLLPUBLIC CodeCompleteDataCache


More information about the Libreoffice-commits mailing list