The startup script now uses a `Set` to manage `GitDiffView`s held in memory and destroy them when `deactivate` is called.
There are now four major subscription blocks.
1. The outer subscriptions held by `activate`.
2. The per-editor subscriptions held within `activate`.
3. The per-editor repository event subscriptions held within each `GitDIffView` instance.
4. The per-editor modification event subscriptions held within each `GitDiffView` are only active when the editor content is bound to a valid git repository.
Teardowns of any editor or the module now result in `disposal` of the respective editor's subscriptions or all subscriptions authored within the module.
I removed some of `GitDiffView`'s unnecessary methods such as the `start`, `cancleUpdate`, `addDecoration` and `removeDecorations`;
The last two methods were combined into the body of `updateDiffs`.
`scheduleUpdate` now calls `requestAnimationFrame` instead of `setImmediate` because it's native, standard, and yields
to other more important browser processes. I know Atom Core implements setImmediate, but rAF seems to work just as fast if not faster.
The memory management of the editor markers and diffs have been joined using a WeakMap. When the diffs are destroyed,
so too are the editor markers.
Finally, I added the `destroy` method to handle the teardown of subscriptions and other destroyable objects contained within the `GitDiffViews` before object release.
- This fixes the incompatible native module detection for the packages
that require their .node files lazily
- Speeds up the performance of detection by directly require .node files
instead of requiring the package
Update of the default syntax themes to implement [naming conventions](https://github.com/atom/flight-manual.atom.io/pull/564) for syntax scopes.
Adds the [template](https://github.com/atom/apm/pull/883) to each theme with custom colors, to accommodate the naming conventions. There should be no compatibility break with existing grammars.
As naming conventions are implemented in more language grammars, their old specific stylesheets can be retired.
Fedora's script tries to coerce all shebangs
to point to exact, system-provided binaries.
For example: `#!/usr/bin/env sh` becomes `#!/usr/bin/sh`.
Starting with Fedora 30, the script errors out when it encounters
ambiguous, versionless `python` in shebangs.
(`python2` and `python3` are allowed.)
For example, this shebang causes an error: `#!/usr/bin/env python`.
---
Disable this script for two reasons:
1) Fedora users should be able to build Atom without errors.
2) Consistent shebangs across builds of Atom on Ubuntu and Fedora.
See: https://github.com/atom/atom/issues/21937 for more details.
Fixes: https://github.com/atom/atom/issues/21937
@babel/core 7.12.10 partly breaks when used with
Atom's custom require.resolve() function.
That in turn breaks the loading of the "github" package.
See https://github.com/atom/github/issues/2620 for details.
A `TypeError` raised when a certain file, or lack thereof, causes Atom to open improperly, without the side pane appearing. To fix this, users must clear their Atom window state, then reopen the program. Add a notification when this error occurs with information on how to resolve it.
Co-authored-by: Sadick <sadickjunior@gmail.com>
Co-authored-by: Amin Yahyaabadi <aminyahyaabadi74@gmail.com>