int downline(void) { int n = zmult; if (n < 0) { zmult = -zmult; n = upline(); zmult = -zmult; return n; } if ((lastcmd & ZLE_LINEMOVE) != ZLE_LINEMOVE) lastcol = cs - findbol(); while (n) { int x = findeol(); if (x == ll) break; cs = x + 1; n--; } if (!n) { int x = findeol(); if ((cs += lastcol) >= x) { cs = x; if (cs > findbol() && bindtab == altbindtab) cs--; } } return n; }
int minDistance(string word1, string word2) { vector<int> upline(word1.size() + 1, 0); vector<int> downline(word1.size() + 1, 0); for(int i = 0; i <= word1.size(); ++i) upline[i] = i; for(int i = 1; i <= word2.size(); ++i){ downline[0] = i; for(int j = 1; j <= word1.size(); ++j){ downline[j] = min(min(downline[j - 1] + 1, upline[j] + 1), (word1[j - 1] == word2[i - 1]) ? upline[j - 1] : upline[j - 1] + 1); } swap(upline, downline); } return upline.back(); }
void uplineorsearch(void) { int ocs = cs; int n = upline(); if (n) { int m = zmult; cs = ocs; if (virangeflag || in_vared) { feep(); return; } zmult = n; historysearchbackward(); zmult = m; } }
void uplineorhistory(void) { int ocs = cs; int n = upline(); if (n) { int m = zmult; cs = ocs; if (virangeflag || in_vared) { feep(); return; } zmult = n; uphistory(); zmult = m; } }
int kcinth() { u16 segment, offset; int a,b,c,d, r; segment = running->uss; offset = running->usp; a = get_word(segment, offset + 2*PA); b = get_word(segment, offset + 2*PB); c = get_word(segment, offset + 2*PC); d = get_word(segment, offset + 2*PD); switch(a){ case 0 : r = running->pid; break; case 1 : r = do_ps(); break; case 2 : r = chname(b); break; case 3 : r = kmode(); break; case 4 : r = tswitch(); break; case 5 : r = do_wait(b); break; case 6 : r = do_exit(b); break; case 7 : r = fork(); break; case 8 : r = exec(b); break; case 9 : r = vfork(); break; case 12: r = upline(b); break; case 90: r = getc(); break; case 91: color=running->pid+11; r = putc(b); break; case 99: do_exit(b); break; default: printf("invalid syscall # : %d\n", a); } put_word(r, segment, offset + 2*AX); }