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

Function reverse

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

Source from the content-addressed store, hash-verified

3895 Returns an index object of the new location
3896 */
3897 function reverse(cm, ln, pos, dir) {
3898 var line = cm.getLine(ln);
3899
3900 var curr = {
3901 line: line,
3902 ln: ln,
3903 pos: pos,
3904 dir: dir,
3905 }
3906
3907 var last_valid = {
3908 ln: curr.ln,
3909 pos: null,
3910 };
3911
3912 var skip_empty_lines = (curr.line === "");
3913
3914 // Move one step to skip character we start on
3915 nextChar(cm, curr);
3916
3917 while (curr.line !== null) {
3918
3919 if (curr.line === "" && !skip_empty_lines) {
3920 if (last_valid.pos !== null) {
3921 return last_valid;
3922 }
3923 else {
3924 return { ln: curr.ln, pos: curr.pos };
3925 }
3926 }
3927 else if (isEndOfSentenceSymbol(curr.line[curr.pos])
3928 && last_valid.pos !== null
3929 && !(curr.ln === last_valid.ln && curr.pos + 1 === last_valid.pos)) {
3930 return last_valid;
3931 }
3932 else if (curr.line !== "" && !isWhiteSpaceString(curr.line[curr.pos])) {
3933 skip_empty_lines = false;
3934 last_valid = { ln: curr.ln, pos: curr.pos }
3935 }
3936
3937 nextChar(cm, curr);
3938 }
3939
3940 /*
3941 Set the position to the first non whitespace character on the last
3942 valid line in the case that we reach the beginning of the document.
3943 */
3944 var line = cm.getLine(last_valid.ln);
3945 last_valid.pos = 0;
3946 for(var i = 0; i < line.length; ++i) {
3947 if (!isWhiteSpaceString(line[i])) {
3948 last_valid.pos = i;
3949 break;
3950 }
3951 }
3952 return last_valid;
3953 }
3954

Callers 1

findSentenceFunction · 0.85

Calls 4

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

Tested by

no test coverage detected