Comments (1)
@nn2242 You're absolutely right; this is a major problem with the current API for observing changes. Unfortunately, it'll take some time to move to a new API. We can't simply emit fewer change events, because the contract of TextBuffer::onDidChange
, which many packages rely upon, is that the events it emits fully describe every change that happens to the buffer.
For backwards-compatibility, we need to introduce a new mechanism for observing changes to the buffer. We're thinking of calling it ::onDidTransact
. This method would call its callback at the end of every transaction, and it will need to pass an object that describes all of the changes that occurred in the Transaction. We're thinking of using the recently-introduced Patch
object to represent the set of changes.
Once we introduce this API, we'll need to migrate all of our packages to use it instead of ::onDidChange
.
We haven't started implementing this, but it is definitely on our roadmap for Atom's performance.
from text-buffer.
Related Issues (20)
- Unsaved files reloaded from state don't set modified flag correctly
- After update to 1.14.2 issues with opening large files HOT 7
- text-buffer does not install on Windows HOT 3
- Replacing multiple characters with newlines in a scanInRange only replaces the first occurence HOT 5
- Regular expressions containing \W are multi line.
- TextBuffer v13 fires spurious conflict & reload events HOT 1
- Flaky test - TextBuffer IO when the file changes on disk does not fire duplicate change events when multiple changes happen on disk
- onDidStopChanging and undo Regression in Atom 1.19.4 HOT 4
- existsSync method is necessary; should be reflected in comment HOT 3
- Tracking undo-redo actions HOT 1
- API documentation references DisplayLayer, which is not public
- Missing stub method 'scopeDescriptorForPosition' in NullLanguageMode HOT 1
- 'did-change-text' event is not fired on empty("") to empty("") change after PR#274 HOT 11
- DisplayLayer.updateSpatialIndex error HOT 1
- undo/redo within transact
- Implementing capture groups HOT 1
- TextBuffer makes vim word motion painfully slow in large file HOT 2
- new TextBuffer(); .setFile(...); .reload(); -> .emitDidChangeEvent missing HOT 4
- h HOT 1
- NullHighlightIterator defines getOpenTags/getCloseTags, but everywhere else it's getOpenScopeIds/getCloseScopeIds
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from text-buffer.