Beispiel #1
0
        private static RazorCodeAction CreateFQNCodeAction(
            RazorCodeActionContext context,
            Diagnostic fqnDiagnostic,
            RazorCodeAction codeAction,
            string fullyQualifiedName)
        {
            var codeDocumentIdentifier = new VersionedTextDocumentIdentifier()
            {
                Uri = context.Request.TextDocument.Uri
            };

            var fqnTextEdit = new TextEdit()
            {
                NewText = fullyQualifiedName,
                Range   = fqnDiagnostic.Range
            };

            var fqnWorkspaceEditDocumentChange = new WorkspaceEditDocumentChange(new TextDocumentEdit()
            {
                TextDocument = codeDocumentIdentifier,
                Edits        = new[] { fqnTextEdit },
            });

            var fqnWorkspaceEdit = new WorkspaceEdit()
            {
                DocumentChanges = new[] { fqnWorkspaceEditDocumentChange }
            };

            return(new RazorCodeAction()
            {
                Title = codeAction.Title,
                Edit = fqnWorkspaceEdit
            });
        }
Beispiel #2
0
        public override async Task <WorkspaceEdit> Handle(RenameParams request, CancellationToken cancellationToken)
        {
            return(await Task.Run(() =>
            {
                var link = RenameInfo.GetLink(_languageServer, request.TextDocument.Uri.ToUri(), request.Position);
                if (link == null)
                {
                    return new WorkspaceEdit();
                }

                var grouped = link.Group();
                var documentChanges = new List <WorkspaceEditDocumentChange>();
                foreach (var group in grouped)
                {
                    List <TextEdit> edits = new List <TextEdit>();

                    foreach (var renameRange in group.Links)
                    {
                        edits.Add(new TextEdit()
                        {
                            NewText = request.NewName,
                            Range = renameRange
                        });
                    }

                    var document = _languageServer.DocumentHandler.TextDocumentFromUri(group.Uri)?.AsItem();

                    // document will be null if the editor doesn't have the document of the group opened.
                    if (document == null)
                    {
                        ImportedScript importedScript = _languageServer.FileGetter.GetImportedFile(group.Uri);
                        document = new TextDocumentItem()
                        {
                            Uri = group.Uri,
                            Text = importedScript.Content,
                            LanguageId = "ostw"
                        };
                    }

                    WorkspaceEditDocumentChange edit = new WorkspaceEditDocumentChange(new TextDocumentEdit()
                    {
                        Edits = edits.ToArray(),
                        TextDocument = new VersionedTextDocumentIdentifier()
                        {
                            Version = document.Version,
                            Uri = document.Uri
                        }
                    });
                    documentChanges.Add(edit);
                }

                return new WorkspaceEdit()
                {
                    DocumentChanges = documentChanges
                };
            }));
        }
        public override async Task <WorkspaceEdit> Handle(RenameParams request, CancellationToken cancellationToken)
        {
            var link = GetLink(request.TextDocument.Uri, request.Position);

            if (link == null)
            {
                return(new WorkspaceEdit());
            }

            var grouped         = link.Group();
            var documentChanges = new List <WorkspaceEditDocumentChange>();

            foreach (var group in grouped)
            {
                List <TextEdit> edits = new List <TextEdit>();

                foreach (var renameRange in group.Links)
                {
                    edits.Add(new TextEdit()
                    {
                        NewText = request.NewName,
                        Range   = renameRange.ToLsRange()
                    });
                }

                var document = _languageServer.DocumentHandler.TextDocumentFromUri(group.Uri);
                WorkspaceEditDocumentChange edit = new WorkspaceEditDocumentChange(new TextDocumentEdit()
                {
                    Edits        = edits.ToArray(),
                    TextDocument = new VersionedTextDocumentIdentifier()
                    {
                        Version = document.Version,
                        Uri     = document.Uri
                    }
                });
                documentChanges.Add(edit);
            }

            return(new WorkspaceEdit()
            {
                DocumentChanges = documentChanges
            });
        }