/// <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(); } }
public static void GoToLineEnd(ScintillaControl sci, Boolean insertNewLine) { sci.GotoPos(sci.LineEndPosition(sci.LineFromPosition(sci.CurrentPos))); if (insertNewLine) sci.NewLine(); }
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(); }
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; }
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; }
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; }
/// <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(); }