pulsar-ide-typescript
A Pulsar-native IDE provider package for TypeScript and JavaScript
savetheclocktower 1,016 0 0.2.0 MIT GitHub
  • Made for Pulsar!

    This package was written specifically for Pulsar and did not exist in the Atom package repository.

pulsar-ide-typescript

An IDE provider package for TypeScript and JavaScript.

Uses its own copy of typescript-language-server; you do not need to install your own.

Node: use bundled version or bring your own

On Pulsar v1.131.0 and greater, pulsar-ide-typescript is able to use Pulsar’s own embedded Node to run typescript-language-server. If you would prefer to bring your own Node, you can uncheck “Use Built-in Node” in the package settings and specify the path to your own version of Node.

Use bundled version

This setting is enabled by default and will work for the vast majority of users.

Bring your own

This setting is for those who want precise control over the Node version used — for instance, if they want to ensure alignment with the Node version that their project users.

The “Path to Node” setting (or pulsar-ide-typescript.nodeBin) is what will run the built-in typescript-language-server. If you typically launch Pulsar from the command line, the default value of node will almost surely work. Since Pulsar inherits your shell environment, this will usually resolve to the version of Node that would run if you typed node from whatever directory you used to launch Pulsar from the command line.

This is likely to work even with tools like asdf and volta that use “shims” to manage multiple versions of Node.

Even if you launch Pulsar another way, it’s pretty good at recreating your default shell environment, including your PATH. So it’s still worth trying the default value just to see if it works.

If it doesn’t work, you’ll see an error notification explaining that the language server failed to launch. You can open the package settings and supply a full, absolute path to a Node binary of version 18 or greater; you’ll know you’ve entered it properly when the error notification is replaced with a success notification.

What does this package do?

The interaction between Pulsar, IDE provider packages, and IDE consumer packages is hard to explain succinctly, but I’ll give it a try:

  • IDE features are things that typically don’t work without something that can analyze the language you’re working in: autocompletion, refactoring, identifying important symbols, et cetera.
  • IDE “provider” packages (like this one) can perform that analysis; they act as the “brain” behind a bunch of UI features.
  • A couple of these features can be supplied by Pulsar itself through its built-in packages. The rest are implemented in popular community packages like the ones listed below.
  • The user can pick and choose among those packages. If you want a maximal experience, you can install a whole slate of packages. If you want only a few features, you can pick only the packages you want, and uninstall or disable the ones you don’t.
  • Provider packages should not care whether a consumer package is installed for a given service, nor should it mandate that any package be installed at all.

IDE features are great when they make you feel productive, but bad when they get in your way. Because the line between “useful” and “invasive” will vary per person, we want to provide an IDE experience that is, above all, customizable.

What can it do that similar packages can’t?

The formerly first-party ide-typescript package is great, but can’t do quite as much as this package can.

Symbol navigation

This package integrates with recent versions of Pulsar’s built-in symbols-view package.

You can view a comprehensive list of file symbols with Ctrl-R/Cmd-R:

file-symbols

Or search the entire project for symbols via Ctrl-Shift-R/Cmd-Shift-R:

project-wide-symbols

Or use Ctrl-Alt-Shift-Down/Cmd-Opt-Down to jump to the definition of the symbol under the cursor — even if it’s in another file — then use Ctrl-Alt-Shift-Up/Cmd-Opt-Up to return to your original cursor position:

jump-to-definition

Code actions

This package integrates with the popular intentions package to give you a simple menu you can invoke to run code actions or suggested diagnostic fixes.

Ability to ignore certain diagnostic messages

This package allows you to ignore certain kinds of diagnostic messages. You can choose whether to ignore them altogether or just until the file is saved:

intentions

The latter is useful for annoying messages that point out “problems” in your code that you simply haven’t had a chance to fix yet because you’re literally still typing.

Diagnostic messages require the community linter package. The menu shown in the screenshot above is implemented by the community intentions package.

Support for refactoring

You can place the cursor inside of any token and invoke a command to rename it. This package will be able to tell Pulsar which other usages of that symbol need to be renamed as well.

This feature requires the community pulsar-refactor package.

Optional JavaScript support

Like ide-typescript, this package can be configured to start a language server for JavaScript-only projects. Enable the Include JavaScript setting in this package’s settings menu. No separate package is required.

A smaller feature set is available inside of JavaScript projects; autocompletion and symbol providers are sparser with their suggestions, and features like refactoring may not be available at all. Still, you’ll probably be impressed with what it can do.

What exactly does it do?

Install this package, then install any of the following packages to get special features.

Start with these packages; they’re all builtin, actively maintained, and/or built exclusively for Pulsar:

  • autocomplete-plus (builtin)
    • See autocompletion options as you type
  • symbols-view (builtin)
    • View and filter a list of symbols in the current file
    • View and filter a list of symbols across all files in the project
    • Jump to the definition of the symbol under the cursor
  • linter and linter-ui-default
    • View diagnostic messages as you type
  • intentions
    • Open a menu to view possible code actions for a diagnostic message
    • Open a menu to view possible code actions for the file at large
  • pulsar-find-references
    • Place the cursor inside of a token to highlight other usages of that token
    • Place the cursor inside of a token, then view a find-and-replace-style “results” panel containing all usages of that token across your project
  • pulsar-outline-view
    • View a hierarchical list of the file’s symbols
  • pulsar-refactor
    • Perform project-wide renaming of variables, methods, classes and types
  • pulsar-code-format
    • Format code automatically on save
    • Format the selected range of a buffer
    • Format the entire buffer
  • pulsar-hover
    • Hover over a symbol to see a tooltip documenting it (or disable this behavior and use a key binding to show the tooltip)
    • Receive “signature help” when specifying the arguments to a function

Older packages (mainly beginning with atom-ide-) can deliver similar features, but the packages above were largely built specifically for Pulsar.