Ejemplo n.º 1
0
STDMETHODIMP Language::GetSource(IVsTextBuffer* pBuffer, ISparkSource** ppSource)
{
	HRESULT hr = S_OK;

	CComCritSecLock<CComCriticalSection> lock(_sourcesLock);

	CComPtr<IUnknown> key;
	_HR(pBuffer->QueryInterface(&key));

	int index = _sources.FindKey(key);

	if (index == -1)
	{
		CComPtr<ISparkSource> source;
		
		SourceInit init = {_site};
		_HR(pBuffer->QueryInterface(&init._primaryBuffer));
		_HR(Source::CreateInstance(init, &source));
		
		_HR(_supervisor->OnSourceAssociated(source));

		_HR(source->QueryInterface(ppSource));

		if (SUCCEEDED(hr))
			_sources.Add(key.Detach(), source.Detach());
	}
	else
	{
		_sources.GetValueAt(index)->QueryInterface(ppSource);
	}
	return hr;
}
Ejemplo n.º 2
0
STDMETHODIMP Language::GetColorizer( 
    /* [in] */ __RPC__in_opt IVsTextLines *pBuffer,
    /* [out] */ __RPC__deref_out_opt IVsColorizer **ppColorizer)
{
	HRESULT hr = S_OK;

	CComPtr<IVsProvideColorableItems> csharpItems;
	_HR(_site->QueryService(__uuidof(CSharp), &csharpItems));
	int csharpItemCount;
	_HR(csharpItems->GetItemCount(&csharpItemCount));

	ColorizerInit init = {this, pBuffer, csharpItemCount};
	_HR(Colorizer::CreateInstance(init, ppColorizer));
	return hr;
}
Ejemplo n.º 3
0
Archivo: main.cpp Proyecto: zzlee/zzlab
	void _WIN(BOOL x, const char *filename, int line)
	{
		if (!x)
		{
			_HR(HRESULT_FROM_WIN32(GetLastError()), filename, line);
		}
	}
Ejemplo n.º 4
0
STDMETHODIMP Language::GetItemCount( 
    /* [out] */ __RPC__out int *piCount)
{
	HRESULT hr = S_OK;

	CComPtr<IVsProvideColorableItems> csharpItems;
	_HR(_site->QueryService(__uuidof(CSharp), &csharpItems));
	int csharpItemCount;
	_HR(csharpItems->GetItemCount(&csharpItemCount));

	CComPtr<IVsProvideColorableItems> sparkItems;
	_HR(_supervisor->QueryInterface(&sparkItems));
	int sparkItemCount;
	_HR(sparkItems->GetItemCount(&sparkItemCount));
	
	*piCount = csharpItemCount + sparkItemCount;
	return hr;
}
Ejemplo n.º 5
0
STDMETHODIMP Language::GetCodeWindowManager( 
    /* [in] */ __RPC__in_opt IVsCodeWindow *pCodeWin,
    /* [out] */ __RPC__deref_out_opt IVsCodeWindowManager **ppCodeWinMgr)
{
	HRESULT hr = S_OK;
	CodeWindowManagerInit init = {this, pCodeWin};
	_HR(CodeWindowManager::CreateInstance(init, ppCodeWinMgr));
	return hr;
}
Ejemplo n.º 6
0
extern "C" __declspec(dllexport) HRESULT __stdcall BindApplicationMain(ApplicationMainInfo* pInfo)
{
    HRESULT hr = S_OK;

    // LOCK g_
    IKatanaManagerPtr katanaManager = g_katanaManager;

    _HR(katanaManager->BindApplicationMain(pInfo));
    return hr;
}
Ejemplo n.º 7
0
STDMETHODIMP CodeWindowManager::OnNewView(IVsTextView *pView)
{
	HRESULT hr = S_OK;

	CComPtr<IUnknown> filter;
	TextViewFilterInit init = {_language, pView};
	_HR(TextViewFilter::CreateInstance(init, &filter));
	
	if (SUCCEEDED(hr))
	{
		CComCritSecLock<CComCriticalSection> lock(_filtersLock);
		_filters.Add(filter.Detach());
	}
	return hr;
}
Ejemplo n.º 8
0
STDMETHODIMP Language::GetColorableItem( 
    /* [in] */ int iIndex,
    /* [out] */ __RPC__deref_out_opt IVsColorableItem **ppItem)
{
	HRESULT hr = S_OK;

	// return csharp color info for lower band
	CComPtr<IVsProvideColorableItems> csharpItems;
	_HR(_site->QueryService(__uuidof(CSharp), &csharpItems));

	// default@[0] : reserved
	// csharpItemCount@[1..csharpItemCount] : contained language colors
	// sparkItemCount@[csharpItemCount+1..csharpItemCount+sparkItemCount] : spark language colors

	int csharpItemCount;
	_HR(csharpItems->GetItemCount(&csharpItemCount));

	if (SUCCEEDED(hr) && iIndex <= csharpItemCount)
	{
		_HR(csharpItems->GetColorableItem(iIndex, ppItem));
		
		CComBSTR name;
		_HR((*ppItem)->GetDisplayName(&name));

		return hr;
	}

	// return spark color info for upper band
	CComPtr<IVsProvideColorableItems> sparkItems;
	_HR(_supervisor->QueryInterface(&sparkItems));

	int sparkItemCount;
	_HR(sparkItems->GetItemCount(&sparkItemCount));

	if (SUCCEEDED(hr) && iIndex <= csharpItemCount + sparkItemCount)
	{
		_HR(sparkItems->GetColorableItem(iIndex - csharpItemCount, ppItem));

		CComBSTR name;
		_HR((*ppItem)->GetDisplayName(&name));

		return hr;
	}
	return E_INVALIDARG;
}
Ejemplo n.º 9
0
HRESULT TextViewFilter::FinalConstruct()
{
	HRESULT hr = S_OK;

	// get references to existing source, buffer coordinator, and contained language instances
	CComPtr<IVsTextLines> textLines;
	_HR(_textView->GetBuffer(&textLines));
	_HR(_language->GetSource(textLines, &_source));

	CComPtr<IVsTextBufferCoordinator> bufferCoordinator;
	_HR(_source->GetTextBufferCoordinator(&bufferCoordinator));

	CComPtr<IVsContainedLanguage> containedLanguage;
	_HR(_source->GetContainedLanguage(&containedLanguage));


	// Create intellisense host from text view's host provider
	CComPtr<IVsTextViewIntellisenseHostProvider> intellisenseHostProvider;
	_HR(_textView->QueryInterface(&intellisenseHostProvider));
	_HR(intellisenseHostProvider->CreateIntellisenseHost(bufferCoordinator, __uuidof(_intellisenseHost), (void**)&_intellisenseHost));


	// Obtain the contained text view filter and command target
	
	// to sergee еще проблема тут
	_HR(containedLanguage->GetTextViewFilter(_intellisenseHost, this, &_containedTextViewFilter));

	_HR(_containedTextViewFilter->QueryInterface(&_containedCommandTarget));

	// Wedge command target and text view filter into chain
	_HR(_textView->AddCommandFilter(_containedCommandTarget, &_nextCommandTarget));

	// Hold onto the targets that are chained after the ones we've added
	_chainCommandTarget = _nextCommandTarget;
	_chainTextViewFilter = _nextCommandTarget;
	
	CComPtr<IVsIntellisenseProjectManager> projectManager;
	_HR(_source->GetIntellisenseProjectManager(&projectManager));
	_HR(projectManager->OnEditorReady());
	_HR(projectManager->CompleteIntellisenseProjectLoad());	
	return hr;
}