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.
