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
-~----------~----~----~----~------~----~------~--~---

Reply via email to