diff options
| author | tv <tv@krebsco.de> | 2017-08-07 01:34:00 +0200 | 
|---|---|---|
| committer | tv <tv@krebsco.de> | 2017-08-07 01:34:00 +0200 | 
| commit | 9c2d648916f1a62fc429527bae610f71967843ea (patch) | |
| tree | e734e5fa1229bcb23fdbd904fe83999725fb7446 /src/Buffer | |
| parent | 5e9ee547af994a88da8bbaa638c3e94f16795aac (diff) | |
Main: add Yank
Diffstat (limited to 'src/Buffer')
| -rw-r--r-- | src/Buffer/Motion.hs | 28 | 
1 files changed, 28 insertions, 0 deletions
| diff --git a/src/Buffer/Motion.hs b/src/Buffer/Motion.hs index 8e59789..b07a45c 100644 --- a/src/Buffer/Motion.hs +++ b/src/Buffer/Motion.hs @@ -78,3 +78,31 @@ move ToEndOfLine _ = gotoEndOfLine -- TODO use count  move ToColumn c = gotoColumn c  move WordsForward c = wordsForward c  move WordsBackward c = wordsBackward c + + +select :: Motion -> Int -> Buffer -> String +select x i b = +    if nls' < nls then take (nls - nls') rs' else +    if nrs' < nrs then take (nrs - nrs') rs else +    "" +  where +    (ls, rs) = b +    (ls', rs') = move x i b +    nls = length ls +    nls' = length ls' +    nrs = length rs +    nrs' = length rs' + + +delete :: Motion -> Int -> Buffer -> Buffer +delete x i b = +    ( if nls' < nls then ls' else ls +    , if nrs' < nrs then rs' else rs +    ) +  where +    (ls, rs) = b +    (ls', rs')= move x i b +    nls = length ls +    nls' = length ls' +    nrs = length rs +    nrs' = length rs' | 
