On 2014-11-24, Gary Johnson wrote:
> On 2014-11-23, Gary Johnson wrote:
> 
> > I'll try to find an old version that doesn't exhibit the problem in
> > my normal work environment.
> 
> Well, that didn't pan out, either.  I went back to almost a year
> ago, to 7.4.135, and I still see the display not fully refresh after
> a command that causes 'diffexpr' to be evaluated.  I'll try to find
> out why and create a patch and/or a workaround.
> 
> I don't know why I didn't notice this until recently.

Progress!  I remembered what I changed about the time this problem
appeared!

I normally clear 't_ti' and 't_te' in my ~/.vimrc because I usually
want whatever I was editing to remain on the screen after I exit vim
so that I can continue to refer to it as I execute other commands.
I recently added an exception for vimdiff because for my work flow I
would rather have the screen restored to what it was before I
executed vimdiff.

That changed Vim's processing of 'diffexpr'.  When screen switching
was disabled, Vim's display was always updated correctly.  Now that
I have screen switching enabled for vimdiff, Vim swaps screens
before executing the 'diffexpr' shell command.  After the shell
command has executed, vim attempts to restore the screen it uses for
editing by calling starttermcap (from within do_shell at line 1508
of ex_cmds.c).  That function, rather than restoring the previous
screen contents, clears the screen completely.  Subsequently-called
functions that update the screen contents update only the parts they
think have changed, leaving the screen a patchwork of text.

At this point I understand part of the problem, but I don't
understand the mechanics of Vim's screen management well enough to
be able to spot what's missing.  I'll continue to work on it, but I
hope by posting here I'll prompt someone else's insight.

Regards,
Gary

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui