From dd4be1da380724cdb91daccab8978ed50d7ae6ab Mon Sep 17 00:00:00 2001
From: Junegunn Choi <junegunn.c@gmail.com>
Date: Fri, 13 May 2016 00:36:13 +0900
Subject: [PATCH] Allow alt-enter and alt-space for --bind (#571)

---
 src/curses/curses.go | 6 ++++++
 src/options.go       | 4 ++++
 src/options_test.go  | 8 +++++---
 3 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/src/curses/curses.go b/src/curses/curses.go
index ebe64159..0ad382bd 100644
--- a/src/curses/curses.go
+++ b/src/curses/curses.go
@@ -81,6 +81,8 @@ const (
 	F3
 	F4
 
+	AltEnter
+	AltSpace
 	AltBS
 	AltA
 	AltB
@@ -417,6 +419,10 @@ func escSequence(sz *int) Event {
 	}
 	*sz = 2
 	switch _buf[1] {
+	case 13:
+		return Event{AltEnter, 0, nil}
+	case 32:
+		return Event{AltSpace, 0, nil}
 	case 98:
 		return Event{AltB, 0, nil}
 	case 100:
diff --git a/src/options.go b/src/options.go
index ab633082..4d5ac2d8 100644
--- a/src/options.go
+++ b/src/options.go
@@ -315,6 +315,10 @@ func parseKeyChords(str string, message string) map[int]string {
 			chord = curses.AltZ + int(' ')
 		case "bspace", "bs":
 			chord = curses.BSpace
+		case "alt-enter", "alt-return":
+			chord = curses.AltEnter
+		case "alt-space":
+			chord = curses.AltSpace
 		case "alt-bs", "alt-bspace":
 			chord = curses.AltBS
 		case "tab":
diff --git a/src/options_test.go b/src/options_test.go
index 81845d29..f3e62f8e 100644
--- a/src/options_test.go
+++ b/src/options_test.go
@@ -123,14 +123,14 @@ func TestIrrelevantNth(t *testing.T) {
 }
 
 func TestParseKeys(t *testing.T) {
-	pairs := parseKeyChords("ctrl-z,alt-z,f2,@,Alt-a,!,ctrl-G,J,g", "")
+	pairs := parseKeyChords("ctrl-z,alt-z,f2,@,Alt-a,!,ctrl-G,J,g,ALT-enter,alt-SPACE", "")
 	check := func(i int, s string) {
 		if pairs[i] != s {
 			t.Errorf("%s != %s", pairs[i], s)
 		}
 	}
-	if len(pairs) != 9 {
-		t.Error(9)
+	if len(pairs) != 11 {
+		t.Error(11)
 	}
 	check(curses.CtrlZ, "ctrl-z")
 	check(curses.AltZ, "alt-z")
@@ -141,6 +141,8 @@ func TestParseKeys(t *testing.T) {
 	check(curses.CtrlA+'g'-'a', "ctrl-G")
 	check(curses.AltZ+'J', "J")
 	check(curses.AltZ+'g', "g")
+	check(curses.AltEnter, "ALT-enter")
+	check(curses.AltSpace, "alt-SPACE")
 
 	// Synonyms
 	pairs = parseKeyChords("enter,Return,space,tab,btab,esc,up,down,left,right", "")
-- 
GitLab