From dcde07637141064a39c79db93d47f6fe588a782d Mon Sep 17 00:00:00 2001
From: lostd <lostd@2f30.org>
Date: Sun, 12 Jul 2015 13:32:31 +0100
Subject: [PATCH] Add keys to move to the first and last entry

---
 config.def.h | 8 ++++++++
 noice.1      | 4 ++++
 noice.c      | 8 ++++++++
 3 files changed, 20 insertions(+)

diff --git a/config.def.h b/config.def.h
index 9b730ba..167e648 100644
--- a/config.def.h
+++ b/config.def.h
@@ -45,6 +45,14 @@ struct key bindings[] = {
 	/* Page up */
 	{ KEY_PPAGE,      SEL_PGUP },
 	{ CONTROL('U'),   SEL_PGUP },
+	/* Home */
+	{ KEY_HOME,       SEL_HOME },
+	{ CONTROL('A'),   SEL_HOME },
+	{ '^',            SEL_HOME },
+	/* End */
+	{ KEY_END,        SEL_END },
+	{ CONTROL('E'),   SEL_END },
+	{ '$',            SEL_END },
 	/* Change dir */
 	{ 'c',            SEL_CD },
 	/* Toggle sort by time */
diff --git a/noice.1 b/noice.1
index 0c8eea0..ab400d6 100644
--- a/noice.1
+++ b/noice.1
@@ -37,6 +37,10 @@ Move to next entry.
 Scroll up half a page.
 .It Ic [Pgdown] or C-d
 Scroll down half a page.
+.It Ic [Home] or C-a or ^
+Move to the first entry.
+.It Ic [End] or C-e or $
+Move to the last entry.
 .It Ic l, [Right], [Return] or C-m
 Open file or enter directory.
 .It Ic h, [Left] or [Backspace]
diff --git a/noice.c b/noice.c
index 2c408fe..228aedf 100644
--- a/noice.c
+++ b/noice.c
@@ -54,6 +54,8 @@ enum action {
 	SEL_PREV,
 	SEL_PGDN,
 	SEL_PGUP,
+	SEL_HOME,
+	SEL_END,
 	SEL_CD,
 	SEL_MTIME,
 	SEL_REDRAW,
@@ -827,6 +829,12 @@ moretyping:
 			if (cur > 0)
 				cur -= MIN((LINES - 4) / 2, cur);
 			break;
+		case SEL_HOME:
+			cur = 0;
+			break;
+		case SEL_END:
+			cur = n - 1;
+			break;
 		case SEL_CD:
 			/* Read target dir */
 			printprompt("chdir: ");