Excerpts from Krzysztof Goj's message of Tue Dec 02 17:57:57 +0100 2008: > Hi! > I improved percent move in Vim keymap -- now it's inclusive, and works as > expected if there is no paren in cursor (very helpful for deleting function > calls and array lookups in C). > > Cavetas: it should somehow raport failure (instead of just staying in > place) if > match not found (findmatchlimit just returns NULL). With this > implementation 'd%' > on line without parens does the same stuff as 'x'.
Vim just behave like 'x' in that case, you want it to be different? > How should we approach fixing it? Should we add > data ViMove = -- ... > + | PossibleArbMove (BufferM (Bool)) > > With boolean value saying if move has succeeded or not? Yes it could be the right approach, but does it worth the complication? > Tue Dec 2 17:21:05 CET 2008 Krzysztof Goj <[EMAIL PROTECTED]> > * Better percent move. > > New patches: > > [Better percent move. > Krzysztof Goj <[EMAIL PROTECTED]>**20081202162105] hunk ./Yi/Keymap/Vim.hs 173 > gen_cmd_move :: KeymapM (RegionStyle, ViMove) > gen_cmd_move = choice > [ char '0' ?>> return (Exclusive, viMoveToSol) > - , char '%' ?>> return (Exclusive, ArbMove (do > - c <- readB > - case c of '(' -> goUnmatchedB Forward '(' ')' > - ')' -> goUnmatchedB Backward '(' ')' > - '{' -> goUnmatchedB Forward '{' '}' > - '}' -> goUnmatchedB Backward '{' '}' > - '[' -> goUnmatchedB Forward '[' ']' > - ']' -> goUnmatchedB Backward '[' ']' > - _ -> fail $ "Not matchable character: > " ++ [c])) > + , char '%' ?>> return percentMove > , do > cnt <- count > let x = maybe 1 id cnt > hunk ./Yi/Keymap/Vim.hs 1049 > beginIns :: (Show x, YiAction a x) => ModeMap -> a -> I Event Action () > beginIns self a = write a >> ins_mode self > > +-- Find the item after or under the cursor and jump to its match > +percentMove :: (RegionStyle, ViMove) > +percentMove = (Inclusive, ArbMove tryGoingToMatch) > + where tryGoingToMatch = do > + p <- pointB > + foundMatch <- goToMatch > + when (not foundMatch) $ moveTo p > + return () > + go dir a b = goUnmatchedB dir a b >> return True > + goToMatch = do > + c <- readB > + case c of '(' -> go Forward '(' ')' > + ')' -> go Backward '(' ')' > + '{' -> go Forward '{' '}' > + '}' -> go Backward '{' '}' > + '[' -> go Forward '[' ']' > + ']' -> go Backward '[' ']' > + _ -> otherChar > + otherChar = do eof <- atEof > + eol <- atEol > + if (eof || eol) > + then return False > + else rightB >> goToMatch -- search for > matchable character after the cursor > + > -- -------------------- > -- | Keyword > kwd_mode :: VimMode > > Context: > > [replace all: more helpful message > [EMAIL PROTECTED] > [fix build > [EMAIL PROTECTED] > [Better word and WORD motions for Vim keymap. > Krzysztof Goj <[EMAIL PROTECTED]>**20081202132813] > [doc > [EMAIL PROTECTED] > [Yi/Users/Gwern.hs: +shorter binding for gotoLn > [EMAIL PROTECTED] > Ignore-this: 5defc56344c3e1c61bd602d192e06af3 > I find the default Emacs binding of M-g g tedious; why not just M-g? > ] > [doc > [EMAIL PROTECTED] > [make Accessor instance of Category > [EMAIL PROTECTED] > [use Control.Category > [EMAIL PROTECTED] > [Yi.Keymap.Emacs: +standard emacs M-; binding > [EMAIL PROTECTED] > Ignore-this: 5abf2d7154acfdcce44286f34ec238b9 > ] > [update to base>=4; replace all Control.Exception with Control.OldException > [EMAIL PROTECTED] > Ignore-this: 205b7c23a4ffcc16b8612d0b4edc9352 > ] > [better support for vivid colors > [EMAIL PROTECTED] > [Main.hs: minor indent > [EMAIL PROTECTED] > Ignore-this: b53fd55beb556c92b6bba9ee4a49cd61 > ] > [added C-w and C-u to ex mode > Aleksandar Dimitrov <[EMAIL PROTECTED]>**20081201103414] > ['ZZ' closes window, not editor, 'ZQ' == ':q!' > Aleksandar Dimitrov <[EMAIL PROTECTED]>**20081201103311] > [bump version number > [EMAIL PROTECTED] > [TAG 0.5.2 > [EMAIL PROTECTED] > Patch bundle hash: > 9e9643f5cb208099e5164b3ec9540e908c5f102d -- Nicolas Pouillard aka Ertai --~--~---------~--~----~------------~-------~--~----~ Yi development mailing list yi-devel@googlegroups.com http://groups.google.com/group/yi-devel -~----------~----~----~----~------~----~------~--~---