Esempio n. 1
0
        private async Task<RenameResponse> SendRequest(OmnisharpWorkspace workspace,
                                                       string renameTo,
                                                       string filename,
                                                       string fileContent,
                                                       bool wantsTextChanges = false,
                                                       bool applyTextChanges = true)
        {
            var lineColumn = TestHelpers.GetLineAndColumnFromDollar(fileContent);
            var controller = new OmnisharpController(workspace, new FakeOmniSharpOptions());
            var request = new RenameRequest
            {
                Line = lineColumn.Line,
                Column = lineColumn.Column,
                RenameTo = renameTo,
                FileName = filename,
                Buffer = fileContent.Replace("$", ""),
                WantsTextChanges = wantsTextChanges,
                ApplyTextChanges = applyTextChanges
            };

            var bufferFilter = new UpdateBufferFilter(workspace);
            bufferFilter.OnActionExecuting(TestHelpers.CreateActionExecutingContext(request, controller));

            return await controller.Rename(request);
        }
        public void UpdateBufferFindsProjectBasedOnNearestPath()
        {
            var workspace = new OmnisharpWorkspace();


            TestHelpers.AddProjectToWorkspace(workspace, Path.Combine("src", "root", "foo.csproj"),
                new[] { "" },
                new Dictionary<string, string>() { { Path.Combine("src", "root", "foo.cs"), "class C1 {}" } });

            TestHelpers.AddProjectToWorkspace(workspace, Path.Combine("src", "root", "foo", "bar", "insane.csproj"),
                new[] { "" },
                new Dictionary<string, string>() { { Path.Combine("src", "root", "foo", "bar", "nested", "code.cs"), "class C2 {}" } });

            workspace.BufferManager.UpdateBuffer(new Request() { FileName = Path.Combine("src", "root", "bar.cs"), Buffer = "enum E {}" });
            var documents = workspace.GetDocuments(Path.Combine("src", "root", "bar.cs"));
            Assert.Equal(1, documents.Count());
            Assert.Equal(Path.Combine("src", "root", "foo.csproj"), documents.ElementAt(0).Project.FilePath);
            Assert.Equal(2, documents.ElementAt(0).Project.Documents.Count());

            workspace.BufferManager.UpdateBuffer(new Request() { FileName = Path.Combine("src", "root", "foo", "bar", "nested", "paths", "dance.cs"), Buffer = "enum E {}" });
            documents = workspace.GetDocuments(Path.Combine("src", "root", "foo", "bar", "nested", "paths", "dance.cs"));
            Assert.Equal(1, documents.Count());
            Assert.Equal(Path.Combine("src", "root", "foo", "bar", "insane.csproj"), documents.ElementAt(0).Project.FilePath);
            Assert.Equal(2, documents.ElementAt(0).Project.Documents.Count());
        }
        public DnxProjectSystem(OmnisharpWorkspace workspace,
                                    IOmnisharpEnvironment env,
                                    IOptions<OmniSharpOptions> optionsAccessor,
                                    ILoggerFactory loggerFactory,
                                    IMetadataFileReferenceCache metadataFileReferenceCache,
                                    IApplicationLifetime lifetime,
                                    IFileSystemWatcher watcher,
                                    IEventEmitter emitter,
                                    DnxContext context)
        {
            _workspace = workspace;
            _env = env;
            _logger = loggerFactory.CreateLogger<DnxProjectSystem>();
            _metadataFileReferenceCache = metadataFileReferenceCache;
            _options = optionsAccessor.Options;
            _dnxPaths = new DnxPaths(env, _options, loggerFactory);
            _designTimeHostManager = new DesignTimeHostManager(loggerFactory, _dnxPaths);
            _packagesRestoreTool = new PackagesRestoreTool(_options, loggerFactory, emitter, context, _dnxPaths);
            _context = context;
            _watcher = watcher;
            _emitter = emitter;
            _directoryEnumerator = new DirectoryEnumerator(loggerFactory);

            lifetime.ApplicationStopping.Register(OnShutdown);
        }
 public ProjectEventForwarder(OmnisharpWorkspace workspace, [ImportMany] IEnumerable<IProjectSystem> projectSystems, IEventEmitter emitter)
 {
     _projectSystems = projectSystems;
     _workspace = workspace;
     _emitter = emitter;
     _workspace.WorkspaceChanged += OnWorkspaceChanged;
 }
Esempio n. 5
0
        public static OmnisharpWorkspace CreateSimpleWorkspace(Dictionary<string, string> sourceFiles)
        {
            var workspace = new OmnisharpWorkspace();
            var versionStamp = VersionStamp.Create();
            var mscorlib = MetadataReference.CreateFromAssembly(AssemblyFromType(typeof(object)));
            var systemCore = MetadataReference.CreateFromAssembly(AssemblyFromType(typeof(Enumerable)));
            var references = new[] { mscorlib, systemCore };

            var projects = new[] { "aspnet50", "aspnetcore50" };

            foreach (var project in projects)
            {
                var projectInfo = ProjectInfo.Create(ProjectId.CreateNewId(), versionStamp,
                                                     "OmniSharp+" + project, "AssemblyName",
                                                     LanguageNames.CSharp, "project.json", metadataReferences: references);
                workspace.AddProject(projectInfo);

                foreach (var file in sourceFiles)
                {
                    var document = DocumentInfo.Create(DocumentId.CreateNewId(projectInfo.Id), file.Key,
                                                       null, SourceCodeKind.Regular,
                                                       TextLoader.From(TextAndVersion.Create(SourceText.From(file.Value), versionStamp)), file.Key);

                    workspace.AddDocument(document);
                }
            }

            return workspace;
        }
 public ScriptCsProjectSystem(OmnisharpWorkspace workspace, IOmnisharpEnvironment env, ILoggerFactory loggerFactory, ScriptCsContext scriptCsContext)
 {
     _workspace = workspace;
     _env = env;
     _scriptCsContext = scriptCsContext;
     _logger = loggerFactory.CreateLogger<ScriptCsProjectSystem>();
 }
Esempio n. 7
0
 public static OptionSet GetOptions(OmnisharpWorkspace workspace, OmniSharp.Options.FormattingOptions formattingOptions)
 {
     return workspace.Options
         .WithChangedOption(Microsoft.CodeAnalysis.Formatting.FormattingOptions.NewLine, LanguageNames.CSharp, formattingOptions.NewLine)
         .WithChangedOption(Microsoft.CodeAnalysis.Formatting.FormattingOptions.UseTabs, LanguageNames.CSharp, formattingOptions.UseTabs)
         .WithChangedOption(Microsoft.CodeAnalysis.Formatting.FormattingOptions.TabSize, LanguageNames.CSharp, formattingOptions.TabSize)
         .WithChangedOption(Microsoft.CodeAnalysis.Formatting.FormattingOptions.IndentationSize, LanguageNames.CSharp, formattingOptions.IndentationSize);
 }
 public ProjectEventForwarder(DnxContext dnxContext, MSBuildContext msbuildContext, OmnisharpWorkspace workspace, IEventEmitter emitter)
 {
     _dnxContext = dnxContext;
     _msbuildContext = msbuildContext;
     _workspace = workspace;
     _emitter = emitter;
     _workspace.WorkspaceChanged += OnWorkspaceChanged;
 }
 public static async Task AddQuickFix(ICollection<QuickFix> quickFixes, OmnisharpWorkspace workspace, Location location)
 {
     if (location.IsInSource)
     {
         var quickFix = await GetQuickFix(workspace, location);
         quickFixes.Add(quickFix);
     }
 }
Esempio n. 10
0
 public MSBuildProjectSystem(OmnisharpWorkspace workspace,
                             IOmnisharpEnvironment env,
                             ILoggerFactory loggerFactory,
                             IMetadataFileReferenceCache metadataReferenceCache,
                             IFileSystemWatcher watcher,
                             MSBuildContext context)
 {
     _workspace = workspace;
     _metadataReferenceCache = metadataReferenceCache;
     _watcher = watcher;
     _env = env;
     _logger = loggerFactory.Create<MSBuildProjectSystem>();
     _context = context;
 }
        private void CreateSimpleWorkspace(out OmnisharpWorkspace workspace, out OmnisharpController controller, out DocumentInfo document, string filename, string contents)
        {
            workspace = new OmnisharpWorkspace();
            controller = new OmnisharpController(workspace, null);

            var projectInfo = ProjectInfo.Create(ProjectId.CreateNewId(), VersionStamp.Create(),
                "ProjectNameVal", "AssemblyNameVal", LanguageNames.CSharp);

            document = DocumentInfo.Create(DocumentId.CreateNewId(projectInfo.Id), filename,
                null, SourceCodeKind.Regular,
                TextLoader.From(TextAndVersion.Create(SourceText.From(contents), VersionStamp.Create())),
                filename);

            workspace.AddProject(projectInfo);
            workspace.AddDocument(document);
        }
Esempio n. 12
0
        private void CreateSimpleWorkspace(out OmnisharpWorkspace workspace, out ChangeBufferService controller, out DocumentInfo document, string filename, string contents)
        {
            workspace = new OmnisharpWorkspace(new HostServicesBuilder(Enumerable.Empty<ICodeActionProvider>()));
            controller = new ChangeBufferService(workspace);

            var projectInfo = ProjectInfo.Create(ProjectId.CreateNewId(), VersionStamp.Create(),
                "ProjectNameVal", "AssemblyNameVal", LanguageNames.CSharp);

            document = DocumentInfo.Create(DocumentId.CreateNewId(projectInfo.Id), filename,
                null, SourceCodeKind.Regular,
                TextLoader.From(TextAndVersion.Create(SourceText.From(contents), VersionStamp.Create())),
                filename);

            workspace.AddProject(projectInfo);
            workspace.AddDocument(document);
        }
        public static async Task<IEnumerable<CodeAction>> GetActions(OmnisharpWorkspace workspace, IEnumerable<ICodeActionProvider> codeActionProviders, ILogger logger, ICodeActionRequest request)
        {
            var actions = new List<CodeAction>();
            var originalDocument = workspace.GetDocument(request.FileName);
            if (originalDocument == null)
            {
                return actions;
            }

            var refactoringContext = await GetRefactoringContext(originalDocument, request, actions);
            var codeFixContext = await GetCodeFixContext(originalDocument, request, actions);
            await CollectRefactoringActions(codeActionProviders, logger, refactoringContext);
            await CollectCodeFixActions(codeActionProviders, logger, codeFixContext);
            actions.Reverse();
            return actions;
        }
        public DotNetProjectSystem(IOmnisharpEnvironment environment,
                                   OmnisharpWorkspace omnisharpWorkspace,
                                   IMetadataFileReferenceCache metadataFileReferenceCache,
                                   ILoggerFactory loggerFactory,
                                   IFileSystemWatcher watcher,
                                   IEventEmitter emitter)
        {
            _environment = environment;
            _omnisharpWorkspace = omnisharpWorkspace;
            _logger = loggerFactory.CreateLogger<DotNetProjectSystem>();
            _emitter = emitter;
            _metadataFileReferenceCache = metadataFileReferenceCache;
            _watcher = watcher;

            _packageRestore = new PackagesRestoreTool(loggerFactory, _emitter);
            _projectStates = new ProjectStatesCache(loggerFactory);
        }
 public MSBuildProjectSystem(OmnisharpWorkspace workspace,
                             IOmnisharpEnvironment env,
                             IOptions<OmniSharpOptions> optionsAccessor,
                             ILoggerFactory loggerFactory,
                             IEventEmitter emitter,
                             IMetadataFileReferenceCache metadataReferenceCache,
                             IFileSystemWatcher watcher,
                             MSBuildContext context)
 {
     _workspace = workspace;
     _metadataReferenceCache = metadataReferenceCache;
     _watcher = watcher;
     _env = env;
     _options = optionsAccessor.Options.MsBuild;
     _logger = loggerFactory.CreateLogger<MSBuildProjectSystem>();
     _emitter = emitter;
     _context = context;
 }
        private static OmnisharpWorkspace GetWorkspaceWithProjects()
        {
            var workspace = new OmnisharpWorkspace();

            TestHelpers.AddProjectToWorkspace(workspace, Path.Combine("src", "project.json"),
                new[] { "dnx451", "dnxcore50" },
                new Dictionary<string, string>() { { Path.Combine("src", "a.cs"), "class C {}" } });

            TestHelpers.AddProjectToWorkspace(workspace, Path.Combine("test", "project.json"),
                new[] { "dnx451", "dnxcore50" },
                new Dictionary<string, string>() { { Path.Combine("test", "b.cs"), "class C {}" } });

            Assert.Equal(4, workspace.CurrentSolution.Projects.Count());
            foreach (var project in workspace.CurrentSolution.Projects)
            {
                Assert.Equal(1, project.Documents.Count());
            }

            return workspace;
        }
Esempio n. 17
0
        public AspNet5ProjectSystem(OmnisharpWorkspace workspace,
                                    IOmnisharpEnvironment env,
                                    IOptions<OmniSharpOptions> optionsAccessor,
                                    ILoggerFactory loggerFactory,
                                    IMetadataFileReferenceCache metadataFileReferenceCache,
                                    IApplicationLifetime lifetime,
                                    IFileSystemWatcher watcher,
                                    AspNet5Context context)
        {
            _workspace = workspace;
            _env = env;
            _options = optionsAccessor.Options;
            _logger = loggerFactory.Create<AspNet5ProjectSystem>();
            _metadataFileReferenceCache = metadataFileReferenceCache;
            _designTimeHostManager = new DesignTimeHostManager(loggerFactory);
            _context = context;
            _watcher = watcher;

            lifetime.ApplicationStopping.Register(OnShutdown);
        }
        public DnxProjectSystem(OmnisharpWorkspace workspace,
                                IOmnisharpEnvironment env,
                                ILoggerFactory loggerFactory,
                                IMetadataFileReferenceCache metadataFileReferenceCache,
                                IApplicationLifetime lifetime,
                                IFileSystemWatcher watcher,
                                IEventEmitter emitter,
                                DnxContext context)
        {
            _workspace     = workspace;
            _env           = env;
            _loggerFactory = loggerFactory;
            _logger        = loggerFactory.CreateLogger <DnxProjectSystem>();
            _metadataFileReferenceCache = metadataFileReferenceCache;
            _context             = context;
            _watcher             = watcher;
            _emitter             = emitter;
            _directoryEnumerator = new DirectoryEnumerator(loggerFactory);

            lifetime?.ApplicationStopping.Register(OnShutdown);
        }
Esempio n. 19
0
 public ProtobuildProjectSystem(
     OmnisharpWorkspace workspace,
     IOmnisharpEnvironment env,
     ILoggerFactory loggerFactory,
     IEventEmitter emitter,
     IMetadataFileReferenceCache metadataReferenceCache,
     IFileSystemWatcher watcher,
     MSBuildContext context) : base(
         workspace,
         env,
         loggerFactory,
         emitter,
         metadataReferenceCache,
         watcher,
         context)
 {
     _env     = env;
     _logger  = loggerFactory.CreateLogger <ProtobuildProjectSystem>();
     _context = context;
     _watcher = watcher;
 }
        public DnxProjectSystem(OmnisharpWorkspace workspace,
                                IOmnisharpEnvironment env,
                                ILoggerFactory loggerFactory,
                                IMetadataFileReferenceCache metadataFileReferenceCache,
                                IApplicationLifetime lifetime,
                                IFileSystemWatcher watcher,
                                IEventEmitter emitter,
                                DnxContext context)
        {
            _workspace = workspace;
            _env = env;
            _loggerFactory = loggerFactory;
            _logger = loggerFactory.CreateLogger<DnxProjectSystem>();
            _metadataFileReferenceCache = metadataFileReferenceCache;
            _context = context;
            _watcher = watcher;
            _emitter = emitter;
            _directoryEnumerator = new DirectoryEnumerator(loggerFactory);

            lifetime?.ApplicationStopping.Register(OnShutdown);
        }
        public async Task UpdateBufferFindsProjectBasedOnNearestPath()
        {
            var workspace = new OmnisharpWorkspace();


            TestHelpers.AddProjectToWorkspace(workspace, Path.Combine("src", "root", "foo.csproj"),
                                              new[] { "" },
                                              new Dictionary <string, string>()
            {
                { Path.Combine("src", "root", "foo.cs"), "class C1 {}" }
            });

            TestHelpers.AddProjectToWorkspace(workspace, Path.Combine("src", "root", "foo", "bar", "insane.csproj"),
                                              new[] { "" },
                                              new Dictionary <string, string>()
            {
                { Path.Combine("src", "root", "foo", "bar", "nested", "code.cs"), "class C2 {}" }
            });

            await workspace.BufferManager.UpdateBuffer(new Request()
            {
                FileName = Path.Combine("src", "root", "bar.cs"), Buffer = "enum E {}"
            });

            var documents = workspace.GetDocuments(Path.Combine("src", "root", "bar.cs"));

            Assert.Equal(1, documents.Count());
            Assert.Equal(Path.Combine("src", "root", "foo.csproj"), documents.ElementAt(0).Project.FilePath);
            Assert.Equal(2, documents.ElementAt(0).Project.Documents.Count());

            await workspace.BufferManager.UpdateBuffer(new Request()
            {
                FileName = Path.Combine("src", "root", "foo", "bar", "nested", "paths", "dance.cs"), Buffer = "enum E {}"
            });

            documents = workspace.GetDocuments(Path.Combine("src", "root", "foo", "bar", "nested", "paths", "dance.cs"));
            Assert.Equal(1, documents.Count());
            Assert.Equal(Path.Combine("src", "root", "foo", "bar", "insane.csproj"), documents.ElementAt(0).Project.FilePath);
            Assert.Equal(2, documents.ElementAt(0).Project.Documents.Count());
        }
        public static async Task<NavigateResponse> Navigate(OmnisharpWorkspace workspace, Request request, Func<FileMemberElement, FileMemberElement, Request, bool> IsCloserNode)
        {
            var stack = new List<FileMemberElement>(await StructureComputer.Compute(workspace.GetDocuments(request.FileName)));
            var response = new NavigateResponse();
            //Retain current line in case we dont need to navigate.
            response.Line = request.Line;
            response.Column = request.Column;

            FileMemberElement closestNode = null;
            FileMemberElement thisNode = null;
            while (stack.Count > 0)
            {
                var node = stack[0];
                stack.Remove(node);
                var isCloserNode = IsCloserNode(node, closestNode, request);
                if (isCloserNode)
                {
                    closestNode = node;
                }
                if (node.Location.Line == request.Line)
                {
                    thisNode = node;
                }
                stack.AddRange(node.ChildNodes);
            }

            //If there is a closest node, use its line and column.
            //or if we are on the last node, adjust column.
            //if we are above the first or below the last node, do nothing.
            if (closestNode != null)
            {
                response.Line = closestNode.Location.Line;
                response.Column = closestNode.Location.Column;
            }
            else if (thisNode != null)
            {
                response.Column = thisNode.Location.Column;
            }
            return response;
        }
        private async Task <NavigateResponse> SendRequest(OmnisharpWorkspace workspace, string fileName, string fileContent, NavigateDirection upOrDown)
        {
            var initialCursorLineColumn   = TestHelpers.GetLineAndColumnFromDollar(TestHelpers.RemovePercentMarker(fileContent));
            var fileContentNoDollarMarker = TestHelpers.RemoveDollarMarker(fileContent);
            var controller = new OmnisharpController(workspace, new FakeOmniSharpOptions());
            var request    = new Request
            {
                Line     = initialCursorLineColumn.Line,
                Column   = initialCursorLineColumn.Column,
                FileName = fileName,
                Buffer   = fileContentNoDollarMarker
            };

            if (upOrDown == NavigateDirection.UP)
            {
                return(await controller.NavigateUp(request));
            }
            else
            {
                return(await controller.NavigateDown(request));
            }
        }
        private async static Task <OmnisharpWorkspace> GetWorkspaceWithProjects()
        {
            var workspace = new OmnisharpWorkspace(
                new HostServicesAggregator(
                    Enumerable.Empty <IHostServicesProvider>()));

            await TestHelpers.AddProjectToWorkspace(workspace, Path.Combine("src", "project.json"),
                                                    new[] { "dnx451", "dnxcore50" },
                                                    new Dictionary <string, string>() { { Path.Combine("src", "a.cs"), "class C {}" } });

            await TestHelpers.AddProjectToWorkspace(workspace, Path.Combine("test", "project.json"),
                                                    new[] { "dnx451", "dnxcore50" },
                                                    new Dictionary <string, string>() { { Path.Combine("test", "b.cs"), "class C {}" } });

            Assert.Equal(4, workspace.CurrentSolution.Projects.Count());
            foreach (var project in workspace.CurrentSolution.Projects)
            {
                Assert.Equal(1, project.Documents.Count());
            }

            return(workspace);
        }
Esempio n. 25
0
        public void AddProjectToWorkspace(OmnisharpWorkspace workspace,
                                          string projectFilePath,
                                          IEnumerable <string> frameworks,
                                          IDictionary <string, string> sourceFiles)
        {
            _logger.LogInformation($"  AddProjectToWorkspace");

            var versionStamp = VersionStamp.Create();
            var references   = new[]
            {
                CreateFromType(typeof(object)),     // mscorlib
                CreateFromType(typeof(Enumerable))  // System.Core
            };

            foreach (var framework in frameworks)
            {
                var projectInfo = ProjectInfo.Create(ProjectId.CreateNewId(),
                                                     versionStamp,
                                                     $"OmniSharp+{framework}",
                                                     "AssemblyName",
                                                     LanguageNames.CSharp,
                                                     projectFilePath,
                                                     metadataReferences: references);

                workspace.AddProject(projectInfo);
                foreach (var file in sourceFiles)
                {
                    var document = DocumentInfo.Create(DocumentId.CreateNewId(projectInfo.Id),
                                                       file.Key,
                                                       folders: null,
                                                       sourceCodeKind: SourceCodeKind.Regular,
                                                       loader: TextLoader.From(TextAndVersion.Create(SourceText.From(file.Value), versionStamp)),
                                                       filePath: file.Key);

                    workspace.AddDocument(document);
                }
            }
        }
Esempio n. 26
0
        public void AddProjectToWorkspace(OmnisharpWorkspace workspace,
                                          string projectFilePath,
                                          IEnumerable<string> frameworks,
                                          IDictionary<string, string> sourceFiles)
        {
            _logger.LogInformation($"  AddProjectToWorkspace");

            var versionStamp = VersionStamp.Create();
            var references = new[]
            {
                CreateFromType(typeof(object)),     // mscorlib
                CreateFromType(typeof(Enumerable))  // System.Core
            };

            foreach (var framework in frameworks)
            {
                var projectInfo = ProjectInfo.Create(ProjectId.CreateNewId(),
                                                     versionStamp,
                                                     $"OmniSharp+{framework}",
                                                     "AssemblyName",
                                                     LanguageNames.CSharp,
                                                     projectFilePath,
                                                     metadataReferences: references);

                workspace.AddProject(projectInfo);
                foreach (var file in sourceFiles)
                {
                    var document = DocumentInfo.Create(DocumentId.CreateNewId(projectInfo.Id),
                                                       file.Key,
                                                       folders: null,
                                                       sourceCodeKind: SourceCodeKind.Regular,
                                                       loader: TextLoader.From(TextAndVersion.Create(SourceText.From(file.Value), versionStamp)),
                                                       filePath: file.Key);

                    workspace.AddDocument(document);
                }
            }
        }
        public static async Task<QuickFix> GetQuickFix(OmnisharpWorkspace workspace, Location location)
        {
            if (!location.IsInSource)
                throw new Exception("Location is not in the source tree");

            var lineSpan = location.GetLineSpan();
            var path = lineSpan.Path;
            var documents = workspace.GetDocuments(path);
            var line = lineSpan.StartLinePosition.Line;
            var syntaxTree = await documents.First().GetSyntaxTreeAsync();
            var text = syntaxTree.GetText().Lines[line].ToString();

            return new QuickFix
            {
                Text = text.Trim(),
                FileName = path,
                Line = line + 1,
                Column = lineSpan.StartLinePosition.Character + 1,
                EndLine = lineSpan.EndLinePosition.Line + 1,
                EndColumn = lineSpan.EndLinePosition.Character + 1,
                Projects = documents.Select(document => document.Project.Name).ToArray()
            };
        }
Esempio n. 28
0
        public static OmnisharpWorkspace CreateCsxWorkspace(string source, string fileName = "dummy.csx")
        {
            var versionStamp = VersionStamp.Create();
            var mscorlib     = MetadataReference.CreateFromAssembly(AssemblyFromType(typeof(object)));
            var systemCore   = MetadataReference.CreateFromAssembly(AssemblyFromType(typeof(Enumerable)));
            var references   = new[] { mscorlib, systemCore };
            var workspace    = new OmnisharpWorkspace();

            var parseOptions = new CSharpParseOptions(LanguageVersion.CSharp6, DocumentationMode.Parse, SourceCodeKind.Script);

            var projectId = ProjectId.CreateNewId(Guid.NewGuid().ToString());
            var project   = ProjectInfo.Create(projectId, VersionStamp.Create(), fileName, $"{fileName}.dll", LanguageNames.CSharp, fileName,
                                               compilationOptions: new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary), metadataReferences: references, parseOptions: parseOptions,
                                               isSubmission: true);

            workspace.AddProject(project);
            var document = DocumentInfo.Create(DocumentId.CreateNewId(project.Id), fileName, null, SourceCodeKind.Script, null, fileName)
                           .WithSourceCodeKind(SourceCodeKind.Script)
                           .WithTextLoader(TextLoader.From(TextAndVersion.Create(SourceText.From(source), VersionStamp.Create())));

            workspace.AddDocument(document);
            return(workspace);
        }
Esempio n. 29
0
        private async Task <RenameResponse> SendRequest(OmnisharpWorkspace workspace,
                                                        string renameTo,
                                                        string filename,
                                                        string fileContent,
                                                        bool wantsTextChanges = false,
                                                        bool applyTextChanges = true)
        {
            var lineColumn = TestHelpers.GetLineAndColumnFromDollar(fileContent);
            var controller = new RenameService(workspace);
            var request    = new RenameRequest
            {
                Line             = lineColumn.Line,
                Column           = lineColumn.Column,
                RenameTo         = renameTo,
                FileName         = filename,
                Buffer           = fileContent.Replace("$", ""),
                WantsTextChanges = wantsTextChanges,
                ApplyTextChanges = applyTextChanges
            };

            await workspace.BufferManager.UpdateBuffer(request);

            return(await controller.Handle(request));
        }
Esempio n. 30
0
        public AspNet5ProjectSystem(OmnisharpWorkspace workspace,
                                    IOmnisharpEnvironment env,
                                    IOptions <OmniSharpOptions> optionsAccessor,
                                    ILoggerFactory loggerFactory,
                                    IMetadataFileReferenceCache metadataFileReferenceCache,
                                    IApplicationLifetime lifetime,
                                    IFileSystemWatcher watcher,
                                    IEventEmitter emitter,
                                    AspNet5Context context)
        {
            _workspace = workspace;
            _env       = env;
            _logger    = loggerFactory.Create <AspNet5ProjectSystem>();
            _metadataFileReferenceCache = metadataFileReferenceCache;
            _options               = optionsAccessor.Options;
            _aspNet5Paths          = new AspNet5Paths(env, _options, loggerFactory);
            _designTimeHostManager = new DesignTimeHostManager(loggerFactory, _aspNet5Paths);
            _packagesRestoreTool   = new PackagesRestoreTool(_options, loggerFactory, emitter, context, _aspNet5Paths);
            _context               = context;
            _watcher               = watcher;
            _emitter               = emitter;

            lifetime.ApplicationStopping.Register(OnShutdown);
        }
Esempio n. 31
0
        public DnxProjectSystem CreateProjectSystem(
            Solution solution,
            IApplicationLifetime appLifetime,
            DnxContext context)
        {
            var workspace     = new OmnisharpWorkspace();
            var env           = new OmnisharpEnvironment(solution.BaseDirectory);
            var options       = new OmniSharpOptionsWrapper();
            var loggerFactory = new LoggerFactory();
            var cache         = new MetadataFileReferenceCache();
            var emitter       = new EventEmitter();
            var watcher       = new FileSystemWatcherWrapper(env);

            return(new DnxProjectSystem(
                       workspace,
                       env,
                       options,
                       loggerFactory,
                       cache,
                       appLifetime,
                       watcher,
                       emitter,
                       context));
        }
Esempio n. 32
0
        private async Task<RenameResponse> SendRequest(OmnisharpWorkspace workspace,
                                                       string renameTo,
                                                       string filename,
                                                       string fileContent,
                                                       bool wantsTextChanges = false,
                                                       bool applyTextChanges = true)
        {
            var lineColumn = TestHelpers.GetLineAndColumnFromDollar(fileContent);
            var controller = new RenameService(workspace);
            var request = new RenameRequest
            {
                Line = lineColumn.Line,
                Column = lineColumn.Column,
                RenameTo = renameTo,
                FileName = filename,
                Buffer = fileContent.Replace("$", ""),
                WantsTextChanges = wantsTextChanges,
                ApplyTextChanges = applyTextChanges
            };

            await workspace.BufferManager.UpdateBuffer(request);

            return await controller.Handle(request);
        }
 public CodeActionController(OmnisharpWorkspace workspace, IEnumerable <ICodeActionProvider> providers, ILoggerFactory loggerFactory)
 {
     _workspace           = workspace;
     _codeActionProviders = providers;
     _logger = loggerFactory.CreateLogger <CodeActionController>();
 }
Esempio n. 34
0
 public static async Task<IEnumerable<ISymbol>> SymbolsFromQuickFixes(OmnisharpWorkspace workspace, IEnumerable<QuickFix> quickFixes)
 {
     var symbols = new List<ISymbol>();
     foreach (var quickfix in quickFixes)
     {
         symbols.Add(await TestHelpers.SymbolFromQuickFix(workspace, quickfix));
     }
     return symbols;
 }
Esempio n. 35
0
 public static async Task<ISymbol> SymbolFromQuickFix(OmnisharpWorkspace workspace, QuickFix result)
 {
     var document = workspace.GetDocument(result.FileName);
     var sourceText = await document.GetTextAsync();
     var position = sourceText.Lines.GetPosition(new LinePosition(result.Line - 1, result.Column - 1));
     var semanticModel = await document.GetSemanticModelAsync();
     return SymbolFinder.FindSymbolAtPosition(semanticModel, position, workspace);
 }
Esempio n. 36
0
        public static Task<OmnisharpWorkspace> AddProjectToWorkspace(OmnisharpWorkspace workspace, string filePath, string[] frameworks, Dictionary<string, string> sourceFiles)
        {
            var versionStamp = VersionStamp.Create();
            var mscorlib = MetadataReference.CreateFromFile(AssemblyFromType(typeof(object)).Location);
            var systemCore = MetadataReference.CreateFromFile(AssemblyFromType(typeof(Enumerable)).Location);
            var references = new[] { mscorlib, systemCore };

            foreach (var framework in frameworks)
            {
                var projectInfo = ProjectInfo.Create(ProjectId.CreateNewId(), versionStamp,
                                                     "OmniSharp+" + framework, "AssemblyName",
                                                     LanguageNames.CSharp, filePath, metadataReferences: references);

                workspace.AddProject(projectInfo);
                foreach (var file in sourceFiles)
                {
                    var document = DocumentInfo.Create(DocumentId.CreateNewId(projectInfo.Id), file.Key,
                                                       null, SourceCodeKind.Regular,
                                                       TextLoader.From(TextAndVersion.Create(SourceText.From(file.Value), versionStamp)), file.Key);

                    workspace.AddDocument(document);
                }
            }

            return Task.FromResult(workspace);
        }
Esempio n. 37
0
 public FormatAfterKeystrokeService(OmnisharpWorkspace workspace, FormattingOptions formattingOptions)
 {
     _workspace = workspace;
     _options   = OmniSharp.Roslyn.CSharp.Workers.Format.Formatting.GetOptions(_workspace, formattingOptions);
 }
 public UpdateBufferFilter(OmnisharpWorkspace workspace)
 {
     _workspace = workspace;
 }
Esempio n. 39
0
 public RenameService(OmnisharpWorkspace workspace)
 {
     _workspace = workspace;
 }
        public async void ChangeBuffer_InsertRemoveChanges()
        {
            var workspace  = new OmnisharpWorkspace();
            var controller = new OmnisharpController(workspace);

            var projectInfo = ProjectInfo.Create(ProjectId.CreateNewId(), VersionStamp.Create(),
                                                 "ProjectNameVal", "AssemblyNameVal", LanguageNames.CSharp);

            var document = DocumentInfo.Create(DocumentId.CreateNewId(projectInfo.Id), "test.cs",
                                               null, SourceCodeKind.Regular,
                                               TextLoader.From(TextAndVersion.Create(SourceText.From("class C {}"), VersionStamp.Create())),
                                               "test.cs");

            workspace.AddProject(projectInfo);
            workspace.AddDocument(document);

            // insert edit
            await controller.ChangeBuffer(new Models.ChangeBufferRequest()
            {
                StartLine   = 1,
                StartColumn = 1,
                EndLine     = 1,
                EndColumn   = 1,
                NewText     = "farboo",
                FileName    = "test.cs"
            });

            var sourceText = await workspace.CurrentSolution.GetDocument(document.Id).GetTextAsync();

            Assert.Equal("farbooclass C {}", sourceText.ToString());

            // remove edit
            await controller.ChangeBuffer(new Models.ChangeBufferRequest()
            {
                StartLine   = 1,
                StartColumn = 1,
                EndLine     = 1,
                EndColumn   = 7,
                NewText     = "",
                FileName    = "test.cs"
            });

            sourceText = await workspace.CurrentSolution.GetDocument(document.Id).GetTextAsync();

            Assert.Equal("class C {}", sourceText.ToString());

            // modification edit
            await controller.ChangeBuffer(new Models.ChangeBufferRequest()
            {
                StartLine   = 1,
                StartColumn = 1,
                EndLine     = 1,
                EndColumn   = 6,
                NewText     = "interface",
                FileName    = "test.cs"
            });

            sourceText = await workspace.CurrentSolution.GetDocument(document.Id).GetTextAsync();

            Assert.Equal("interface C {}", sourceText.ToString());
        }
Esempio n. 41
0
 public CodeCheckService(OmnisharpWorkspace workspace)
 {
     _workspace = workspace;
 }
 public CurrentProjectFacts()
 {
     _context   = new DnxContext();
     _workspace = new OmnisharpWorkspace();
 }
Esempio n. 43
0
 public BufferManager(OmnisharpWorkspace workspace)
 {
     _workspace = workspace;
     _workspace.WorkspaceChanged += OnWorkspaceChanged;
 }
Esempio n. 44
0
 public GotoDefinitionService(OmnisharpWorkspace workspace, MetadataHelper metadataHelper)
 {
     _workspace      = workspace;
     _metadataHelper = metadataHelper;
 }
 public StatusMiddleware(RequestDelegate next, OmnisharpWorkspace workspace)
 {
     _next      = next;
     _workspace = workspace;
 }
        private async Task<NavigateResponse> SendRequest(OmnisharpWorkspace workspace, string fileName, string fileContent, NavigateDirection upOrDown)
        {
            var initialCursorLineColumn = TestHelpers.GetLineAndColumnFromDollar(TestHelpers.RemovePercentMarker(fileContent));
            var fileContentNoDollarMarker = TestHelpers.RemoveDollarMarker(fileContent);
            var controller = new OmnisharpController(workspace, new FakeOmniSharpOptions());
            var request = new Request
            {
                Line = initialCursorLineColumn.Line,
                Column = initialCursorLineColumn.Column,
                FileName = fileName,
                Buffer = fileContentNoDollarMarker
            };

            if (upOrDown == NavigateDirection.UP)
            {
                return await controller.NavigateUp(request);
            }
            else
            {
                return await controller.NavigateDown(request);
            }
        }
Esempio n. 47
0
 public GotoFileService(OmnisharpWorkspace workspace)
 {
     _workspace = workspace;
 }
Esempio n. 48
0
 public UpdateBufferFilter(OmnisharpWorkspace workspace)
 {
     _workspace = workspace;
 }
        private async static Task<OmnisharpWorkspace> GetWorkspaceWithProjects()
        {
            var workspace = new OmnisharpWorkspace(new HostServicesBuilder(Enumerable.Empty<ICodeActionProvider>()));

            await TestHelpers.AddProjectToWorkspace(workspace, Path.Combine("src", "project.json"),
                new[] { "dnx451", "dnxcore50" },
                new Dictionary<string, string>() { { Path.Combine("src", "a.cs"), "class C {}" } });

            await TestHelpers.AddProjectToWorkspace(workspace, Path.Combine("test", "project.json"),
                new[] { "dnx451", "dnxcore50" },
                new Dictionary<string, string>() { { Path.Combine("test", "b.cs"), "class C {}" } });

            Assert.Equal(4, workspace.CurrentSolution.Projects.Count());
            foreach (var project in workspace.CurrentSolution.Projects)
            {
                Assert.Equal(1, project.Documents.Count());
            }

            return workspace;
        }
Esempio n. 50
0
 public RunCodeActionsService(OmnisharpWorkspace workspace, [ImportMany] IEnumerable <ICodeActionProvider> providers)
 {
     _workspace           = workspace;
     _codeActionProviders = providers;
 }
Esempio n. 51
0
 public IntellisenseService(OmnisharpWorkspace workspace, FormattingOptions formattingOptions)
 {
     _workspace         = workspace;
     _formattingOptions = formattingOptions;
 }
Esempio n. 52
0
 public TypeLookupService(OmnisharpWorkspace workspace, FormattingOptions formattingOptions)
 {
     _workspace         = workspace;
     _formattingOptions = formattingOptions;
 }
Esempio n. 53
0
 public CurrentProjectFacts()
 {
     _workspace     = new OmnisharpWorkspace(new HostServicesBuilder(Enumerable.Empty <ICodeActionProvider>()));
     _context       = new DnxContext();
     _projectSystem = new DnxProjectSystem(_workspace, null, new FakeLoggerFactory(), null, null, null, null, _context);
 }
Esempio n. 54
0
 public TestCommandService(OmnisharpWorkspace workspace, [ImportMany] IEnumerable <ITestCommandProvider> testCommandProviders)
 {
     _workspace            = workspace;
     _testCommandProviders = testCommandProviders;
 }
Esempio n. 55
0
        public static OmnisharpWorkspace CreateCsxWorkspace(string source, string fileName = "dummy.csx")
        {
            var versionStamp = VersionStamp.Create();
            var mscorlib = MetadataReference.CreateFromFile(AssemblyFromType(typeof(object)).Location);
            var systemCore = MetadataReference.CreateFromFile(AssemblyFromType(typeof(Enumerable)).Location);
            var references = new[] { mscorlib, systemCore };
            var workspace = new OmnisharpWorkspace(new HostServicesBuilder(Enumerable.Empty<ICodeActionProvider>()));

            var parseOptions = new CSharpParseOptions(LanguageVersion.CSharp6, DocumentationMode.Parse, SourceCodeKind.Script);

            var projectId = ProjectId.CreateNewId(Guid.NewGuid().ToString());
            var project = ProjectInfo.Create(projectId, VersionStamp.Create(), fileName, $"{fileName}.dll", LanguageNames.CSharp, fileName,
                       compilationOptions: new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary), metadataReferences: references, parseOptions: parseOptions,
                       isSubmission: true);

            workspace.AddProject(project);
            var document = DocumentInfo.Create(DocumentId.CreateNewId(project.Id), fileName, null, SourceCodeKind.Script, null, fileName)
                .WithSourceCodeKind(SourceCodeKind.Script)
                .WithTextLoader(TextLoader.From(TextAndVersion.Create(SourceText.From(source), VersionStamp.Create())));

            workspace.AddDocument(document);
            return workspace;
        }
Esempio n. 56
0
 public GotoRegionService(OmnisharpWorkspace workspace)
 {
     _workspace = workspace;
 }
 public RunCodeActionService(OmnisharpWorkspace workspace, [ImportMany] IEnumerable <ICodeActionProvider> providers, ILoggerFactory loggerFactory)
 {
     _workspace           = workspace;
     _codeActionProviders = providers;
     _logger = loggerFactory.CreateLogger <RunCodeActionService>();
 }
Esempio n. 58
0
 public MetadataService(OmnisharpWorkspace workspace, MetadataHelper metadataHelper)
 {
     _workspace      = workspace;
     _metadataHelper = metadataHelper;
 }
 public ChangeBufferService(OmnisharpWorkspace workspace)
 {
     _workspace = workspace;
 }
 public DiagnosticsService(OmnisharpWorkspace workspace, DiagnosticEventForwarder forwarder, CSharpDiagnosticService diagnostics)
 {
     _forwarder   = forwarder;
     _workspace   = workspace;
     _diagnostics = diagnostics;
 }