Browse Source

Fixed forum-8540: code completion window opens and closes immediately when overwriting an identifier.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@3665 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 17 years ago
parent
commit
21cc29b04e
  1. 10
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpCompletionBinding.cs

10
src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpCompletionBinding.cs

@ -106,6 +106,16 @@ namespace CSharpBinding @@ -106,6 +106,16 @@ namespace CSharpBinding
}
if (char.IsLetter(ch) && CodeCompletionOptions.CompleteWhenTyping) {
if (editor.ActiveTextAreaControl.SelectionManager.HasSomethingSelected) {
// allow code completion when overwriting an identifier
cursor = editor.ActiveTextAreaControl.SelectionManager.SelectionCollection[0].Offset;
int endOffset = editor.ActiveTextAreaControl.SelectionManager.SelectionCollection[0].EndOffset;
// but block code completion when overwriting only part of an identifier
if (endOffset < editor.Document.TextLength && char.IsLetterOrDigit(editor.Document.GetCharAt(endOffset)))
return false;
editor.ActiveTextAreaControl.SelectionManager.RemoveSelectedText();
editor.ActiveTextAreaControl.Caret.Position = editor.Document.OffsetToPosition(cursor);
}
char prevChar = cursor > 1 ? editor.Document.GetCharAt(cursor - 1) : ' ';
bool afterUnderscore = prevChar == '_';
if (afterUnderscore) {

Loading…
Cancel
Save