Exemple #1
0
 /// <summary>
 /// Move the document position
 /// </summary>
 private void MoveToPosition(ScintillaControl sci, Int32 position)
 {
     try
     {
         position = sci.MBSafePosition(position); // scintilla indexes are in 8bits
         Int32 line = sci.LineFromPosition(position);
         sci.EnsureVisible(line);
         sci.GotoPos(position);
         sci.SetSel(position, sci.LineEndPosition(line));
         sci.Focus();
     }
     catch 
     {
         String message = TextHelper.GetString("Info.InvalidItem");
         ErrorManager.ShowInfo(message);
         this.RemoveInvalidItems();
         this.RefreshProject();
     }
 }
Exemple #2
0
        public static void GoToLineEnd(ScintillaControl sci, Boolean insertNewLine)
        {
            sci.GotoPos(sci.LineEndPosition(sci.LineFromPosition(sci.CurrentPos)));

            if (insertNewLine) sci.NewLine();
        }
Exemple #3
0
        public static void SetCaretReadyToTrace(ScintillaControl sci, Boolean insertNewLine)
        {
            GoToLineEnd(sci, false);
            if (NextNonWhiteCharIsOpenBrace(sci, sci.CurrentPos))
                sci.GotoPos(sci.PositionAfter(NextCharPosition(sci, sci.CurrentPos, "{")));

            if (insertNewLine) sci.NewLine();
        }
Exemple #4
0
 public static String GetText(ScintillaControl sci, Int32 startPosition, Int32 endPosition)
 {
     Int32 curPos = sci.CurrentPos;
     Int32 selStart = sci.SelectionStart;
     Int32 selEnd = sci.SelectionEnd;
     Int32 firstLine = sci.FirstVisibleLine;
     sci.SetSel(startPosition, endPosition);
     String text = sci.SelText;
     sci.GotoPos(curPos);
     sci.SetSel(selStart, selEnd);
     Int32 actualFirstLine = sci.FirstVisibleLine;
     if (actualFirstLine != firstLine)
     {
         sci.LineScroll(0, firstLine - actualFirstLine);
     }
     return text;
 }
Exemple #5
0
 public static Int32 NextCharPosition(ScintillaControl sci, Int32 position, String c)
 {
     Int32 curPos = sci.CurrentPos;
     sci.GotoPos(position);
     char currentChar = (char)sci.CharAt(sci.CurrentPos);
     if (currentChar.ToString().Equals(c)) sci.CharRight();
     sci.SearchAnchor();
     Int32 next = sci.SearchNext(0, c);
     sci.GotoPos(curPos);
     return next;
 }
Exemple #6
0
        void CompletionList_OnInsert(ScintillaControl sender, int position, string text, char trigger, ICompletionListItem item)
        {
            if (trigger == '(' || trigger == '.') return;
            if (!(item is MemberItem)) return; // Generate Event
              //      if (item is EventItem) return;
             currentData = (DataEvent)currentNotifyEvent;
             Hashtable table = currentData.Data as Hashtable;
             if (table==null) return;

            ASResult res = (table)["context"] as ASResult;

            if (res == null) return;

            MemberModel member = res.Member;
            int posAdd = 0;

                    if (member != null)
                    {
                        if ((member.Flags & FlagType.Function) == 0) { return; }

                            int pos = sender.CurrentPos;
                            int insertPos = pos;
                            if (((member.Flags & FlagType.Constructor) > 0))
                            {

                                if (!thereIsNewWord(sender))
                                {
                                    sender.GotoPos(pos);
                                    return;
                                }
                            }

                          //  sender.ReplaceSel
                                bool hasParameters = false;

                                char lastChar=' ';
                                posAdd = SearchNextNewLineWithoutChar(sender, position, text, ref lastChar);

                                if (lastChar == '(')
                                {
                                    return;
                                }

                            // Search if is a parameter of a function
                                if (lastChar == ',' || lastChar == ')')
                                {
                                    if (IsFunctionParameter(sender, position - 1))
                                    {
                                        return;
                                    };
                                }

                                sender.BeginUndoAction();

                                if (posAdd > 0)
                                {
                                    sender.InsertText(pos, "();");
                                    posAdd = 1;

                                }
                                else
                                    sender.InsertText(pos, "()");

                                pos++;

                                if (!(trigger == '[' || trigger == '"'))
                                {
                                    if (member.Parameters != null)
                                    {
                                        if (member.Parameters.Count == 0)
                                        {
                                            pos += 1 + posAdd;

                                        }
                                        else
                                        {
                                            hasParameters = true;
                                        }

                                    }
                                    else
                                    {
                                        pos += 1 + posAdd;
                                    }

                                }

                                sender.GotoPos(pos);

                                if (hasParameters)
                                {
                                    if (abbreviations != null &&  member.Parameters[0].Value == null && member.Parameters[0].Name != "...rest")
                                    {

                                       // string str = res.Member.ToString();
                                        TextParameters tp = new TextParameters(res.Member);

                                        if (member.Name.EndsWith("EventListener"))
                                        {
                                            if (text.EndsWith("Event"))
                                            {
                                                sender.GotoPos(insertPos+2);
                                                sender.DeleteBack();
                                                sender.DeleteBack();
                                                sender.EndUndoAction();
                                                return;
                                            }
                                            abbreviations.CreateParameters(member.Parameters, true,tp);

                                        }
                                        else
                                            abbreviations.CreateParameters(member.Parameters, false,tp);

                                        sender.EndUndoAction();
                                        return;
                                    }

                                    ASComplete.HandleFunctionCompletion(sender, true);
                                }

                                sender.EndUndoAction();

                    }
                    else if (res.Type != null)
                    {

                        int pos2 = sender.CurrentPos;

                        bool hasParameters = false;
                        MemberModel mlConstructor = null;

                        if (!thereIsNewWord(sender)) { sender.GotoPos(pos2); return; }

                            char lastChar=' ';
                            posAdd = SearchNextNewLineWithoutChar(sender, pos2, "",ref lastChar);

                            if (lastChar == '(') { sender.GotoPos(pos2); return; }

                            if (res.Type.Members.Count > 0)
                            {

                                foreach (MemberModel ml in res.Type.Members)
                                {
                                    if ((ml.Flags & FlagType.Constructor)>0)
                                    {
                                        if (ml.Parameters!=null && ml.Parameters.Count > 0)
                                        {
                                            mlConstructor = ml;
                                            hasParameters = true;
                                        }
                                        break;
                                    }
                                }

                            }

                            if(posAdd>0)
                                sender.InsertText(pos2, "();");
                            else
                            sender.InsertText(pos2, "()");

                            if (trigger == '[' || trigger == '"' || hasParameters)
                              pos2++;
                            else
                            pos2 += 2 + posAdd;

                        sender.GotoPos(pos2);
                        if (hasParameters)
                        {
                            sender.BeginUndoAction();
                            if (abbreviations != null && mlConstructor.Parameters[0].Value == null && mlConstructor.Parameters[0].Name != "...rest")
                            {
                                TextParameters tp = new TextParameters(mlConstructor);

                               abbreviations.CreateParameters(mlConstructor.Parameters, false, tp);
                            }
                            else
                                ASComplete.HandleFunctionCompletion(sender, true);
                            sender.EndUndoAction();
                        }

                    }
        }
        private bool ProcessAbbrevation(ScintillaControl sci)
        {
            //if (_settings.abbrevationDictList == null)
            //{
            //    System.Windows.Forms.MessageBox.Show("Insert abbreviations before!!");
            //    return false;
            //}

            int start =0;
            int end = 0;

            string left = GetWordFromPosition(sci, ref start, ref end);

            if (left != null)
            {
                String ext = System.IO.Path.GetExtension(ASContext.Context.CurrentFile).ToLower(); ;
               dictAbbreviations = null;

                if (!settings.abbrevationDictList.TryGetValue(ext, out dictAbbreviations))
                {
                    dictAbbreviations = settings.abbrevationDictList[".other"];
                }

                AbbrevationSnippet abbrevationSnippet;
                if (dictAbbreviations.TryGetValue(left , out abbrevationSnippet))
                {

                    sci.GotoPos(start);
                    sci.BeginUndoAction();

                    CreateWords cwNew;
                    // c'è una abbreviazione lo creo

                    if (currentCreateWords != null)
                        cw_MonitorOnWordsDeactive(currentCreateWords);

                    cwNew = CreateNewWords();

                    string elaborateText = cwNew.MakeTextFromSnippet(sci, abbrevationSnippet);

                    sci.SetSel(start, end);
                    sci.ReplaceSel(elaborateText);

                    if (abbrevationSnippet.Arguments == null)
                    {
                        cwNew.MonitorOnWordsActive -= new OnMonitorActiveEventHanlder(cw_MonitorOnWordsActive);
                        cwNew.MonitorOnWordsDeactive -= new OnMonitorActiveEventHanlder(cw_MonitorOnWordsDeactive);
                        sci.EndUndoAction();
                        return true;
                    }

                    DoBeforeMonitor();
                    // nessuna activazione quindi nessun monitor
                    if (!currentCreateWords.TryActivateMonitor())
                    {
                        cwNew.MonitorOnWordsActive -= new OnMonitorActiveEventHanlder(cw_MonitorOnWordsActive);
                        cwNew.MonitorOnWordsDeactive -= new OnMonitorActiveEventHanlder(cw_MonitorOnWordsDeactive);
                    }
                    else
                    {
                        currentCreateWords = cwNew;
                    }

                    sci.EndUndoAction();

                    return true;
                }

            }

            //non ha trovato nessuna parola

            if (isCursor)
            {
                isCursor = false;
                ShowListAbbrevations();
                return false;
            }

            if (MonitorWordsActive && currentSci.Focused)
                currentCreateWords.MoveNextWord();
            else
                ShowListAbbrevations();

            return false;
        }
Exemple #8
0
 /// <summary>
 /// Move the document position
 /// </summary>
 /// <param name="sci"></param>
 /// <param name="position"></param>
 private void MoveToPosition( ScintillaControl sci, int position )
 {
     int line = sci.LineFromPosition(position);
     sci.EnsureVisible( line );
     sci.GotoPos(position);
     sci.SetSel(position, sci.LineEndPosition(line));
     sci.Focus();
 }