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)
- Is it possible to disable curosrline highlightings but keep context highlightings?
- unstaging a highlighted section in an staged but untracked file does not work HOT 6
- Float window cannot be split HOT 1
- NeogitWinSeparator has no default highlight
- Vertical split commit popup throws an error when closing or commiting in vsplit
- Tab not focused for secondary git repo the first time Neogit is opened
- Neogit fails to close staged diff split if commit editor is split instead of tab HOT 3
- Async errors + Neogit showing outdated state: neogit/lib/buffer.lua:349: Invalid buffer id: 44 HOT 15
- "Recent commits" section does not show if there are unmerged commits HOT 3
- ...al/share/nvim/lazy/neogit/lua/neogit/lib/item_filter.lua:18: bad argument #1 to 'new' (table expected, got boolean)
- `attempt to compare nil with number` when staging via visual-lines selection HOT 1
- Neogit showing incorrect/duplicate data in status buffer HOT 11
- Neogit starts producing errors when calling `neogit.open` twice from different `pwd`, OR when using a zsh terminal that runs the `powerlevel10k` theme
- regression: using neogit with external prompt for SSH freezes neovim HOT 4
- Opening the diff to a commit results in an error HOT 1
- 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
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.