Comments (6)
Yeah that's part of the problem. Another challenge we need to solve is that even if we only selectively redrawing the buffer, we still need to potentially update/replace the diffs inside the folds without breaking the fold itself. Well, or restoring the fold status after a redraw i guess.
I'd like to avoid manually updating the buffer to match the operation result, so we'd need some logic to calculate a delta from the new status (after a operation or reload) against the current one and then redrawing parts of the buffer based on that delta. Think shadow dom handling, basically.
I definitely feel the frustration just as much though 😅 Going to have a look at that soon-ish
from neogit.
Just wanted to bump this issue since it's a little old now and this is a daily frustration for me as a new neogit user. If someone wants to point out what would be needed to fix this I can have a look when I get the time/I'm tipped over the edge by my frustration. Alternatively I can wait for a fix if it's better done by someone with know how about the code base
from neogit.
This probably is because we redraw the whole buffer after modifying the status.\
@RianFuro What do you think?
from neogit.
This might be a red herring and I apologise if it is I haven't read through all the code myself, but I think https://github.com/wbthomason/packer.nvim uses nvim extmarks to keep track of items and update each specifically in it's UI as plugins are being updated in parallel, the code is in its display.lua
module. That might be a useful insight for what you're describing
from neogit.
I think using extmark is the way to go, but from what I remember from the code, it might need a refactoring on how things are presented.
I guess the idea would be to keep track of the state between redraws and take in consideration the previously set fold level on the first pass directly.
from neogit.
Feels like this has been sorted out. I'm fixing it. Thanks!
from neogit.
Related Issues (20)
- regression in `:Neogit cwd=<cwd>` HOT 5
- Override palette in config HOT 1
- Status - Mapping of `o` is broken now HOT 1
- `use_default_keymaps = false` does not do anything HOT 1
- Setting a hotkey to `false` errors out at startup
- Neogit fails to start when an untracked file name is just a number
- Some neogit buffers break `statuscolumn` HOT 1
- Can't handle `typechange`
- Chevron rendering issues? HOT 1
- exception when initing a new repo (windows + wsl) HOT 1
- Unnamed buffers left in buffer list after closing Neogit
- Fails to parse diffs with submodule changes HOT 1
- "Go to file" is not working HOT 12
- Quitting a Neogit tab should focus previously focused tab HOT 2
- Cannot close last window HOT 1
- Cursor jumps to the top of the screen when saving a file when Neogit is open HOT 1
- Suggestion: Submit commit if .git/COMMIT_EDITMSG is saved and closed HOT 2
- Neogit not workign after update - neogit has not been setup HOT 2
- Errors around stash pop
- Properly Colored Unicode Graphs
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 neogit.