void ClangPlugin::OnEditorHook(cbEditor* ed, wxScintillaEvent& event) { event.Skip(); if (!IsProviderFor(ed)) return; cbStyledTextCtrl* stc = ed->GetControl(); if (event.GetEventType() == wxEVT_SCI_MODIFIED) { if (event.GetModificationType() & (wxSCI_MOD_INSERTTEXT | wxSCI_MOD_DELETETEXT)) { const int pos = stc->GetCurrentPos(); const int line = stc->LineFromPosition(pos); if ( (m_LastModifyLine != -1)&&(line != m_LastModifyLine) ) { RequestReparse(); } m_LastModifyLine = line; } } else if (event.GetEventType() == wxEVT_SCI_CHANGE) { //fprintf(stdout,"wxEVT_SCI_CHANGE\n"); } }
void ClangPlugin::OnTimer(wxTimerEvent& event) { cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinActiveEditor(); if ( (!ed) || (m_TranslUnitId == wxNOT_FOUND) ) return; const int evId = event.GetId(); if ( evId == idReparseTimer ) { RequestReparse( m_TranslUnitId, ed->GetFilename() ); } }
void ClangPlugin::OnProjectFileChanged(CodeBlocksEvent& event) { #ifdef CLANGPLUGIN_TRACE_FUNCTIONS fprintf(stdout,"%s\n", __PRETTY_FUNCTION__); #endif event.Skip(); if (IsAttached()) { RequestReparse(); } }
void ClangPlugin::OnProjectOptionsChanged(CodeBlocksEvent& event) { event.Skip(); cbEditor* ed = Manager::Get()->GetEditorManager()->GetBuiltinEditor(event.GetEditor()); if (ed) { int compileCommandChanged = UpdateCompileCommand(ed); if (compileCommandChanged) { std::cout<<"OnProjectOptionsChanged: Calling reparse (compile command changed)"<<std::endl; RequestReparse(); } } }
void ClangCodeCompletion::OnEditorHook(cbEditor* ed, wxScintillaEvent& event) { event.Skip(); bool clearIndicator = false; bool reparse = false; //if (!m_pClangPlugin->IsProviderFor(ed)) // return; cbStyledTextCtrl* stc = ed->GetControl(); if (event.GetEventType() == wxEVT_SCI_MODIFIED) { m_ReparseTimer.Stop(); if (event.GetModificationType() & (wxSCI_MOD_INSERTTEXT | wxSCI_MOD_DELETETEXT)) { reparse = true; clearIndicator = true; } } else if (event.GetEventType() == wxEVT_SCI_UPDATEUI) { //fprintf(stdout,"wxEVT_SCI_UPDATEUI\n"); if (event.GetUpdated() & wxSCI_UPDATE_SELECTION) { m_HightlightTimer.Stop(); m_HightlightTimer.Start(HIGHTLIGHT_DELAY, wxTIMER_ONE_SHOT); } clearIndicator = true; } else if (event.GetEventType() == wxEVT_SCI_CHANGE) { //fprintf(stdout,"wxEVT_SCI_CHANGE\n"); } if (clearIndicator) { const int theIndicator = 16; stc->SetIndicatorCurrent(theIndicator); stc->IndicatorClearRange(0, stc->GetLength()); } if (reparse) { RequestReparse(); } }