-
Add custom configurable strict autocompletion filter
This adds a few setting toggles to configure autocompletion suggestion filtering behaviour.
- Remove obsolete scripts/tsconfig.json
- Add typed-config.js, add a paragraph on config schema in CONTRIBUTING.md
- Update prettier; remove dependency on ts-node
- [CI] Switch to GitHub actions
- Remove debug log
- More careful cleanup on package disable
- Rebuild bugged bundle
- Fix loader in dev mode
- Use a more robust highlighter
- Pull allowed extensions from grammar definitions
- Enable completion in comments (for reference directives)
- Large file optimization for updating outline (Amin Yahyaabadi)
- Add "typescript:reveal-in-semantic-view" command (Amin Yahyaabadi)
- [Fix] Fix package deps format
- Optimize semantic view editor scrolling event handler
- Update bundled typescript to v4.2.3
- Bump dependencies
- Add more options to
importModuleSpecifierPreference
, which now includeshortest
andproject-relative
.
- Failed to build assets before releasing v14.1.1. Need to automate this somehow probably.
-
A few tweaks to autocompletion
First, the bug with passing triggerCharacter to tsserver introduced in the previous release has been fixed.
Second, the suggestion filtering has been relaxed, and is done via fuzzaldrin instead of built-in tsserver prefix filter. The effect is that misspelled identifiers now should always find correctly spelled suggestions, while previously this only worked sometimes.
- Add docs on setting user preferences in tsconfig
-
Show refactors with code actions
This is intended to help with discovering and using refactors. Only really works with intentions ui.
-
Make tsserver user preferences configurable
The following options added to the package settings:
importModuleSpecifierEnding
importModuleSpecifierPreference
quotePreference
includeCompletionsForModuleExports
(experimental)
Additionally, these (and other) settings can be configured in
tsconfig.json
by addingpreferences
property to the top-level JSON object, e.g.{ "compilerOptions": {}, "preferences": { "quotePreference": "double" } }
You can find the full list of user preference options with descriptions in the TypeScript sources
Not all of these are supported by all TypeScript versions. Setting some options can also break things, so tread carefully.
Note that
includeCompletionsForModuleExports
controls autocompletion behaviour: if it is enabled, autocompletions from all project module exports will be added for "bare" identifiers. Whether this is desirable depends on your perspective and the project you're working on, hence the option is opt-in. -
Add support for completions with code actions
Some completions (e.g. ones for externally-defined identifiers) can require additional actions for the code to work. Atom-TypeScript now supports such completions and should apply the required actions (like adding
import
directives)
- Send triggerCharacter to tsserver
- Add triggerReason to getApplicableRefactors invocation
- Do not enable debug in dev mode
- Use external atom-ide typings (Amin Yahyaabadi)
- Downgrade atom-package-deps to a working version
- Fix atom-package-deps
This release primarily focuses on improving latency.
-
Updated bundled TypeScript to v4.0.3
-
Most of the package is bundled as a single JavaScript source, which reduces start-up times. The flipside is that hacking on Atom-TS is a bit more involved; see CONTRIBUTING.md for details.
-
We're disabling eager prefetch of suggestion details (type and documentation) for latency reasons. Instead, those will be fetched lazily once the suggestion is selected.
-
Built-in occurrence highlight provider is temporarily suppressed while the text is being edited.
The rationale behind this is to avoid spamming tsserver with useless requests. As a consequence, you might experience a slight delay when using the feature immediately after changing the text.
You can tweak the experience by adjusting
occurrenceHighlightDebounceTimeout
option (see below).
-
Make occurrence highlight delay configurable when using built-in provider
The delay is configurable via
"atom-typescript.occurrenceHighlightDebounceTimeout"
option ("Occurrence Highlight Debounce Timeout" in settings GUI). The default value of 300ms is consistent with the default Atom behaviour. -
Make getErr delay configurable instead of relying on Atom default
The delay is configurable via
"atom-typescript.getErrDebounceTimeout"
("getErr Debounce Timeout" in settings GUI). The default value of 150ms is about half as low as before, which should hopefully help with the percieved latency.
- Reduce the number of spurious documentHighlights requests when using builtin provider
- Remove geterr delay in on-change check
- Fix multistep support detection code
- Update dependencies
- Bump travis host os version
- Wake-up Node event loop periodically while awaiting response
-
Clarify the "Show problems for project" config (thanks aminya)
New title: "Check all project files on save"
New wording: "Enabling this will report all problems in the current project when the current file is saved (this can be slow if the project is big!)."
-
getLinterErrors optimizations
Performance on larger projects could be not great. Hopefully these changes make it better.
- Improve semantic view colors slightly
- Colorize semantic view icons according to item type
- Show access modifiers by a colored dot
This changes the style of builtin semantic view. You can revert to old style (where access modifiers were shown by icon color) by adding the following code to your stylesheet (Edit → Stylesheet...):
@import "syntax-variables";
.atomts-semantic-view {
.icon::before { color: inherit; }
.modifier-public::after,
.modifier-protected::after,
.modifier-private::after { content: ""; }
.modifier-public::before { color: @syntax-color-renamed; }
.modifier-protected::before { color: @syntax-color-modified; }
.modifier-private::before { color: @syntax-color-removed; }
}
- [Hotfix] Scoped ignore settings
-
Scoped ignore settings
The following settings are now scoped to grammar scope:
- suppressAllDiagnostics
- ignoredDiagnosticCodes
- ignoreUnusedSuggestionDiagnostics
- ignoredSuggestionDiagnostics
- ignoreNonSuggestionSuggestionDiagnostics
- unusedAsInfo
-
Sort outline view items for atom-ide-ui by occurrence in file
For consistency with builtin semantic view
-
Bump dependencies
-
Update bundled TypeScript to 3.9
-
Add typescript:activate command to force activation
Useful for forcing one-off activation on JavaScript files
-
Add mjs and cjs to default js file extensions
mjs and cjs extensions were introduced in Node as "ES module file" and "CommonJS module file".
-
Option to ignore non-suggestion suggestion diagnostics
TypeScript server reports some error-type diagnostics on the suggestion channel. Enabling
atom-typescript.ignoreNonSuggestionSuggestionDiagnostics
("Ignore suggestion diagnostics that are not actionable suggestions" in UI) option will suppress those.
- Faster package deps installation (#1547) (Amin Yahyaabadi)
- Update dependencies; Bundled TypeScript to 3.8.3
- Add ignoredSuggestionDiagnostics option
-
Tweak autocompletion prefix detection
Use ES6 valid identifier as matched/replaced prefix. This should more or less cover most common use cases, unlike brittle heuristics that were used before. Please report any issues with autocompletion prefix replacement.
-
Avoid adding parentheses on autocompletion if they already exist further in line
-
Update FAQ
-
Add configurable tsdk path options
This adds an ability to specify custom TypeScript SDK per-project or globally (the latter will replace bundled TypeScript version)
The overview of how Atom-TypeScript decides what SDK it should use and how to configure that is available in
docs/advanced.md
-
A new configuration option
autocompleteParens
("Autocomplete parentheses" in Atom settings UI) to insert parentheses after autocompleting functions/methods (disabled by default) -
Hyperclick on the definition will now show references to the definition. Previously it did nothing. With many thanks to Joon Kyoung.
-
A new configuration option
checkAllFilesOnSave
("Show problems for project" in Atom settings UI) to automatically check all files on file save (disabled by default). With many thanks to Joon Kyoung. -
A new configuration option
sigHelpDisplayOnChange
("Display signature help tooltips on keystroke"), which controls whether signature help is displayed on keystroke (enabled by default).Even when this option is disabled, one can manually open signature help tooltip with
typescript:show-signature-help
command. -
Support multi-step command reports from tsserver when available.
One particular effect of this feature is that on newer TypeScript versions, check-all-files reports completion about 2 seconds faster.
With many thanks to Joon Kyoung.
- [CI] Test for stray untracked files
- [CI][Stale-bot] Don't mark enhancement issues as stale
- Add typings for
atom-package-deps
- Add docs note on
init.js
vsinit.coffee
- Bump bundled TypeScript to 3.7.5
- Remove stray console.log
- More autocompletion tweaks
- Tweak autocompletion prefix heuristics
- Fix #1530
- Fix replacement prefix case bug
-
Add missing files
This fixes a packaging bug in 13.4.1
-
Rework replacement prefix heuristic in autocompletion
This hopefully fixes an array of relatively infrequent, but annoying bugs when confirming an autocompletion suggestion would remove some part of the preceding code. See #1528 for an example.
-
"Scrollable" builtin signature help
Now builtin signature help only displays one signature, and signatures are "scrollable" using
typescript:typescript:signature-help-next
andtypescript:signature-help-prev
commands, bound toPage Down
andPage Up
by default. -
Tooltips now include JSDoc tag information (i.e.
@param
,@return
, etc) (via Pull request #1523 from Jérémy Flusin)Notice this changes some CSS used in tooltips. Builtin tooltips are particularly affected. If you're using custom CSS, we're sorry for the inconvenience.
-
Add "<" as signature help trigger character
This brings signature help more in-line with how tsserver expects things to work. The visible result is that signature help is displayed for React components in JSX.
-
Bundle TypeScript 3.7
- Fix #1522 (subscription disposal race condition)
- Fix #1509 (catch errors from pixelPositionForBufferPosition calls to dying editor views)
- Fix #1503 (tree-sitter compatibility for "find references" views)
- Grammar and wording fixes in docs (Beth McIntosh)
- Use className in JSX instead of class
- Force LF newlines in generated files
- Bump dependencies
- Bump atom-highlight version
- Rename File command
- Allow autocomplete in strings
- Use onDidChangeText instead of onDidStopChanging for tracking buffer modification
- Bump dependencies
-
Disable instance-per-tsconfig by default; make it configurable
Back in v12.7.0, a change was introduced to spawn a separate tsserver instance per
tsconfig.json
file. This effectively made project assignment for source files referenced in several projects deterministic. However, this same change can prevent external declaration files (like ones innode_modules/@types
) from being reloaded by tsserver even when they are opened in Atom, which is by far a more common thing to want than deterministic project assignment.So, the instance-per-tsconfig code is now disabled by default. You can enable it in the Atom-TypeScript settings. The option is called
tsserverInstancePerTsconfig
and is titled "Spawn separate tsserver instance for each tsconfig.json" in the settings GUI.
- Auto-add json extension to config file path if it's missing
- Recursively load extended config
TL;DR: TypeScript prior to v1.5.3 is no longer supported.
-
Use documentHighlights instead of occurrences
-
Use TypeScript API for parsing
tsconfig.json
Notice: currently, the bundled TypeScript implementation is used. This should work fine in most cases, however, some edge cases might produce confusing behaviour (e.g. Atom-TypeScript might parse
tsconfig.json
, buttsc
might not -- or vice versa). Please report any issues related totsconfig.json
parsing. -
Remove dependency on
tsconfig
npm moduleThis module was used to parse
tsconfig.json
more or less "like TypeScript". The module is essentially unsupported at this point. There is little reason to try to use it nowadays.
This essentially makes it so TypeScript prior to v1.5.3 is no longer supported. TypeScript v1.5.3 has been released in July 2015, so I feel that it's old enough to be nearly ubiquitous. If you need to work with TypeScript prior to v1.5.3, please use older release of Atom-TypeScript.
On the plus side, inherited tsconfig.json
should work as expected now.
-
Crashed server is restarted on demand only
In v12.7.0, a feature was added that would auto-restart tsserver if it crashed, but it did contain a guard against crash-loop (to avoid hogging system resources). This decision evidently lead to some confusion, so now the crashed tsserver is only restarted on demand, i.e. if there is a need for a running instance. This should all happen in background. On the upside, now there's no limit to how much tsserver can crash before it's no longer auto-restarted, so it generally should work more consistently.
- Dispose of Linter in errorPusher properly
- Inherited
tsconfig.json
should work as expected now due to switching to TypeScript-supplied config parser.
-
Update bundled TypeScript to v3.2.2
-
Fix typo in
package.json
(Wes Moberly) -
Add proper LICENSE text
Atom-TypeScript has always been licensed under the MIT license, but the license text was missing, instead the license file only contained the word "MIT". This has been fixed.
-
Remove bogus await
-
Clean up errorPusher code
-
Remove outdated comments
-
Removed dangling grammar settings
-
Add support for new completionInfo command, avoid using deprecated completions
Since v3.0.0, TypeScript deprecated old completion commands, and instead implemented new ones. Since we obviously want to support TypeScript prior to v3.0.0 for the time being, the new interface is preferred when available, but Atom-TypeScript will fall back to the old one on TypeScript versions prior to v3.0.0.
- Clean up tooltip code; Do not try to show tooltips on destroyed editors
- Auto-restart tsserver syncronously to avoid race conditions
- Catch and properly report tsconfig parse errors
-
Bundled TypeScript version updated to 3.1.6
-
Made config-file selection deterministic
Now a separate tsserver instance is started for each
tsconfig.json
. This has a result of the closesttsconfig.json
(wrt directory hierarchy) always being selected for the typescript file. This should make cases where the same file is be used in multiple TypeScript sub-projects less confusing to deal with. -
Atom-IDE interfaces are preferred to builtin ones if available. This includes tooltips, occurrence markers, etc. Most of these changes can be reverted by choosing appropriate preferences in the Atom-TypeScript settings.
-
Made tooltip position configurable
-
Experimental support for
allowJS
andcheckJS
. This needs to be explicitly enabled in the settings -
Added "signature help", i.e. function arguments tooltip
-
Added the ability to restart tsserver; it will also be auto-restarted on crashes, if those don't happen too frequently
-
Added support for more atom-ide interfaces, namely:
- Find References
- Definitions
- Outline
- Code Highlight (occurrence highlight)
- Busy Signal
Built-in options are still available via settings.
-
Implemented intentions highlight interface
- Fixed yet another applyEdits operation ordering bug
- Don't try to compile on save if compileOnSave is false/unset in
tsconfig.json
- Fixed a couple status panel display bugs (status/progress)
- Added nuclide to list of packages providing UI components (so that there is no prompt to install atom-ide-ui when nuclide is already present)
- Fix tsconfig path display bug. The display is deferred until the config path is resolved in the first place.
- A lot of fixes wrt floating promises.
- Some synchronization fixes
- Use newer Atom API for text changes
- Simplify change command invocation
- Update dependencies
- Moved built status update to TSBuffer (avoid multiple updates); ensure no change event interleaving
- Add a rule against floating Disposables
- Wait a bit longer on checkAllFiles
- Added no-unbound-method rule
- Clean autoCompleteProvider code somewhat
- Do not expose withTypescriptBuffer; don't create temporary ts buffers
- Simplify client code a bit
- Removed client accessors from TypeScriptBuffer
- Tweak some typings (formatting, etc)
- Enable definition checking; fix definitions
- Defer requiring SemanticView until needed
- Major rewrite of TypescriptEditorPane
- Split commands/clearErrors to separate files
- Handle promises in occurrence controller appropriately; clear saved markers
- Move occurrence handler into a pluggable module
- Shorten buffer flush code in autocompleteProvider
- Enabled ordered-imports rule
- Treat TSLint warnings as errors for the purposes of CI
- Switch to typescript-tslint-plugin
- Refactor statusbar; throttle pending updates to reduce statusbar jitter
- Tweak builtin tooltips
- Refactor tooltips
- Isolate tsclient code a little better
- Enabled no-floating-promises rule
- Refactor TypescriptServiceClient.on
- Fix typescript server typing
-
Ensure text edits are always applied in reverse location order
Fixes rename-refactor on TypeScript 3.0
-
Fix spelling of “TypeScript” (Jakob Krigovsky)
- Normalize file path when searching for existing typescript buffer
- Fix #1437
-
Added
typescript:organize-imports
command (needs recent enough TypeScript) -
Added option for suppressing all diagnostics
-
Added an option to ignore unused* suggestion diagnostics specifically
See #1433 for context.
Long story short, TypeScript 2.9 will report unused locals/parameters/etc regardless of tsconfig settings, just with different severity. This option lets you disable those lower-serverity diagnostics specifically.
- Updated dependencies. In particular, bundled TypeScript version bumped to v2.9.2
- Refactored commands code
- Added order to settings
- Configurable tooltip delay
- Removed unneeded tooltip delay
- Allow refactors for empty selection
- Clean-up client code a bit
- Don't ignore insertText autocompletion suggestions
- Minor bugfixes in initializeConfig command
- Enabled no-shadowed-variable tslint diagnostic
- Enabled no-unsafe-any tslint diagnostic
- Fix #1423 (unhandled error when tsserver is terminated)
- Bundle TypeScript 2.8
- Add tslint-language-service to set-up.
- Clean up client code
- Add "suggestion diagnostics"
- Fix autocomplete and codefix for tree-sitter
- Search all panes when opening files (fixes #898)
- Internal code optimizations
- Add applyEdits function that also flushes changes to tsserver
- Add
typescript:refactor-selection
command to show applicable refactors for a selection (Daniel Contreras) - Update to TypeScript 2.7
- Normalize path in ErrorPusher.getErrorsAt
- Implement showExpressionType cancellation
- strict-boolean-expressions
- Fix spec runner
- Accept tree-sitter grammar
- Avoid duplicate
open
command (which confuses tsserver) - Normalize errorPusher path on storage
- Fix #1413
- Fix semantic view display on initial creation
-
Track exprTypeTooltip globally
This should help with tooltips getting "stuck" occasionally.
- [Bufgix] invalid comparison
- Fix TypeScript dependency
- Use external highlighter in tsView instead of MiniEditor
- Should be a little bit more efficient and avoids flickering due to asynchronous tokenization
- Remove $ from find-references line number
- Do not update selectView after resolution
- Avoids unexpected behavior when selectView is canceled before it loads
- Fix symbols-view offset
- Going to an item from symbols-view was offset by 1 character to the right
- Updates for Atom 1.24
- Added an alternative to symbols-view (by russa)
- For file symbols, the same engine is used as for outline view
- For project symbols,
nav-to
tsserver command is used. It requires at least one symbol to search for.
- Improvements to
typescript:return-from-declaration
- All navigation commands (
find-references
,go-to-declaration
, etc) save current editor position - Added new command
typescript:show-editor-position-history
to show backlog of editor positions, thatreturn-from-declaration
will go back to - Editor position history is persisted across Atom restarts (per project). To avoid bloating, total number of history items is limited to 100
- All navigation commands (
- Added
typescript:reload-projects
command- Useful when tsserver isn't aware of new or removed files -- previously this required Atom restart
- Matched substring is highlighted in all select views (like Atom's bundled symbols-view)
- Streamlined TypeScript file detection
- TypeScript file extension is assumed to be one of ".ts", ".tst", ".tsx"
- If it's open in editor, grammar is assumed to be one of "source.ts", "source.tsx"
- A file has to be saved (i.e. have a file path)
- Many internal improvements
- Completely reworked tooltip management
- Most commands are bound to text-editor instead of the workspace
- Object lifetime management improvements
- Removed duplicate and obsolete code
- Fix README link to CHANGELOG (by Fedde Schaeffer)
- Merge pull request #1402 "Center cursor after open in goToDeclaration" by Kai Curtis
- Merge pull request #1280 "Re-adding semantic view" by russaa
- Use BufferedNodeProcess to spawn tsc (fixes 'init tsconfig' on Windows)
- Fix occurrence markers
-
Show build error when "Emit failed" is clicked
-
Re-add progress bar for emit
-
Hide successful build status report "Emit success" after a configurable delay
-
Use Etch as the GUI framework instead of deprecated space-pen or direct DOM manipulation
-
Switch to ES2017 target
-
Update dependencies
-
Add
typescript:initialize-config
command (#1248) (by Paul Ermolin)Command is
typescript:initialize-config
, and it usestsc init
under the hood. Note that this is also an activation command, meaning you can use it without opening a TypeScript file first. However, it determines the project path from currently-active text editor -- if there aren't any text editors open, command doesn't do anything.No keybinding is assigned by default, since this is not a command one would use often.
-
Documentation updates
-
Remove obsolete
filesGlob
snippet -
Don't use deprecated
.editor
class in grammar style -
Add locale setting to control TypeScript's message locale (#1371)
-
Switch to Atom's TypeScript grammar (potentially compatibility-breaking)
We're discontinuing our own grammar in favor of language-typescript, which is bundled with Atom. Please make sure that language-typescript package is activated, we have no way of activating it for you.
-
Cache constructed TypescriptBuffers by TextBuffers.
Hopefully this helps with issues like #1300 and #1332
-
Show tooltip command
Closes #957. Adds
typescript:show-tooltip
command to show type tooltip at current text cursor position. -
Configurable autocomplete-plus
suggestionPriority
Closes #1185. Exactly what it says on the tin, allows configuring priority of TypeScript's autocompletion suggestions.
-
Moved config schema to package.json
This should speed up Atom start-up times, since it doesn't need to load package source until needed.
-
Change target to ES7/2016
Atom supports full ES7 now, so no reason not to, really.
-
Support for atom-ide-ui
No installation prompt if atom-ide-ui or linter is detected, support for atom-ide-ui code fixes.
-
Do not show progress bar for emit
This never worked properly, and a progress bar would get stuck in the panel after emit, so this is treated as a bug and removed for now.
-
Updated installation instructions in README
- Hide Remove redundant autocomplete label text
- Update the grammar to fix several highlighting issues
- Add a framework for writing specs
- Handle multiple directories in NODE_PATH
- TypeScript 2.5: exclude tsconfig.json from project files on emit
- Speed up autocomplete and fix a disposable leak
Please note only breaking changes are logged beyond this point. You can use GitHub's branch/tag comparison tool to get a full changeset, for example, https://github.com/TypeStrong/atom-typescript/compare/v7.0.0...v8.0.0 shows all changes since v7.0.0 until v8.0.0
- Major rewrite using
tsserver
API for the best compatibility with the current versions of Typescript.
- Removed the (already ignored in any significant way)
version
option from tsconfig. More
- Bring back
dts-generator
as using the other mechanism has a few gotchas that might surprise new users. We will remove this feature once microsoft/TypeScript#2338 is officially supported.
- We no longer automatically create a
tsconfig.json
. However we provide a command "TypeScript: Create tsconfig.json project file".
- Feature: Added ReactJS /
.tsx
support
- Removed
dts-generator
support. Reason is that it pollutes the global namespace and is no longer the recommended way for sharing TypeScript code. See microsoft/TypeScript#2338 for the way forward.
- We will now resolve a parent
package.json
for you automatically so that its one less thing you need to configure. 🌹
- New default shortcuts for
build
:F6
angoto definition
:F12
. Because I don't want to mess with your atom defaults and a major use base is VS users. Link #145
- Initial releases