Skip to content

Commit 56e7a77

Browse files
committed
Merge pull request #39 from jzsfkzm/master
A shot at #35
2 parents 4c01f80 + 438187d commit 56e7a77

24 files changed

+734
-525
lines changed

README.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,39 @@ the **core.quotepath** option using following command:
4040
$ git config --global core.quotepath false
4141
```
4242

43+
# Key Configuration
44+
45+
We have two key sets _vi_ and _mc_ preconfigured. The default one is _vi_.
46+
47+
##### Using the mc key set
48+
49+
You will need to place a file at `~/.config/git-commander/config.json` with the following content:
50+
51+
```
52+
{
53+
"keySet": "mc"
54+
}
55+
```
56+
57+
##### Redefining keys one by one
58+
59+
You also can redefine keys one by one if you would like. You'll need to extend your `~/.config/git-commander/config.json` file with a key called `keys` and put all your key definitions there. For example if you would like to use the _mc_ key set and make key _x_ quit the application, you'll need to add the following:
60+
61+
```
62+
{
63+
"keySet": "mc",
64+
"keys": {
65+
"common": {
66+
"quit": [
67+
"x"
68+
]
69+
}
70+
}
71+
}
72+
```
73+
74+
You can find [default settings here](https://github.com/golbin/git-commander/tree/master/config/key).
75+
4376
# License
4477

4578
MIT

config/index.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
var _ = require('lodash');
2+
3+
var defaultConfig = {
4+
keySet: 'vi'
5+
};
6+
7+
var config = (function() {
8+
var fs = require('fs');
9+
10+
var retval = defaultConfig;
11+
var userHome = process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'];
12+
var configFileName = userHome + '/.config/git-commander/config.json';
13+
14+
if (configFileName && fs.existsSync(configFileName)) {
15+
retval = _.extend({}, defaultConfig, JSON.parse(fs.readFileSync(configFileName)));
16+
}
17+
18+
return retval;
19+
}());
20+
21+
22+
var keyConfig = require('./key/' + config.keySet + '.json');
23+
24+
module.exports = {
25+
keys: config.keys ? _.merge({}, keyConfig, config.keys) : keyConfig
26+
};

config/key/mc.json

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
{
2+
"common": {
3+
"quit": [
4+
"escape",
5+
"q"
6+
],
7+
"pageUp": [
8+
"pageup"
9+
],
10+
"pageDown": [
11+
"pagedown"
12+
]
13+
},
14+
"main": {
15+
"select": [
16+
"space"
17+
],
18+
"selectAll": [
19+
"enter"
20+
],
21+
"add": [
22+
"a"
23+
],
24+
"reset": [
25+
"r"
26+
],
27+
"commit": [
28+
"c"
29+
],
30+
"log": [
31+
"l"
32+
],
33+
"diff": [
34+
"d"
35+
],
36+
"showBranch": [
37+
"b"
38+
],
39+
"togglePanes": [
40+
"tab"
41+
],
42+
"leftPane": [
43+
"left"
44+
],
45+
"rightPane": [
46+
"right"
47+
]
48+
},
49+
"editor": {
50+
"save": [
51+
"C-s"
52+
]
53+
},
54+
"branch": {
55+
"checkOut": [
56+
"enter"
57+
],
58+
"delete": [
59+
"d"
60+
],
61+
"add": [
62+
"a"
63+
]
64+
}
65+
}

config/key/vi.json

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
{
2+
"common": {
3+
"quit": [
4+
"escape",
5+
"q"
6+
],
7+
"pageUp": [
8+
"C-b"
9+
],
10+
"pageDown": [
11+
"C-f"
12+
]
13+
},
14+
"main": {
15+
"select": [
16+
"space"
17+
],
18+
"selectAll": [
19+
"enter"
20+
],
21+
"add": [
22+
"C-a"
23+
],
24+
"reset": [
25+
"C-r"
26+
],
27+
"commit": [
28+
"C-c"
29+
],
30+
"log": [
31+
"C-l"
32+
],
33+
"diff": [
34+
"C-d"
35+
],
36+
"showBranch": [
37+
"C-b"
38+
],
39+
"togglePanes": [
40+
"tab"
41+
],
42+
"leftPane": [
43+
"left"
44+
],
45+
"rightPane": [
46+
"right"
47+
]
48+
},
49+
"editor": {
50+
"save": [
51+
"C-s"
52+
]
53+
},
54+
"branch": {
55+
"checkOut": [
56+
"enter"
57+
],
58+
"delete": [
59+
"C-d"
60+
],
61+
"add": [
62+
"C-a"
63+
]
64+
}
65+
}

controller/branch.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
var _ = require('lodash');
22

33
var BranchView = require('../view/branch');
4+
var config = require('../config');
45

56
var parent = null,
67
view = null;
@@ -36,7 +37,7 @@ var branch = {
3637

3738
view = BranchView(parent.screen);
3839

39-
view.list.key(['enter'], function () {
40+
view.list.key(config.keys.branch.checkOut, function () {
4041
try {
4142
parent.git.checkout(this.selected);
4243
branch.hide(true);
@@ -46,7 +47,7 @@ var branch = {
4647
}
4748
});
4849

49-
view.list.key(['C-d'], function () {
50+
view.list.key(config.keys.branch.delete, function () {
5051
try {
5152
parent.git.delBranch(this.selected);
5253
branch.show();
@@ -56,7 +57,7 @@ var branch = {
5657
}
5758
});
5859

59-
view.list.key(['C-a'], function () {
60+
view.list.key(config.keys.branch.add, function () {
6061
view.prompt.input('Input the new branch name', '', function (err, value) {
6162
try {
6263
parent.git.addBranch(value);
@@ -68,7 +69,7 @@ var branch = {
6869
});
6970
});
7071

71-
view.list.key(['escape'], function () {
72+
view.list.key(config.keys.common.quit, function () {
7273
branch.hide();
7374
});
7475
}

controller/diff.js

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
var DiffView = require('../view/diff');
2+
var config = require('../config');
23

34
var parent = null,
45
view = null;
56

67
var diff = {
78
colorFormat: function (diffText) {
89
return diffText
9-
.replace(/(^\-\s[\S\s]+?$)/gm, "{red-fg}$1{/red-fg}")
10-
.replace(/(^\+\s[\S\s]+?$)/gm, "{green-fg}$1{/green-fg}")
11-
.replace(/(^@@\s[\S\s]+?@@)/gm, "{cyan-fg}$1{/cyan-fg}");
10+
.replace(/(^\-.*$)/gm, "{red-fg}$1{/red-fg}")
11+
.replace(/(^\+.*$)/gm, "{green-fg}$1{/green-fg}")
12+
.replace(/(^@@.*$)/gm, "{cyan-fg}$1{/cyan-fg}");
1213
},
1314
show: function () {
1415
var diffText = parent.git.diff(
@@ -34,8 +35,18 @@ var diff = {
3435

3536
view = DiffView(parent.screen);
3637

37-
view.textarea.key(['escape', 'q'], function () {
38-
diff.hide();
38+
view.textarea.key(config.keys.common.quit, function () {
39+
diff.hide();
40+
});
41+
42+
view.textarea.key(config.keys.common.pageUp, function () {
43+
view.textarea.scroll(-view.textarea.height || -1);
44+
redraw();
45+
});
46+
47+
view.textarea.key(config.keys.common.pageDown, function () {
48+
view.textarea.scroll(view.textarea.height || 1);
49+
redraw();
3950
});
4051
}
4152
};

controller/editor.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
var EditorView = require('../view/editor');
2+
var config = require('../config');
23

34
var parent = null,
45
view = null;
@@ -22,15 +23,15 @@ var editor = {
2223

2324
view = EditorView(parent.screen);
2425

25-
view.textarea.key(['C-s'], function () {
26+
view.textarea.key(config.keys.editor.save, function () {
2627
var message = view.textarea.getValue();
2728

2829
parent.git.commit(message);
2930

3031
editor.hide(true);
3132
});
3233

33-
view.textarea.key(['escape'], function () {
34+
view.textarea.key(config.keys.common.quit, function () {
3435
editor.hide();
3536
});
3637
}

controller/log.js

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
var LogView = require('../view/log');
2+
var config = require('../config');
23

34
var parent = null,
45
view = null;
@@ -88,7 +89,7 @@ var log = {
8889

8990
view = LogView(parent.screen);
9091

91-
view.list.key(['C-r'], function () {
92+
view.list.key(config.keys.main.reset, function () {
9293
var item = logItems[view.list.selected];
9394

9495
view.confirm.ask("Are you sure to reset? (Y/N)\n", function (err, value) {
@@ -102,13 +103,24 @@ var log = {
102103
});
103104
});
104105

105-
view.list.key(['escape', 'q'], function () {
106+
view.list.key(config.keys.common.quit, function () {
106107
log.hide();
107108
});
108109

109-
view.confirm.key(['escape'], function () {
110+
view.list.key(config.keys.common.pageUp, function () {
111+
view.list.scroll(-view.list.height || -1);
112+
redraw();
113+
});
114+
115+
view.list.key(config.keys.common.pageDown, function () {
116+
view.list.scroll(view.list.height || 1);
117+
redraw();
118+
});
119+
120+
view.confirm.key(config.keys.common.quit, function () {
110121
view.confirm.hide();
111122
});
123+
112124
}
113125
};
114126

0 commit comments

Comments
 (0)