Files
libreoffice/basic/source/classes/codecompletecache.cxx
Gergo Mocsi 61ee2598b1 GSOC work, code complete option, menu entry fixes
Menu entry is added under View->Enable Code Completition when in Experimental mode.
Fixed the call of funtion SbModule::GetCodeCompleteDataFromParse() to be called only when code completition is enabled.
Replaced the occurences of SvtMiscOptions to CodeCompleteOptions.

Change-Id: If0520123ab5f612d7d24fb98f8e9bf6881af76cb
2013-09-02 18:16:47 +02:00

107 lines
3.6 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#include <basic/codecompletecache.hxx>
#include <iostream>
#include <rtl/instance.hxx>
const OUString CodeCompleteDataCache::GLOB_KEY = OUString("global key");
const OUString CodeCompleteDataCache::NOT_FOUND = OUString("not found");
namespace
{
class theCodeCompleteOptions: public ::rtl::Static< CodeCompleteOptions, theCodeCompleteOptions >{};
}
CodeCompleteOptions::CodeCompleteOptions()
: bIsCodeCompleteOn( false )
{
}
bool CodeCompleteOptions::IsCodeCompleteOn()
{
/*if( !theCodeCompleteOptions::get().aMiscOptions.IsExperimentalMode() )
return false;
else*/
return theCodeCompleteOptions::get().aMiscOptions.IsExperimentalMode() && theCodeCompleteOptions::get().bIsCodeCompleteOn;
}
void CodeCompleteOptions::SetCodeCompleteOn( const bool& b )
{
if( !theCodeCompleteOptions::get().aMiscOptions.IsExperimentalMode() )
theCodeCompleteOptions::get().bIsCodeCompleteOn = false;
else
theCodeCompleteOptions::get().bIsCodeCompleteOn = b;
}
bool CodeCompleteOptions::IsExtendedTypeDeclaration()
{
return CodeCompleteOptions::IsCodeCompleteOn();
}
std::ostream& operator<< (std::ostream& aStream, const CodeCompleteDataCache& aCache)
{
for( CodeCompleteVarScopes::const_iterator aIt = aCache.aVarScopes.begin(); aIt != aCache.aVarScopes.end(); ++aIt )
{
aStream << aIt->first << std::endl;
CodeCompleteVarTypes aVarTypes = aIt->second;
for( CodeCompleteVarTypes::const_iterator aOtherIt = aVarTypes.begin(); aOtherIt != aVarTypes.end(); ++aOtherIt )
{
aStream << "\t" << aOtherIt->first << "," << aOtherIt->second << std::endl;
}
}
aStream << "-----------------" << std::endl;
return aStream;
}
const CodeCompleteVarScopes& CodeCompleteDataCache::GetVars() const
{
return aVarScopes;
}
void CodeCompleteDataCache::InsertProcedure( const OUString& sProcName, const CodeCompleteVarTypes& aVarTypes )
{
aVarScopes.insert( CodeCompleteVarScopes::value_type(sProcName, aVarTypes) );
}
void CodeCompleteDataCache::SetVars( const CodeCompleteVarScopes& aScopes )
{
aVarScopes = aScopes;
}
OUString CodeCompleteDataCache::GetVariableType( const OUString& sVarName, const OUString& sProcName ) const
{
CodeCompleteVarScopes::const_iterator aIt = aVarScopes.find( sProcName );
if( aIt == aVarScopes.end() )//procedure does not exist
return CodeCompleteDataCache::NOT_FOUND;
CodeCompleteVarTypes aVarTypes = aIt->second;
CodeCompleteVarTypes::const_iterator aOtherIt = aVarTypes.find( sVarName );
if( aOtherIt == aVarTypes.end() )
return CodeCompleteDataCache::NOT_FOUND;
else
return aOtherIt->second;
}
void CodeCompleteDataCache::print() const
{
std::cerr << *this << std::endl;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */