static public bool HandleKeys(ScintillaControl sci, Keys key) { int index; switch (key) { case Keys.Back: sci.DeleteBack(); if (word.Length > 0) { word = word.Substring(0, word.Length - 1); currentPos = sci.CurrentPos; lastIndex = 0; FindWordStartingWith(word); } else { CompletionList.Hide(); } return(true); case Keys.Enter: case Keys.Tab: ReplaceText(sci); return(true); case Keys.Space: return(false); case Keys.Up: case Keys.Left: // the list was hidden and it should not appear if (!completionList.Visible) { CompletionList.Hide(); if (key == Keys.Up) { sci.LineUp(); } else { sci.CharLeft(); } return(false); } // go up the list else if (completionList.SelectedIndex > 0) { index = completionList.SelectedIndex - 1; completionList.SelectedIndex = index; } // wrap else if (wrapList) { index = completionList.Items.Count - 1; completionList.SelectedIndex = index; } break; case Keys.Down: case Keys.Right: // the list was hidden and it should not appear if (!completionList.Visible) { CompletionList.Hide(); if (key == Keys.Down) { sci.LineDown(); } else { sci.CharRight(); } return(false); } // go down the list else if (completionList.SelectedIndex < completionList.Items.Count - 1) { index = completionList.SelectedIndex + 1; completionList.SelectedIndex = index; } // wrap else if (wrapList) { index = 0; completionList.SelectedIndex = index; } break; case Keys.PageUp: // the list was hidden and it should not appear if (!completionList.Visible) { CompletionList.Hide(); sci.PageUp(); return(false); } // go up the list else if (completionList.SelectedIndex > 0) { index = completionList.SelectedIndex - completionList.Height / completionList.ItemHeight; if (index < 0) { index = 0; } completionList.SelectedIndex = index; } break; case Keys.PageDown: // the list was hidden and it should not appear if (!completionList.Visible) { CompletionList.Hide(); sci.PageDown(); return(false); } // go down the list else if (completionList.SelectedIndex < completionList.Items.Count - 1) { index = completionList.SelectedIndex + completionList.Height / completionList.ItemHeight; if (index > completionList.Items.Count - 1) { index = completionList.Items.Count - 1; } completionList.SelectedIndex = index; } break; case (Keys.Control | Keys.Space): break; default: CompletionList.Hide(); return(false); } return(true); }
/// <summary> /// /// </summary> static public bool HandleKeys(ScintillaControl sci, Keys key) { int index; switch (key) { case Keys.Back: if (!UITools.CallTip.CallTipActive) { sci.DeleteBack(); } if (word.Length > MinWordLength) { word = word.Substring(0, word.Length - 1); currentPos = sci.CurrentPos; lastIndex = 0; FindWordStartingWith(word); } else { CompletionList.Hide((char)8); } return(true); case Keys.Enter: if (noAutoInsert || !ReplaceText(sci, '\n')) { CompletionList.Hide(); return(false); } return(true); case Keys.Tab: if (!ReplaceText(sci, '\t')) { CompletionList.Hide(); return(false); } return(true); case Keys.Space: if (noAutoInsert) { CompletionList.Hide(); } return(false); case Keys.Up: noAutoInsert = false; // the list was hidden and it should not appear if (!completionList.Visible) { CompletionList.Hide(); if (key == Keys.Up) { sci.LineUp(); } else { sci.CharLeft(); } return(false); } // go up the list if (completionList.SelectedIndex > 0) { RefreshTip(); index = completionList.SelectedIndex - 1; completionList.SelectedIndex = index; } // wrap else if (PluginBase.MainForm.Settings.WrapList) { RefreshTip(); index = completionList.Items.Count - 1; completionList.SelectedIndex = index; } break; case Keys.Down: noAutoInsert = false; // the list was hidden and it should not appear if (!completionList.Visible) { CompletionList.Hide(); if (key == Keys.Down) { sci.LineDown(); } else { sci.CharRight(); } return(false); } // go down the list if (completionList.SelectedIndex < completionList.Items.Count - 1) { RefreshTip(); index = completionList.SelectedIndex + 1; completionList.SelectedIndex = index; } // wrap else if (PluginBase.MainForm.Settings.WrapList) { RefreshTip(); index = 0; completionList.SelectedIndex = index; } break; case Keys.PageUp: noAutoInsert = false; // the list was hidden and it should not appear if (!completionList.Visible) { CompletionList.Hide(); sci.PageUp(); return(false); } // go up the list if (completionList.SelectedIndex > 0) { RefreshTip(); index = completionList.SelectedIndex - completionList.Height / completionList.ItemHeight; if (index < 0) { index = 0; } completionList.SelectedIndex = index; } break; case Keys.PageDown: noAutoInsert = false; // the list was hidden and it should not appear if (!completionList.Visible) { CompletionList.Hide(); sci.PageDown(); return(false); } // go down the list if (completionList.SelectedIndex < completionList.Items.Count - 1) { RefreshTip(); index = completionList.SelectedIndex + completionList.Height / completionList.ItemHeight; if (index > completionList.Items.Count - 1) { index = completionList.Items.Count - 1; } completionList.SelectedIndex = index; } break; case (Keys.Control | Keys.Space): break; case Keys.Left: sci.CharLeft(); CompletionList.Hide(); break; case Keys.Right: sci.CharRight(); CompletionList.Hide(); break; default: CompletionList.Hide(); return(false); } return(true); }
public bool HandleKeys(ScintillaControl sci, Keys key) { switch (key) { case Keys.Multiply: case Keys.Subtract: case Keys.Divide: case Keys.Decimal: case Keys.Add: return(false); case Keys.Up: if (!CompletionList.Active) { sci.LineUp(); } return(false); case Keys.Down: if (!CompletionList.Active) { sci.LineDown(); } return(false); case Keys.Up | Keys.Shift: sci.LineUpExtend(); return(false); case Keys.Down | Keys.Shift: sci.LineDownExtend(); return(false); case Keys.Left | Keys.Shift: sci.CharLeftExtend(); return(false); case Keys.Right | Keys.Shift: sci.CharRightExtend(); return(false); case Keys.Right: if (!CompletionList.Active) { sci.CharRight(); currentPos = sci.CurrentPos; if (sci.LineFromPosition(sci.CurrentPos) != currentLine) { Hide(); } else if (OnUpdateCallTip != null) { OnUpdateCallTip(sci, currentPos); } } return(true); case Keys.Left: if (!CompletionList.Active) { sci.CharLeft(); currentPos = sci.CurrentPos; if (currentPos < startPos) { Hide(); } else { if (sci.LineFromPosition(sci.CurrentPos) != currentLine) { Hide(); } else if (OnUpdateCallTip != null) { OnUpdateCallTip(sci, currentPos); } } } return(true); case Keys.Back: sci.DeleteBack(); currentPos = sci.CurrentPos; if (currentPos + deltaPos < startPos) { Hide(); } else if (OnUpdateCallTip != null) { OnUpdateCallTip(sci, currentPos); } return(true); case Keys.Tab: case Keys.Space: return(false); default: if (!CompletionList.Active) { Hide(); } return(false); } }
static public bool HandleKeys(ScintillaControl sci, Keys key) { switch (key) { case Keys.Multiply: case Keys.Subtract: case Keys.Divide: case Keys.Decimal: case Keys.Add: return(false); case Keys.Right: sci.CharRight(); currentPos = sci.CurrentPos; if (sci.LineFromPosition(sci.CurrentPos) != currentLine) { Hide(); } else if (OnUpdateCallTip != null) { OnUpdateCallTip(sci, currentPos); } return(true); case Keys.Left: sci.CharLeft(); currentPos = sci.CurrentPos; if (currentPos < startPos) { Hide(); } else { if (sci.LineFromPosition(sci.CurrentPos) != currentLine) { Hide(); } else if (OnUpdateCallTip != null) { OnUpdateCallTip(sci, currentPos); } } return(true); case Keys.Back: sci.DeleteBack(); currentPos = sci.CurrentPos; if (currentPos < startPos) { Hide(); } else if (OnUpdateCallTip != null) { OnUpdateCallTip(sci, currentPos); } return(true); case Keys.Tab: case Keys.Space: return(false); default: InfoTip.Hide(); return(false); } }
internal void OnCharAdded(ScintillaControl sci, int position, int value) { if (!enabled) { return; } bool autoInsert = false; char c = (char)value; if (wordChars.IndexOf(c) < 0) { if (c == ':') { if (lastColonInsert == position - 1) { sci.DeleteBack(); lastColonInsert = -1; return; } } else if (c == ';') { char c2 = (char)sci.CharAt(position); if (c2 == ';') { sci.DeleteBack(); sci.SetSel(position, position); return; } } else if (c == '\n' && !settings.DisableAutoCloseBraces) { int line = sci.LineFromPosition(position); string text = sci.GetLine(line - 1).TrimEnd(); if (text.EndsWith('{')) { AutoCloseBrace(sci, line); } } else if (c == '\t') // TODO get tab notification! { position--; autoInsert = true; } else { return; } } var context = GetContext(sci, position); var mode = CompleteMode.None; if (context.InComments) { return; } else if (context.InBlock) { if (context.Word == "-") { mode = CompleteMode.Prefix; } else if (context.Word.Length >= 2 || (char)value == '-') { mode = CompleteMode.Attribute; } } else if (context.InValue) { if (features.Mode != "CSS" && c == features.Trigger) { context.Word = context.Word.Substring(1); context.Position++; mode = CompleteMode.Variable; } else if (context.Word.Length == 1 && "abcdefghijklmnopqrstuvwxyz".IndexOf(context.Word[0]) >= 0) { mode = CompleteMode.Value; } } else if (c == ':' && !context.IsVar) { mode = CompleteMode.Pseudo; } HandleCompletion(mode, context, autoInsert, true); }