示例#1
0
 public HaxeComplete(ScintillaControl sci, ASExpr expr, bool autoHide, IHaxeCompletionHandler completionHandler)
 {
     Sci      = sci;
     Expr     = expr;
     AutoHide = autoHide;
     handler  = completionHandler;
     Status   = HaxeCompleteStatus.NONE;
     FileName = PluginBase.MainForm.CurrentDocument.FileName;
 }
示例#2
0
 public HaxeComplete(ScintillaControl sci, ASExpr expr, bool autoHide, IHaxeCompletionHandler completionHandler)
 {
     Sci = sci;
     Expr = expr;
     AutoHide = autoHide;
     handler = completionHandler;
     Status = HaxeCompleteStatus.NONE;
     FileName = PluginBase.MainForm.CurrentDocument.FileName;
 }
示例#3
0
 private void StartThread <T>(HaxeCompleteResultHandler <T> callback, Func <T> resultFunc)
 {
     SaveFile();
     ThreadPool.QueueUserWorkItem(_ =>
     {
         Status = ParseLines(handler.GetCompletion(BuildHxmlArgs(), GetFileContent()));
         Notify(callback, resultFunc());
     });
 }
示例#4
0
        /* EXECUTION */

        public void GetList(HaXeCompletionResultHandler callback)
        {
            PluginBase.MainForm.CallCommand("Save", null);

            ThreadPool.QueueUserWorkItem(_ =>
            {
                Status = ParseLines(handler.GetCompletion(BuildHxmlArgs()));
                Notify(callback);
            });
        }
示例#5
0
        /* EXECUTION */

        public void GetList(HaXeCompletionResultHandler callback)
        {
            PluginBase.MainForm.CallCommand("Save", null);

            ThreadPool.QueueUserWorkItem(_ =>
            {
                Status = ParseLines(handler.GetCompletion(BuildHxmlArgs()));
                Notify(callback);
            });
        }
示例#6
0
        private void StartThread <T>(HaxeCompleteResultHandler <T> callback, Func <T> resultFunc)
        {
            PluginBase.MainForm.CallCommand("Save", null);

            ThreadPool.QueueUserWorkItem(_ =>
            {
                Status = ParseLines(handler.GetCompletion(BuildHxmlArgs()));
                Notify(callback, resultFunc());
            });
        }
示例#7
0
 public HaxeComplete(ScintillaControl sci, ASExpr expr, bool autoHide, IHaxeCompletionHandler completionHandler, HaxeCompilerService compilerService)
 {
     Sci             = sci;
     Expr            = expr;
     CurrentWord     = Sci.GetWordFromPosition(Sci.CurrentPos);
     AutoHide        = autoHide;
     handler         = completionHandler;
     CompilerService = compilerService;
     Status          = HaxeCompleteStatus.NONE;
     FileName        = PluginBase.MainForm.CurrentDocument.FileName;
 }
示例#8
0
 public HaxeComplete(ScintillaControl sci, ASExpr expr, bool autoHide, IHaxeCompletionHandler completionHandler, HaxeCompilerService compilerService, SemVer haxeVersion)
 {
     Sci              = sci;
     Expr             = expr;
     CurrentWord      = Sci.GetWordFromPosition(Sci.CurrentPos);
     AutoHide         = autoHide;
     handler          = completionHandler;
     CompilerService  = compilerService;
     Status           = HaxeCompleteStatus.NONE;
     FileName         = sci.FileName;
     this.haxeVersion = haxeVersion;
 }
        void OnHaxeCompleteResultHandler(HaxeComplete hc, List <HaxePositionResult> result, HaxeCompleteStatus status)
        {
            var results = new FRResults();

            switch (status)
            {
            case HaxeCompleteStatus.ERROR:
                TraceManager.AddAsync(hc.Errors, -3);
                break;

            case HaxeCompleteStatus.USAGE:
                if (!IgnoreDeclarationSource)
                {
                    var sci  = ASContext.CurSciControl;
                    var path = sci.FileName;
                    if (!results.ContainsKey(path))
                    {
                        results.Add(path, new List <SearchMatch>());
                    }
                    var index     = hc.Expr.PositionExpression;
                    var line      = sci.LineFromPosition(index);
                    var lineStart = sci.PositionFromLine(line);
                    var lineEnd   = sci.LineEndPosition(line);
                    var lineText  = sci.GetLine(line);
                    var value     = hc.Expr.Value;
                    results[path].Add(new SearchMatch
                    {
                        Column    = index - lineStart,
                        Index     = index,
                        Length    = value.Length,
                        Line      = line + 1,
                        LineStart = lineStart,
                        LineEnd   = lineEnd,
                        LineText  = lineText,
                        Value     = value
                    });
                }
                foreach (var it in result)
                {
                    var path = it.Path;
                    if (!results.ContainsKey(path))
                    {
                        results.Add(path, new List <SearchMatch>());
                    }
                    var matches   = results[path];
                    var sci       = AssociatedDocumentHelper.LoadDocument(path).SciControl;
                    var line      = it.LineStart - 1;
                    var lineStart = sci.PositionFromLine(line);
                    var lineEnd   = sci.LineEndPosition(line);
                    var lineText  = sci.GetLine(line);
                    var value     = lineText.Substring(it.CharacterStart, it.CharacterEnd - it.CharacterStart);
                    matches.Add(new SearchMatch
                    {
                        Column    = it.CharacterStart,
                        Index     = lineStart + it.CharacterStart,
                        Length    = value.Length,
                        Line      = line + 1,
                        LineStart = lineStart,
                        LineEnd   = lineEnd,
                        LineText  = lineText,
                        Value     = value
                    });
                }
                break;
            }
            FindFinished(results);
        }
示例#10
0
        private void HandlePositionResult(HaxeComplete hc, HaxePositionResult result, HaxeCompleteStatus status)
        {
            switch (status)
            {
                case HaxeCompleteStatus.ERROR:
                    TraceManager.Add(hc.Errors, -3);
                    break;

                case HaxeCompleteStatus.POSITION:
                    if (result == null) return;

                    ASComplete.SaveLastLookupPosition(hc.Sci);

                    PluginBase.MainForm.OpenEditableDocument(result.Path, false);
                    const string keywords = "(function|var|[,(])";

                    ASComplete.LocateMember(keywords, hc.CurrentWord, result.LineStart - 1);
                    break;
            }
        }
示例#11
0
 internal void OnPositionResult(HaxeComplete hc, HaxePositionResult result, HaxeCompleteStatus status)
 {
     if (hc.Sci.InvokeRequired)
     {
         hc.Sci.BeginInvoke((MethodInvoker)delegate
         {
             HandlePositionResult(hc, result, status);
         });
     }
     else HandlePositionResult(hc, result, status);
 }
示例#12
0
        internal void OnFunctionCompletionResult(HaxeComplete hc, HaxeCompleteResult result, HaxeCompleteStatus status)
        {
            resolvingFunction = false;

            switch (status)
            {
                case HaxeCompleteStatus.ERROR:
                    TraceManager.AddAsync(hc.Errors, -3);
                    break;

                case HaxeCompleteStatus.TYPE:
                    hc.Expr.Position--;
                    ASComplete.FunctionContextResolved(hc.Sci, hc.Expr, result.Type, null, true);
                    break;
            }
        }
示例#13
0
        internal void OnDotCompletionResult(HaxeComplete hc,  HaxeCompleteResult result, HaxeCompleteStatus status)
        {
            resolvingDot = false;

            switch (status)
            {
                case HaxeCompleteStatus.ERROR:
                    TraceManager.AddAsync(hc.Errors, -3);
                    break;

                case HaxeCompleteStatus.MEMBERS:
                    if (result.Members != null && result.Members.Count > 0)
                        ASComplete.DotContextResolved(hc.Sci, hc.Expr, result.Members, hc.AutoHide);
                    break;

                case HaxeCompleteStatus.TYPE:
                    // eg. Int
                    break;
            }
        }
示例#14
0
        internal void OnCheckSyntaxResult(HaxeComplete hc, HaxeCompleteResult result, HaxeCompleteStatus status)
        {
            switch (status)
            {
                case HaxeCompleteStatus.ERROR:
                    TraceManager.Add(hc.Errors);
                    EventManager.DispatchEvent(this, new TextEvent(EventType.ProcessEnd, "Done(1)"));
                    break;

                default:
                    EventManager.DispatchEvent(this, new TextEvent(EventType.ProcessEnd, "Done(0)"));
                    break;
            }
        }
示例#15
0
        void AddDiagnosticsResults(List <LintingResult> list, HaxeCompleteStatus status, List <HaxeDiagnosticsResult> results, HaxeComplete hc)
        {
            if (status == HaxeCompleteStatus.DIAGNOSTICS && results != null)
            {
                foreach (var res in results)
                {
                    var range = res.Range ?? res.Args.Range;

                    var result = new LintingResult
                    {
                        File      = range.Path,
                        FirstChar = range.CharacterStart,
                        Length    = range.CharacterEnd - range.CharacterStart,
                        Line      = range.LineStart + 1,
                    };

                    switch (res.Severity)
                    {
                    case HaxeDiagnosticsSeverity.INFO:
                        result.Severity = LintingSeverity.Info;
                        break;

                    case HaxeDiagnosticsSeverity.ERROR:
                        result.Severity = LintingSeverity.Error;
                        break;

                    case HaxeDiagnosticsSeverity.WARNING:
                        result.Severity = LintingSeverity.Warning;
                        break;

                    default:
                        continue;
                    }

                    switch (res.Kind)
                    {
                    case HaxeDiagnosticsKind.UnusedImport:
                        result.Description = TextHelper.GetString("Info.UnusedImport");
                        break;

                    case HaxeDiagnosticsKind.UnresolvedIdentifier:
                        result.Description = TextHelper.GetString("Info.UnresolvedIdentifier");
                        break;

                    case HaxeDiagnosticsKind.CompilerError:
                    case HaxeDiagnosticsKind.RemovableCode:
                        result.Description = res.Args.Description;
                        break;

                    default:     //in case new kinds are added in new compiler versions
                        continue;
                    }

                    list.Add(result);
                }
            }
            else if (status == HaxeCompleteStatus.ERROR)
            {
                PluginBase.RunAsync(() =>
                {
                    TraceManager.Add(hc.Errors, (int)TraceType.Error);
                });
            }
        }