Fix YankPop panic

thread 'main' panicked at 'already borrowed: BorrowMutError'
diff --git a/src/lib.rs b/src/lib.rs
index 2562b68..b7106a4 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -280,8 +280,11 @@
 // Delete previously yanked text and yank/paste `text` at current position.
 fn edit_yank_pop(s: &mut State, yank_size: usize, text: &str) -> Result<()> {
     s.changes.borrow_mut().begin();
-    s.line.yank_pop(yank_size, text);
-    let result = edit_yank(s, text, Anchor::Before, 1);
+    let result = if s.line.yank_pop(yank_size, text).is_some() {
+        s.refresh_line()
+    } else {
+        Ok(())
+    };
     s.changes.borrow_mut().end();
     result
 }
diff --git a/src/line_buffer.rs b/src/line_buffer.rs
index d64b1d7..94bc030 100644
--- a/src/line_buffer.rs
+++ b/src/line_buffer.rs
@@ -668,8 +668,9 @@
 
     fn drain(&mut self, range: Range<usize>, dir: Direction) -> Drain {
         for dl in &self.dl {
-            dl.borrow_mut()
-                .delete(range.start, &self.buf[range.start..range.end], dir);
+            if let Ok(mut dl) = dl.try_borrow_mut() {
+                dl.delete(range.start, &self.buf[range.start..range.end], dir);
+            }
         }
         for cl in &self.cl {
             cl.borrow_mut()