about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSören Tempel <soeren+git@soeren-tempel.net>2021-05-29 17:29:55 +0200
committerSören Tempel <soeren+git@soeren-tempel.net>2021-05-29 17:29:55 +0200
commit6c57f6e59b721a39fd0b876a8f3752789b6fee19 (patch)
tree9aab4a94c26e8f5722ce48d97b76b50270e3ab0a
parent7fb4e5832fed181e115b276e2be12be54a6448fd (diff)
Add ctrl+l keybinding to clear everything except current line
-rw-r--r--TODO.txt2
-rw-r--r--saneterm/keys.py1
-rw-r--r--saneterm/termview.py10
3 files changed, 11 insertions, 2 deletions
diff --git a/TODO.txt b/TODO.txt
index c6b1ed3..c9ac1c1 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -5,5 +5,3 @@
 	* Bracketed paste mode
 * Basic support for raw mode
 * 9term-like file name completions using ctrl+f
-* Support of a ctrl+l screen clear feature and/or
-  scrolling beyond th end of the buffer like 9term supports
diff --git a/saneterm/keys.py b/saneterm/keys.py
index 925bdab..6b85ede 100644
--- a/saneterm/keys.py
+++ b/saneterm/keys.py
@@ -17,6 +17,7 @@ class Bindings():
             bind "<ctrl>a" { "move-input-start" () };
             bind "<ctrl>e" { "move-input-end" () };
             bind "<ctrl>j" { "insert-at-cursor" ("\\n") };
+            bind "<ctrl>l" { "clear-view" () };
 
             bind "<ctrl>w" { "delete-from-cursor" (word-ends, -1) };
             bind "<ctrl>h" { "backspace" () };
diff --git a/saneterm/termview.py b/saneterm/termview.py
index 1b8e3d8..da56245 100644
--- a/saneterm/termview.py
+++ b/saneterm/termview.py
@@ -75,6 +75,7 @@ class TermView(Gtk.TextView):
             "kill-after-output": self.__kill_after_output,
             "move-input-start": self.__move_input_start,
             "move-input-end": self.__move_input_end,
+            "clear-view": self.__clear_view,
         }
 
         for signal in signals.items():
@@ -181,3 +182,12 @@ class TermView(Gtk.TextView):
 
         end = buffer.get_iter_at_mark(self._last_mark)
         buffer.place_cursor(end)
+
+    def __clear_view(self, textview):
+        buffer = textview.get_buffer()
+
+        end = buffer.get_iter_at_mark(self._last_output_mark)
+        off = end.get_visible_line_offset()
+        end.backward_chars(off)
+
+        buffer.delete(buffer.get_start_iter(), end)