コード例 #1
0
        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);
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
        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);
        }