Also removes the ordered keys

Change-Id: Ie3dad6dfecbe7f07643fed1d4ef56dd840dc926a
diff --git a/properties.go b/properties.go
index e7cac17..44f9c1f 100644
--- a/properties.go
+++ b/properties.go
@@ -596,11 +596,18 @@
 
 // ----------------------------------------------------------------------------
 
-// deletes the key from the map and its comments
+// deletes the key from the map and comments
 // abides by the rules of the builtin delete()
 func (p *Properties) Delete(key string) () {
 	delete(p.m, key)
 	delete(p.c, key)
+	newKeys := []string{}
+	for _, k := range p.k {
+		if k != key {
+			newKeys = append(newKeys, key)
+		}
+	}
+	p.k = newKeys
 }
 
 // ----------------------------------------------------------------------------
diff --git a/properties_test.go b/properties_test.go
index 2615f32..8d4c7c0 100644
--- a/properties_test.go
+++ b/properties_test.go
@@ -798,14 +798,16 @@
 }
 
 func (s *TestSuite) TestDeleteKey(c *C) {
-	input := "#comments should also be gone\nkey=to-be-deleted"
+	input := "#comments should also be gone\nkey=to-be-deleted\nsecond=key"
 	p, err := parse(input)
 	c.Assert(err, IsNil)
-	c.Check(len(p.m), Equals, 1)
+	c.Check(len(p.m), Equals, 2)
 	c.Check(len(p.c), Equals, 1)
+	c.Check(len(p.k), Equals, 2)
 	p.Delete("key")
-	c.Check(len(p.m), Equals, 0)
+	c.Check(len(p.m), Equals, 1)
 	c.Check(len(p.c), Equals, 0)
+	c.Check(len(p.k), Equals, 1)
 }
 
 func (s *TestSuite) TestDeleteUnknownKey(c *C) {
@@ -814,9 +816,11 @@
 	c.Assert(err, IsNil)
 	c.Check(len(p.m), Equals, 1)
 	c.Check(len(p.c), Equals, 1)
+	c.Check(len(p.k), Equals, 1)
 	p.Delete("wrong-key")
 	c.Check(len(p.m), Equals, 1)
 	c.Check(len(p.c), Equals, 1)
+	c.Check(len(p.k), Equals, 1)
 }
 
 // ----------------------------------------------------------------------------