From c2b937481fd3b4c630433de0fcc0a73ebee8c7b2 Mon Sep 17 00:00:00 2001
From: Ivan Tham <pickfire@riseup.net>
Date: Fri, 25 Jun 2021 00:47:04 +0800
Subject: [PATCH] Fix goto line end

Should not goto newline.
---
 helix-term/src/commands.rs | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index d48a2099..d99c840f 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -351,6 +351,8 @@ fn move_line_end(cx: &mut Context) {
         let line = text.char_to_line(range.head);
 
         let pos = line_end_char_index(&text.slice(..), line);
+        let pos = graphemes::nth_prev_grapheme_boundary(text.slice(..), pos, 1);
+        let pos = range.head.max(pos).max(text.line_to_char(line));
 
         Range::new(pos, pos)
     });
@@ -787,6 +789,8 @@ fn extend_line_end(cx: &mut Context) {
         let line = text.char_to_line(range.head);
 
         let pos = line_end_char_index(&text.slice(..), line);
+        let pos = graphemes::nth_prev_grapheme_boundary(text.slice(..), pos, 1);
+        let pos = range.head.max(pos).max(text.line_to_char(line));
 
         Range::new(range.anchor, pos)
     });