On Monday, June 11, 2012 2:34:42 PM UTC-5, Richard wrote: > Well Ben, > > On 06/11/2012 11:36 AM, Ben Fritz wrote: > >> Without such an ability, a small feature of my script > >> will give incorrect results. I certainly do not want to > >> have to go through some massive effort to get this to > >> work; I was hoping for some already built-in Vim > >> capability - Vim is really such an open environment. > >> > > > > I'm really curious what this script is that you are making, that you want > > to make changes which are not part of the undo tree and are not repeatable > > with '.'. What sort of changes do you think people would want to have these > > characteristics? > > > > I am not really ready for a general announcement, maybe a couple of > weeks away, but for console Vim I've got a general forms capability. > > > [...] > > So, to my issue with repeat '.' support. The gvim Edit menu has > the Repeat menu item which executes '.'. For my system to do > the Repeat operation, any of the menu drawing commands, etc. > which where used to display the menus must be removed from > the "remembered command" and the previous "remembered command" > re-installed as the last command. > > Richard >
Ah, so your plugin draws a UI by modifying the buffer, then removes the UI, again by modifying it. Except for text areas where the user must actually make changes to the buffer, I think you could accomplish this with the :undojoin command. The idea is: 1. (user makes some changes) 2. undojoin | (draw UI) 3. (user invokes mapping but doesn't make any changes to the buffer) 4. undojoin | (modify UI if needed) 5. undojoin | (remove UI) Since (2) + (4) + (5) add together to make zero changes, the effect of (1)+(2)+(4)+(5) in the undo tree (and possibly for the sake of repeat), is just (1). In general though, accounting for user-modifiable text areas, I'm not sure how to handle it. Maybe the UI could provide a button to split a window with a scratch buffer for text entry instead of allowing direct user interaction. Or use an input() call instead of direct interaction. -- You received this message from the "vim_use" 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
