Simplify Paste/Yank operation
diff --git a/src/lib.rs b/src/lib.rs
index 3fb381d..dba37c9 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -352,7 +352,10 @@
 
 // Yank/paste `text` at current position.
 fn edit_yank(s: &mut State, text: &str, anchor: Anchor, n: RepeatCount) -> Result<()> {
-    if s.line.yank(text, anchor, n).is_some() {
+    if let Anchor::After = anchor {
+        s.line.move_forward(1);
+    }
+    if s.line.yank(text, n).is_some() {
         if !s.edit_state.is_emacs_mode() {
             s.line.move_backward(1);
         }
diff --git a/src/line_buffer.rs b/src/line_buffer.rs
index a2178cf..91fade5 100644
--- a/src/line_buffer.rs
+++ b/src/line_buffer.rs
@@ -3,7 +3,7 @@
 use std::ops::{Deref, Range};
 use std_unicode::str::UnicodeStr;
 use unicode_segmentation::UnicodeSegmentation;
-use keymap::{Anchor, At, CharSearch, Movement, RepeatCount, Word};
+use keymap::{At, CharSearch, Movement, RepeatCount, Word};
 
 /// Maximum buffer size for the line read
 pub static MAX_LINE: usize = 4096;
@@ -151,14 +151,11 @@
     /// Yank/paste `text` at current position.
     /// Return `None` when maximum buffer size has been reached,
     /// `true` when the character has been appended to the end of the line.
-    pub fn yank(&mut self, text: &str, anchor: Anchor, n: RepeatCount) -> Option<bool> {
+    pub fn yank(&mut self, text: &str, n: RepeatCount) -> Option<bool> {
         let shift = text.len() * n;
         if text.is_empty() || (self.buf.len() + shift) > self.buf.capacity() {
             return None;
         }
-        if let Anchor::After = anchor {
-            self.move_forward(1);
-        }
         let push = self.pos == self.buf.len();
         if push {
             self.buf.reserve(shift);
@@ -178,7 +175,7 @@
     pub fn yank_pop(&mut self, yank_size: usize, text: &str) -> Option<bool> {
         self.buf.drain((self.pos - yank_size)..self.pos);
         self.pos -= yank_size;
-        self.yank(text, Anchor::Before, 1)
+        self.yank(text, 1)
     }
 
     /// Move cursor on the left.
@@ -280,7 +277,7 @@
         }
         let chars = self.delete(1).unwrap();
         self.move_backward(1);
-        self.yank(&chars, Anchor::Before, 1);
+        self.yank(&chars, 1);
         self.move_forward(1);
         true
     }
@@ -690,7 +687,7 @@
 
 #[cfg(test)]
 mod test {
-    use keymap::{Anchor, At, CharSearch, Word};
+    use keymap::{At, CharSearch, Word};
     use super::{LineBuffer, MAX_LINE, WordAction};
 
     #[test]
@@ -740,7 +737,8 @@
     #[test]
     fn yank_after() {
         let mut s = LineBuffer::init("αß", 2);
-        let ok = s.yank("γδε", Anchor::After, 1);
+        s.move_forward(1);
+        let ok = s.yank("γδε", 1);
         assert_eq!(Some(true), ok);
         assert_eq!("αßγδε", s.buf);
         assert_eq!(10, s.pos);
@@ -749,7 +747,7 @@
     #[test]
     fn yank_before() {
         let mut s = LineBuffer::init("αε", 2);
-        let ok = s.yank("ßγδ", Anchor::Before, 1);
+        let ok = s.yank("ßγδ", 1);
         assert_eq!(Some(false), ok);
         assert_eq!("αßγδε", s.buf);
         assert_eq!(8, s.pos);