Ejemplo n.º 1
0
        private void DoAutocomplete(AutocompleteItem item, Range fragment)
        {
            string newText = item.GetTextForReplace();

            //replace text of fragment
            var tb = fragment.tb;

            // < By WendyH ---------------------------
            if (tb.ToolTip4Function.Visible)
            {
                Menu.AfterComplete = true;
            }
            if (fragment.CharBeforeStart == '=')
            {
                newText = " " + newText;
            }
            int     iLine   = fragment.Start.iLine;
            int     iChar   = fragment.Start.iChar;
            HMSItem hmsItem = item as HMSItem;

            if ((hmsItem != null) && ((hmsItem.Kind == DefKind.Property) || (hmsItem.Kind == DefKind.Variable)) && !HMS.TypeIsClass(hmsItem.Type))
            {
                Range  fwords = fragment.GetFragmentLookedLeft();
                var    f      = new Range(tb, new Place(0, iLine), new Place(fwords.Start.iChar, iLine));
                string line   = f.Text.Trim();
                if (line.Length == 0)
                {
                    newText += (tb.Language == Language.PascalScript) ? " := " : " = ";
                }
            }

            // > By WendyH ---------------------------

            tb.BeginAutoUndo();
            tb.TextSource.Manager.ExecuteCommand(new SelectCommand(tb.TextSource));
            if (tb.Selection.ColumnSelectionMode)
            {
                var start = tb.Selection.Start;
                var end   = tb.Selection.End;
                start.iChar        = fragment.Start.iChar;
                end.iChar          = fragment.End.iChar;
                tb.Selection.Start = start;
                tb.Selection.End   = end;
            }
            else
            {
                tb.Selection.Start = fragment.Start;
                tb.Selection.End   = fragment.End;
            }
            tb.InsertText(newText);
            tb.TextSource.Manager.ExecuteCommand(new SelectCommand(tb.TextSource));
            tb.EndAutoUndo();
            tb.Focus();
        }