(state,textAfter)
| 504 | // indenter |
| 505 | |
| 506 | function indenter(state,textAfter) { |
| 507 | var t; |
| 508 | var unit = cmCfg.indentUnit; |
| 509 | var wordAfter = wordafter(textAfter); |
| 510 | var currT = peekToken(state,1); |
| 511 | var prevT = peekToken(state,2); |
| 512 | |
| 513 | if (state.in_string || state.in_atom) { |
| 514 | return CodeMirror.Pass; |
| 515 | }else if (!prevT) { |
| 516 | return 0; |
| 517 | }else if (currT.token == "when") { |
| 518 | return currT.column+unit; |
| 519 | }else if (wordAfter === "when" && prevT.type === "function") { |
| 520 | return prevT.indent+unit; |
| 521 | }else if (wordAfter === "(" && currT.token === "fun") { |
| 522 | return currT.column+3; |
| 523 | }else if (wordAfter === "catch" && (t = getToken(state,["try"]))) { |
| 524 | return t.column; |
| 525 | }else if (is_member(wordAfter,["end","after","of"])) { |
| 526 | t = getToken(state,["begin","case","fun","if","receive","try"]); |
| 527 | return t ? t.column : CodeMirror.Pass; |
| 528 | }else if (is_member(wordAfter,closeParenWords)) { |
| 529 | t = getToken(state,openParenWords); |
| 530 | return t ? t.column : CodeMirror.Pass; |
| 531 | }else if (is_member(currT.token,[",","|","||"]) || |
| 532 | is_member(wordAfter,[",","|","||"])) { |
| 533 | t = postcommaToken(state); |
| 534 | return t ? t.column+t.token.length : unit; |
| 535 | }else if (currT.token == "->") { |
| 536 | if (is_member(prevT.token, ["receive","case","if","try"])) { |
| 537 | return prevT.column+unit+unit; |
| 538 | }else{ |
| 539 | return prevT.column+unit; |
| 540 | } |
| 541 | }else if (is_member(currT.token,openParenWords)) { |
| 542 | return currT.column+currT.token.length; |
| 543 | }else{ |
| 544 | t = defaultToken(state); |
| 545 | return truthy(t) ? t.column+unit : 0; |
| 546 | } |
| 547 | } |
| 548 | |
| 549 | function wordafter(str) { |
| 550 | var m = str.match(/,|[a-z]+|\}|\]|\)|>>|\|+|\(/); |
no test coverage detected