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>
When copying resource from `{repositoryRootPath}/resources/win/*` to `{bundledResourcesPath}/cli/*`, omitted the {repositoryRootPath}.
Co-authored-by: yoonhyung <yoonhyungkim@webida.org>
Prior to #15302, we wanted to make sure the component had rendered the
hidden input when receiving the focus event. To do so, we added some
workarounds for scenarios where the focus event was triggered before the
component had the chance to detect it was attached or visible.
After that pull-request, however, we always render the hidden input
independently of which events the component has observed, thus making
those workarounds not necessary anymore.
Please, note that we decided not to include this commit's changes in
beta, and want to let them bake for a full release cycle instead.
Co-authored-by: sadick254 <sadickjunior@gmail.com>
Adds the npm_config_jobs env variable across build scripts that may benefit from it (ones that run apm install). This variable is used by node-gyp to compile native code with a number of threads equal to the reported CPU core count
Refactors the codes that were responsible for updating different parts of TextEditor out of update function, and, then, it uses those refactored functions directly, which bypasses the loop and switch case inside update.
`finishUpdate` is also refactored to allow finishing update of TextEditor from inside the update functions without the need for creating objects outside and passing them in.