Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DotNetDay18: VSCode. An Open Source Text Editor...

DotNetDay18: VSCode. An Open Source Text Editor with TypeScript and HTML5

About 7 years, Erich Gamma compiled a team of software developers with a mission. Create the first user friendly web-based code editor in JavaScript and HTML5. The goal was to support IDE functionality known from the desktop, such as IntelliSense, or Code Actions. This editor transformed from the web back onto the desktop as the lightweight code editor that everybody loves, Visual Studio Code. In this session, Dirk explains how they changed the code from a huge monolithic JavaScript application into a modular desktop application written in TypeScript. In addition to the technical challenges you can get insight into the processes that the team uses to support this large open-source project.

dotnetday

May 29, 2018
Tweet

More Decks by dotnetday

Other Decks in Programming

Transcript

  1. Visual Studio Code A desktop tool that combines the simplicity

    of a code editor with what developers need for the core code-build-debug-commit cycle
  2. Programming JavaScript is like carving code in stone. Refactoring it

    is difficult. JavaScript code rots over time. Comprehending JavaScript code is difficult as well (hard to browse and navigate) Large code bases need to come up with compensating patterns for modules (esm, umd, amd or commonjs), namespaces, annotations, …. Describing APIs means keeping documentation synchronized with the implementation.
  3. Controlled extensibility JavaScript or TypeScript Reuse node modules API: vscode.d.ts

    Extension description: package.json Main Process IPC Extension Host Extension Host RPC Extension Host node.js Renderer process
  4. RPC Ext- Host Node Renderer process PowerShell Server OmniSharp Server

    Go CLI Tools Jedi C++ Server Rust LS Eclipse Java Server TS Server
  5. Editor/IDE Host Language Server Language Server Protocol User opens document

    textDocument/didOpen: textDocument User edits document textDocument/didChange: textDocument User executes go to definition textDocument/defintion: textDocument, position result: uri, range User closes document textDocument/didClose: textDocument JSON RPC textDocument/publishDiagnostics: diagnostics https://microsoft.github.io/language-server-protocol/