From 598a05e716b47f827273ecc6dcc281755a04cc14 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Wed, 2 Sep 2009 18:12:02 +0000 Subject: [PATCH] Reparse when return is pressed. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@4869 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Services/ParserService/ParserService.cs | 8 ++++++++ .../Gui/Editor/SharpDevelopTextAreaControl.cs | 18 ++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs b/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs index b05529665a..b40190b51f 100644 --- a/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs +++ b/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs @@ -366,6 +366,14 @@ namespace ICSharpCode.SharpDevelop } } + public static void StartAsyncParse(string fileName, string fileContent) + { + ThreadPool.QueueUserWorkItem( + delegate { + ParseFile(fileName, fileContent); + }); + } + public static void StartParserThread() { abortParserUpdateThread = false; diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextAreaControl.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextAreaControl.cs index d184961719..c1332944d0 100644 --- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextAreaControl.cs +++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextAreaControl.cs @@ -327,6 +327,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor if (ccBinding.HandleKeyPress(this, ch)) return false; } + if (ch == '\n') + StartDelayedReparse(); } } catch (Exception ex) { LogException(ex); @@ -336,6 +338,22 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor return false; } + bool startedDelayedReparse; + + void StartDelayedReparse() + { + if (startedDelayedReparse) + return; + startedDelayedReparse = true; + WorkbenchSingleton.SafeThreadAsyncCall( + delegate { + startedDelayedReparse = false; + if (!this.IsDisposed) { + ParserService.StartAsyncParse(this.FileName, this.Document.TextContent); + } + }); + } + public void StartCtrlSpaceCompletion() { foreach (ICodeCompletionBinding ccBinding in CodeCompletionBindings) {