TypeScript and Javascript language support for Atom-IDE

Overview

IDE-TypeScript package

CI

TypeScript and JavaScript language support for Atom-IDE, powered by the Theia TypeScript Language Server.

Screen shot of IDE-TypeScript

Early access

This package is currently an early access release. You should also install the atom-ide-ui package to expose the functionality within Atom.

Features

  • Auto completion
  • Diagnostics (errors & warnings, with autofixes)
  • Document outline
  • Find references
  • Go to definition
  • Hover
  • Signature help
  • Format code

Contributing

Always feel free to help out! Whether it's filing bugs and feature requests or working on some of the open issues, Atom's contributing guide will help get you started while the guide for contributing to packages has some extra information.

License

MIT License. See the license for more details.

Comments
  • Uncaught Error: Connection is closed.

    Uncaught Error: Connection is closed.

    I'm not sure what I did to trigger this. I was editing a JavaScript file, then left Atom open while doing other stuff on my computer, then tried to type in the JavaScript file.

    /cc @damieng

    Atom: 1.22.0-dev-38d9c07 x64 Electron: 1.6.9 OS: Mac OS X 10.11.6 Thrown From: ide-typescript package 0.1.6

    Stack Trace

    Uncaught Error: Connection is closed.

    At /Users/max/.atom/packages/ide-typescript/node_modules/vscode-jsonrpc/lib/main.js:604
    
    Error: Connection is closed.
        at /packages/ide-typescript/node_modules/vscode-jsonrpc/lib/main.js:129:28)
        at throwIfClosedOrDisposed (/packages/ide-typescript/node_modules/vscode-jsonrpc/lib/main.js:604:19)
        at Object.sendNotification (/packages/ide-typescript/node_modules/vscode-jsonrpc/lib/main.js:658:13)
        at LanguageClientConnection._sendNotification (/packages/ide-typescript/node_modules/atom-languageclient/build/lib/languageclient.js:233:15)
        at LanguageClientConnection.didChangeTextDocument (/packages/ide-typescript/node_modules/atom-languageclient/build/lib/languageclient.js:126:10)
        at TextEditorSyncAdapter.sendFullChanges (/packages/ide-typescript/node_modules/atom-languageclient/build/lib/adapters/document-sync-adapter.js:196:22)
        at Function.module.exports.Emitter.simpleDispatch (/Applications/Atom.app/Contents/Resources/app/node_modules/event-kit/lib/emitter.js:25:20)
        at Emitter.module.exports.Emitter.emit (/Applications/Atom.app/Contents/Resources/app/node_modules/event-kit/lib/emitter.js:141:34)
        at /Applications/Atom.app/Contents/Resources/app/src/text-editor.js:626:38
        at Function.module.exports.Emitter.simpleDispatch (/Applications/Atom.app/Contents/Resources/app/node_modules/event-kit/lib/emitter.js:25:20)
        at Emitter.module.exports.Emitter.emit (/Applications/Atom.app/Contents/Resources/app/node_modules/event-kit/lib/emitter.js:141:34)
        at DisplayLayer.emitDidChangeSyncEvent (/Applications/Atom.app/Contents/Resources/app/node_modules/text-buffer/lib/display-layer.js:823:24)
        at /Applications/Atom.app/Contents/Resources/app/node_modules/text-buffer/lib/text-buffer.js:757:35
        at Map.forEach (native)
        at TextBuffer.module.exports.TextBuffer.emitDidChangeEvent (/Applications/Atom.app/Contents/Resources/app/node_modules/text-buffer/lib/text-buffer.js:756:47)
        at TextBuffer.module.exports.TextBuffer.applyChange (/Applications/Atom.app/Contents/Resources/app/node_modules/text-buffer/lib/text-buffer.js:739:18)
        at TextBuffer.module.exports.TextBuffer.revertToCheckpoint (/Applications/Atom.app/Contents/Resources/app/node_modules/text-buffer/lib/text-buffer.js:946:22)
        at TextBuffer.module.exports.TextBuffer.transact (/Applications/Atom.app/Contents/Resources/app/node_modules/text-buffer/lib/text-buffer.js:897:20)
        at TextEditor.module.exports.TextEditor.transact (/Applications/Atom.app/Contents/Resources/app/src/text-editor.js:1673:32)
        at /Applications/Atom.app/Contents/Resources/app/src/text-editor.js:1234:30
        at TextEditor.module.exports.TextEditor.mergeSelections (/Applications/Atom.app/Contents/Resources/app/src/text-editor.js:2617:49)
        at TextEditor.module.exports.TextEditor.mergeIntersectingSelections (/Applications/Atom.app/Contents/Resources/app/src/text-editor.js:2583:41)
        at TextEditor.module.exports.TextEditor.mutateSelectedText (/Applications/Atom.app/Contents/Resources/app/src/text-editor.js:1232:25)
        at TextEditor.module.exports.TextEditor.insertText (/Applications/Atom.app/Contents/Resources/app/src/text-editor.js:1198:25)
        at TextEditor.object.(anonymous function) [as insertText] (/Applications/Atom.app/Contents/Resources/app/node_modules/underscore-plus/lib/underscore-plus.js:77:33)
        at TextEditorComponent.didTextInput (/Applications/Atom.app/Contents/Resources/app/src/text-editor-component.js:1626:28)
    

    Commands

         -0:10 editor:move-to-first-character-of-line (input.hidden-input)
         -0:09.8.0 editor:cut-to-end-of-line (input.hidden-input)
      2x -0:02.6.0 core:move-up (input.hidden-input)
      3x -0:02.1.0 core:move-right (input.hidden-input)
    

    Non-Core Packages

    atom-ide-ui 0.2.0 
    autocomplete-clang 0.11.3 
    git-pear 1.2.1 
    ide-flowtype 0.14.0 
    ide-typescript 0.1.6 
    journal 0.1.1 
    language-typescript-grammars-only 1.6.0 
    linter 2.2.0 
    linter-clang 4.1.2 
    minimap 4.29.6 
    racer 0.20.0 
    real-time 0.1.0 
    sort-lines 0.15.0 
    toggle-quotes 1.0.1 
    
    bug 
    opened by maxbrunsfeld 40
  • [Discussion] Would you be willing to consider a different Language Server?

    [Discussion] Would you be willing to consider a different Language Server?

    Has it ever been considered to switch away from SourceGraph? I was unable to use this plugin due to having symlink cycles (because I'm using lerna) and my understanding is that the SourceGraph team does not want to support this use case. I feel like in a lot of projects this leaves the plugin completely broken and infinitely using CPU until the process runs out of memory.

    As a proof of concept I forked this repo and used Theia Language Server which at the moment seems to be a bit better maintained. My proof of concept is up at https://github.com/mattlyons0/ide-typescript-theia ~~(and does have a few rough edges, on my Mac the tsserver is failing to find node on startup (which can be solved by toggling the plugin disabled then enabled after startup) but its working fine on my Linux box).~~ (fixed in https://github.com/theia-ide/typescript-language-server/pull/88 ) It seems to have better performance, no more infinite loops and a bit better feature support than SourceGraph (formatting hook is supported). ~~The only downside I found is that the outline is no longer a tree but all on the same level, I'm not quite sure why this is (or how the tree is generated) but the responses to textDocument/documentSymbol after a brief investigation seemed to be identical.~~ This has been fixed upstream: https://github.com/theia-ide/typescript-language-server/pull/69

    In summary I'm wondering if you have considered switching to a different Language Server, especially given how easy it is and the issues that have been cropping up with SourceGraph: #70 #95 #113 to name a few... Also I've noticed that hyperclicking into definition files actually works and doesn't open a broken URL which is a plus. All in all I feel the Theia Language Server has been rock solid and solves many issues with the current SourceGraph Server.

    opened by mattlyons0 23
  • support for decorators

    support for decorators

    Wher I can set this option? image Experimental support for decorators is a feature that is subject to change in a future release. Set the ‘experimentalDecorators’ option to remove this warning.

    opened by Hokid 21
  • Document formatting

    Document formatting

    One of the things that I had used before the ide package was an eslint package that would fix many basic problems on file save (whitespace, some other things, can't remember now what else). This was incompatible with the ide-typescript package (was it eslint?), but i'd be curious if similar functionality was coming to the core ide-typescript package, or there are other packages that make good compliments to this package.

    I'll hang up and listen ;)

    enhancement 
    opened by jbjonesjr 14
  • Failed to activate the ide-typescript package

    Failed to activate the ide-typescript package

    A few things to know before you create an issue

    • This package requires Atom 1.21
    • We launch a "language server" process on your machine that understands the language you are editing
    • What that server can do - syntax compatibility, whether it supports formatting or outlines etc - is outside of our control
    • You can see what the language server supports by checking out our README and following the link after "powered by"
    • "disconnected", "JSONRPC" or "Content-Header" errors indicate that server process died. We're working on better recovery right now

    If you have understood all this, please remove this text and start writing your issue :)

    opened by rajanbhadauria 13
  • Autocomplete shows irrelevant suggestions

    Autocomplete shows irrelevant suggestions

    After updating the package to the latest version, 0.7.3, everytime I type a space or colon character in a .js file, I start to see irrelevant suggestions for things like SVGFEFuncBElement or SVGFEMergeNodeElement (see image below). This makes the editor unusable since everytime I do a space, colon, or semi-colon character followed by a return, I will accidentally choose an autocompleted snippet I don’t want.

    screen shot 2018-02-21 at 1 59 44 pm

    My installed snippets no longer show up at the top. Instead, the show up at the bottom of the autocompletion list or not at all. Disabling ide-typescript returns behavior to the normal, expected behavior.

    If I downgrade ide-typescript to 0.7.2 by running apm uninstall ide-typescript and then apm install [email protected], then my snippets and autocompletions show up as expected again (see image below). I am not sure what the cause of this is.

    screen shot 2018-02-21 at 2 07 19 pm

    Related issues: #91

    opened by andrictham 13
  • Intellisense takes a significant amount of time to display suggestions.

    Intellisense takes a significant amount of time to display suggestions.

    I installed this package via apm install atom/ide-typescript

    I am not sure how to start the language server or even know if it's working .

    Could you please provide some insight on what to expect and how to determine if the service is working properly.

    bug blocker 
    opened by rwatts3 13
  • "Error: Cannot use JSX unless the '--jsx' flag is provided" when using "extends"

    My tsconfig.json has compilerOptions.jsx="react" that comes from an "extends" property. I'm seeing this error.

    {
      "extends": "./node_modules/[buildsystempackage]/tsconfig.json",
       ...
    }
    
    opened by elado 12
  • Cannot update ide-typescript

    Cannot update ide-typescript

    I keep getting the same issue when I try to update ide-typescript to version 0.6.1. EBUSY: resource busy or locked, rmdir 'C:\Users\Cruckshank\.atom\packages\ide-typescript' I'm using Atom version 1.12.0-beta0 2017-09-15

    opened by petercr 12
  • Typescript compilation

    Typescript compilation

    Hi, is there any doc explaining how the compilation works? In my project "tsc" return no error. ide-typescript finds hundreds of errors. It looks like it is using some outdated Typescript version. Can this be somehow configured?

    I even got error on "import * as React from 'react';" - File '/Users/tomi/Github/packages/webpack2-typescript-2/node_modules/@types/react/index.d.ts' is not a module.

    But overall the first look is impressive!

    opened by tomitrescak 12
  • Linting Types is Overstepping

    Linting Types is Overstepping

    I'm using this server to get just the JavaScript features and have the flow server installed as well. I'm getting errors about defining flow types in my JS files. There should be some better detection of typescript before it applies the linting rule.

    opened by wldcordeiro 12
  • "Enable Atom-Typescript for JavaScript files" is always enabled

    Prerequisites

    Description

    The setting "Enable Atom-Typescript for JavaScript files (experimental)" will not disable such that the setting is remembered after a reset.

    Steps to Reproduce

    1. Click to get the setting "Enable Atom-Typescript for JavaScript files (experimental)" unchecked.
    2. Restart Atom.

    Expected behavior:

    See that the setting is not in effect and "Enable Atom-Typescript for JavaScript files (experimental)" remains unchecked after the restart.

    Actual behavior:

    The setting is still in effect (and "Enable Atom-Typescript for JavaScript files (experimental)" is checked again.)

    Reproduces how often:

    100%

    Versions

    Atom : 1.51.0-beta0 Electron: 5.0.13 Chrome : 73.0.3683.121 Node : 12.0.0

    apm 2.5.0 npm 6.14.5 node 10.20.1 x64 atom 1.51.0-beta0 python 2.7.15 git 2.21.0

    Additional Information

    N/A

    opened by brettz9 1
  • ide-typescript package is interfering in autocomplete-plus package

    ide-typescript package is interfering in autocomplete-plus package

    First, thanks to the developers of this great package ide-typescript. It is great alongside atom-ide-ui package. However, I've discovered that ide-typescript is interfering in autocomplete-plus package, causing this last one to not show suggestions of common words already typed in the code. For example, if I have typed the term "student" in the code or in comments and retype the same word, the autocompletion is not showing the related suggestion when ide-typescript package is activated. So, in order to to have back the autocomplete service in a full way I have to deactivate the ide-typescript, what is really sad.

    opened by ronaldreis3000 1
  • [Feature] Add support for

    [Feature] Add support for "compileOnSave"

    Hello,

    I'd love to have a feature called "compileOnSave". Currently, I have to launch a separate Terminal window and call tsc -w in my project and that's a bummer in a way. tsconfig.json Allows IDEs to check for that attribute and act accordingly:

    I know that atom-typescript supports it and it looks like WebStorm does to. I wonder how hard it would be to implement it. If it's easy enough, I'd try it anyway.

    What are your thoughts on this?

    opened by ptusch 1
  • Problems when used together with ide-vue

    Problems when used together with ide-vue

    When ide-vue and ide-typescript are used together, intellisense javascript support is in .js files but not in .vue, if desative the ide-typescript package would have support again for .vue but not for javascript, some recommendation on this ?? it is uncomfortable when working with nodejs to activate one package and then the other but when I work on both at the same time nodejs and vue there is where the problem is real, thanks for everything

    opened by edarblanco 0
  • Suppress certain warnings for JavaScript

    Suppress certain warnings for JavaScript

    After updating to 0.8.0 I'm really happy with the new language server and expanded diagnostics, but I'm getting a type of warning while working in JavaScript specific to TypeScript.

    For example:

    const nodemailer = require('nodemailer');
    

    The base package for Nodemailer doesn't have an implementation for TypeScript, which I assume triggers this warning:

    Could not find a declaration file for module 'nodemailer'. 'c:/###/node_modules/nodemailer/lib/nodemailer.js' implicitly has an 'any' type. Try npm install @types/nodemailer if it exists or add a new declaration (.d.ts) file containing `declare module 'nodemailer';

    This occurs with several packages including ffmpeg-static, child-process-promise, and others.

    I'm not aware of any way to set up configuration for the new language server, but adding a way to suppress specific warnings like these would be really helpful, similar to eslint's config. Or at the very least, maybe a simple filter before the linter warnings are consumed?

    opened by jbrew138 10
Releases(v0.8.0)
Owner
Atom
Free and open source text editor, brought to you by GitHub
Atom
A pure PHP implementation of the open Language Server Protocol. Provides static code analysis for PHP for any IDE.

A pure PHP implementation of the open Language Server Protocol. Provides static code analysis for PHP for any IDE.

Felix Becker 1.1k Jan 4, 2023
Magento 2 Debug Helper Module for easy debugging with Xdebug and PHPStorm or any other IDE

Magento 2 Debug Helper Information and Usage Magento 2 Debug Helper Module usage with PHPStorm and Xdebug Installation To install the Magento 2 Debug

Dmitry Shkoliar 13 May 24, 2022
PHP Text Analysis is a library for performing Information Retrieval (IR) and Natural Language Processing (NLP) tasks using the PHP language

php-text-analysis PHP Text Analysis is a library for performing Information Retrieval (IR) and Natural Language Processing (NLP) tasks using the PHP l

null 464 Dec 28, 2022
A repository for showcasing my knowledge of the PHP programming language, and continuing to learn the language.

Learning PHP (programming language) I know very little about PHP. This document will list all my knowledge of the PHP programming language. Basic synt

Sean P. Myrick V19.1.7.2 2 Oct 29, 2022
Michael Pratt 307 Dec 23, 2022
The Assure Alliance support website. This website is based on Questions2Answers and is a forum for support using Biblical Tools

The Assure Alliance support website. This website is based on Questions2Answers and is a forum for support using Biblical Tools

United Bible Societies Institute for Computer Assisted Publishing 3 Jul 29, 2022
This project is very diverse and based upon many languages and libraries such as C++, Python, JavaScript, PHP and MQTT

ADMS-Real-time-project This project is very diverse and based upon many languages and libraries such as C++, Python, JavaScript, PHP and MQTT Advance_

Nitya parikh 1 Dec 1, 2021
Medical Master or "Medic-M" was built to reduce the hassle of buying medicine, provide medicine to the sick in a short time. It is an HTML, CSS, JAVASCRIPT and PHP based system.

Medical Master (Medic-M) | WELCOME TO Medic-M(MEDICAL MASTER) | | Introduction | Medical Master or "Medic-M" was built to reduce the hassle of buying

NILOY KANTI PAUL 5 Oct 8, 2022
Demo Silverstripe and JavaScript sources for Lightning Talk "FormField Mini Apps" at StripeCon EU 2022

Watch the Lightning Talk on Youtube ?? Demo repository for Lightning Talk "FormField Mini Apps with the JavaScript framework/lib/style of your choice"

Julian Scheuchenzuber 2 Sep 20, 2022
A high-level machine learning and deep learning library for the PHP language.

Rubix ML A high-level machine learning and deep learning library for the PHP language. Developer-friendly API is delightful to use 40+ supervised and

Rubix 1.7k Jan 1, 2023
Simple custom chat bot developing framework for telegram, qq and more in PHP (the best language)

RinoBot RinoBot 是一个为统一聊天机器人扩展开发的框架,编写一份插件用于多种机器人协议。 简体中文 | English ?? 开发中 ?? 暂不适用于生产环境 特性 插件扩展机制 一份代码运行于多平台多协议机器人 并减小开发难度 插件提供 Yaml 配置 供使用者修改 基于机器人 We

LixWorth 3 Apr 18, 2022
This is a plugin written in PHP programming language and running on the PocketMine platform that works stably on the API 3.25.0 platform

This is a plugin written in PHP programming language and running on the PocketMine platform that works stably on the API 3.25.0 platform. It allows you to hear the sound

Thành Nhân 10 Sep 27, 2022
Authoring Tool and Language Workbench for Online Courses

Authoring Tool and Language Workbench for Online Courses

sellquiz 1 Feb 2, 2022
Rubix ML - A high-level machine learning and deep learning library for the PHP language.

A high-level machine learning and deep learning library for the PHP language. Developer-friendly API is delightful to use 40+ supervised and

Rubix 1.7k Jan 6, 2023
This example shows how to use Anychart library with the PHP programming language, Laravel framework and MySQL database.

PHP basic template This example shows how to use Anychart library with the PHP programming language, Laravel framework and MySQL database. Running To

AnyChart Integrations and Templates 23 Jul 17, 2022
BitTorrent library for encoding and decoding torrents in PHP language.

PHPBitTorrentLib BitTorrent library for PHP. This library been tested and works on PHP 7.4+, it originally was just a project to handle the process of

Lee Howarth 3 Dec 19, 2022