MCPcopy Create free account
hub / github.com/OpenEndedGroup/Field2 / forward

Function forward

lib/web/CodeMirror/keymap/vim.js:3835–3891  ·  view source on GitHub ↗
(cm, ln, pos, dir)

Source from the content-addressed store, hash-verified

3833 Returns an index object of the new location
3834 */
3835 function forward(cm, ln, pos, dir) {
3836 var line = cm.getLine(ln);
3837 var stop = (line === "");
3838
3839 var curr = {
3840 line: line,
3841 ln: ln,
3842 pos: pos,
3843 dir: dir,
3844 }
3845
3846 var last_valid = {
3847 ln: curr.ln,
3848 pos: curr.pos,
3849 }
3850
3851 var skip_empty_lines = (curr.line === "");
3852
3853 // Move one step to skip character we start on
3854 nextChar(cm, curr);
3855
3856 while (curr.line !== null) {
3857 last_valid.ln = curr.ln;
3858 last_valid.pos = curr.pos;
3859
3860 if (curr.line === "" && !skip_empty_lines) {
3861 return { ln: curr.ln, pos: curr.pos, };
3862 }
3863 else if (stop && curr.line !== "" && !isWhiteSpaceString(curr.line[curr.pos])) {
3864 return { ln: curr.ln, pos: curr.pos, };
3865 }
3866 else if (isEndOfSentenceSymbol(curr.line[curr.pos])
3867 && !stop
3868 && (curr.pos === curr.line.length - 1
3869 || isWhiteSpaceString(curr.line[curr.pos + 1]))) {
3870 stop = true;
3871 }
3872
3873 nextChar(cm, curr);
3874 }
3875
3876 /*
3877 Set the position to the last non whitespace character on the last
3878 valid line in the case that we reach the end of the document.
3879 */
3880 var line = cm.getLine(last_valid.ln);
3881 last_valid.pos = 0;
3882 for(var i = line.length - 1; i >= 0; --i) {
3883 if (!isWhiteSpaceString(line[i])) {
3884 last_valid.pos = i;
3885 break;
3886 }
3887 }
3888
3889 return last_valid;
3890
3891 }
3892

Callers 1

findSentenceFunction · 0.85

Calls 4

nextCharFunction · 0.85
isWhiteSpaceStringFunction · 0.85
isEndOfSentenceSymbolFunction · 0.85
getLineMethod · 0.65

Tested by

no test coverage detected