Skip to content

Commit

Permalink
Fixed multi-command verb
Browse files Browse the repository at this point in the history
  • Loading branch information
dzervas committed Jul 19, 2014
1 parent 285d9c7 commit 05882e5
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 13 deletions.
4 changes: 3 additions & 1 deletion config.h
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,9 @@ static const Key commkeys[] = { /* Command mode keys here */
{ .keyv.c = { 'a' }, { 0, 0, 0, 0 }, f_toggle, { .i = S_Command } },
{ .keyv.c = { 'b' }, { t_sent,0, 0, 0 }, f_adjective, { .m = m_prevword } },
{ .keyv.c = { 'b' }, { 0, 0, 0, 0 }, f_move, { .m = m_prevword } },
{ .keyv.c = { 'c' }, { t_sel, t_rw, 0, 0 }, f_delete, { .m = m_tosel } },
/*{ .keyv.c = { 'c' }, { t_sel, t_rw, 0, 0 }, f_delete, { .m = m_tosel } },
{ .keyv.c = { 'c' }, { t_sel, t_rw, 0, 0 }, f_toggle, { .i = S_Visual } },
{ .keyv.c = { 'c' }, { t_sel, t_rw, 0, 0 }, f_toggle, { .i = S_Command } },*/
{ .keyv.c = { 'c' }, { t_rw, 0, 0, 0 }, f_delete, { .m = m_sentence } }, /* TODO: queue insert mode, similar to 'y' */
{ .keyv.c = { 'c' }, { t_rw, 0, 0, 0 }, f_toggle, { .i = S_Command } },
{ .keyv.c = { 'C' }, { t_rw, 0, 0, 0 }, f_delete, { .m = m_eol } },
Expand Down
21 changes: 9 additions & 12 deletions sandy.c
Original file line number Diff line number Diff line change
Expand Up @@ -799,9 +799,8 @@ i_dokeys(const Key bindings[], int length_bindings) {
if(bindings[index].func == verb) {
varg.m = m_nextline;
i_multiply(verb, varg);
}

if(bindings[index].func != f_adjective) {
statusflags&=~S_Sentence;
} else if(bindings[index].func != f_adjective) {
statusflags&=~S_Sentence;
break;
}
Expand All @@ -825,19 +824,17 @@ i_dokeys(const Key bindings[], int length_bindings) {
}

i_multiply(bindings[index].func, bindings[index].arg);
i=(t_sent() && bindings[index].func == f_adjective)?vi:index;
if(t_sent() && bindings[index].func == f_adjective) i=vi;
else i=index;

/* Handle multi-function commands */
if(i+1<LENGTH(bindings)) {
if(memcmp(bindings[i+1].keyv.c, bindings[i].keyv.c, sizeof bindings[i].keyv.c) == 0) {
j=-1;

while(1) {
if(bindings[i].test[++j])
if(bindings[index].test[j] != bindings[i+1].test[j]) break;
if(i+1<length_bindings) {
if((bindings[i+1].keyv.c && memcmp(bindings[i+1].keyv.c, bindings[i].keyv.c, sizeof bindings[i].keyv.c) == 0) || (bindings[i+1].keyv.i && bindings[i+1].keyv.i == bindings[index].keyv.i)) {
for(j=0; j < LENGTH(bindings[i].test); j++) {
if(bindings[i].test[j] != bindings[i+1].test[j]) break;
}

if(!bindings[i].test[j]) continue;
if(j == LENGTH(bindings[i].test)) continue;
}
}

Expand Down

0 comments on commit 05882e5

Please sign in to comment.