macvim-dev / macvim

Vim - the text editor - for macOS
https://macvim.org
Vim License
7.47k stars 680 forks source link

Slow buffer updates with Undotree plugin #1420

Open jgvanwyk opened 12 months ago

jgvanwyk commented 12 months ago

Undotree is a plugin that adds a visual representation of Vim's undo tree. When this tree view is open, certain operations (undo, redo, joining lines) are slow in the GUI, but not in the terminal.

To reproduce:

  1. Add the Undotree plugin to ~/.vim/pack/mbbill/opt/undotree so that it will be found by packadd:
    mkdir -p ~/.vim/pack/mbbill/opt
    git clone https://github.com/mbbill/undotree ~/.vim/pack/mbbill/opt
  2. Start MacVim with mvim -u vimrc where vimrc is
    set nocompatible
    set undofile
    packadd undotree
  3. Open the undo tree visualiser added by Undotree: :UndotreeToggle
  4. Insert 100 lines: 100ii<CR><Esc>
  5. Go the first line: gg
  6. Join all the lines: Hold J

There should be noticeable lag. Now repeat steps 1-6 except with mvim -v -u vimrc in step 2. Joining the lines should be quite snappy.

I've attached two videos below showing the behaviour in each case, and I've included my system details.

GUI:

https://github.com/macvim-dev/macvim/assets/123784102/4e1828c4-4e40-4f29-9171-6c77a1b15f9e

Terminal.app:

https://github.com/macvim-dev/macvim/assets/123784102/26cc3bda-fd04-4165-9bd1-712da0132d45

System details: OS: macOS Ventura 13.4 arm64 Shell: zsh 5.9 Terminal: Terminal.app $TERM: xterm-256color Vim: Downloaded from GitHub Releases

ychin commented 12 months ago

I can reproduce this, but not 100% what the cause is yet. It's probably the renderer. Will probably need to take a look a little later. Currently slot it for the next release (r178).

ychin commented 9 months ago

Seems related to #1259, but not sure.