|
1 |
| -'use babel' |
2 |
| - |
3 |
| -import { get as weaveGet, |
4 |
| - moveNext as weaveMoveNext, |
5 |
| - movePrev as weaveMovePrev } from './weave.js' |
6 |
| - |
7 |
| -import { getLine } from './blocks.js' |
8 |
| - |
9 |
| -import { Point } from 'atom' |
10 |
| - |
11 |
| -export function getRange (ed) { |
| 1 | +"use strict" |
| 2 | +Object.defineProperty(exports, "__esModule", { value: true }) |
| 3 | +const weave_js_1 = require("./weave.js") |
| 4 | +const blocks_js_1 = require("./blocks.js") |
| 5 | +function getRange(editor) { |
12 | 6 | // Cell range is:
|
13 | 7 | // Start of line below top delimiter (and/or start of top row of file) to
|
14 | 8 | // End of line before end delimiter
|
15 |
| - var buffer = ed.getBuffer() |
16 |
| - var start = buffer.getFirstPosition() |
17 |
| - var end = buffer.getEndPosition() |
18 |
| - var regexString = '^(' + atom.config.get('julia-client.uiOptions.cellDelimiter').join('|') + ')' |
19 |
| - var regex = new RegExp(regexString) |
20 |
| - var cursor = ed.getCursorBufferPosition() |
| 9 | + const buffer = editor.getBuffer() |
| 10 | + const start = buffer.getFirstPosition() |
| 11 | + const end = buffer.getEndPosition() |
| 12 | + const regexString = "^(" + atom.config.get("julia-client.uiOptions.cellDelimiter").join("|") + ")" |
| 13 | + const regex = new RegExp(regexString) |
| 14 | + const cursor = editor.getCursorBufferPosition() |
21 | 15 | cursor.column = Infinity // cursor on delimiter line means eval cell below
|
22 |
| - |
23 |
| - |
24 | 16 | let foundDelim = false
|
25 |
| - for (let i = cursor.row + 1; i <= ed.getLastBufferRow(); i++) { |
26 |
| - let {line, scope} = getLine(ed, i) |
27 |
| - foundDelim = regex.test(line) && scope.join('.').indexOf('comment.line') > -1 |
| 17 | + for (let i = cursor.row + 1, l = editor.getLastBufferRow(); i <= l; i++) { |
| 18 | + const { line, scope } = blocks_js_1.getLine(editor, i) |
| 19 | + foundDelim = regex.test(line) && scope.join(".").indexOf("comment.line") > -1 |
28 | 20 | end.row = i
|
29 | 21 | if (foundDelim) break
|
30 | 22 | }
|
31 |
| - |
32 | 23 | if (foundDelim) {
|
33 | 24 | end.row -= 1
|
34 | 25 | if (end.row < 0) end.row = 0
|
35 | 26 | end.column = Infinity
|
36 | 27 | }
|
37 |
| - |
38 | 28 | foundDelim = false
|
39 | 29 | if (cursor.row > 0) {
|
40 | 30 | for (let i = end.row; i >= 0; i--) {
|
41 |
| - let {line, scope} = getLine(ed, i) |
42 |
| - foundDelim = regex.test(line) && scope.join('.').indexOf('comment.line') > -1 |
| 31 | + const { line, scope } = blocks_js_1.getLine(editor, i) |
| 32 | + foundDelim = regex.test(line) && scope.join(".").indexOf("comment.line") > -1 |
43 | 33 | start.row = i
|
44 | 34 | if (foundDelim) {
|
45 | 35 | break
|
46 | 36 | }
|
47 | 37 | }
|
48 | 38 | start.column = 0
|
49 | 39 | }
|
50 |
| - |
51 | 40 | return [start, end]
|
52 | 41 | }
|
53 |
| - |
54 |
| -export function get (ed) { |
55 |
| - if (ed.getGrammar().scopeName.indexOf('source.julia') > -1) { |
56 |
| - return jlGet(ed) |
| 42 | +exports.getRange = getRange |
| 43 | +function get(editor) { |
| 44 | + if (editor.getGrammar().scopeName.indexOf("source.julia") > -1) { |
| 45 | + return jlGet(editor) |
57 | 46 | } else {
|
58 |
| - return weaveGet(ed) |
| 47 | + return weave_js_1.get(editor) |
59 | 48 | }
|
60 | 49 | }
|
61 |
| - |
62 |
| -function jlGet (ed) { |
63 |
| - var range = getRange(ed) |
64 |
| - var text = ed.getTextInBufferRange(range) |
65 |
| - if (text.trim() === '') text = ' ' |
66 |
| - var res = { |
67 |
| - range: [[range[0].row, range[0].column], [range[1].row, range[1].column]], |
68 |
| - selection: ed.getSelections()[0], |
| 50 | +exports.get = get |
| 51 | +function jlGet(editor) { |
| 52 | + const range = getRange(editor) |
| 53 | + let text = editor.getTextInBufferRange(range) |
| 54 | + if (text.trim() === "") text = " " |
| 55 | + const res = { |
| 56 | + range: [ |
| 57 | + [range[0].row, range[0].column], |
| 58 | + [range[1].row, range[1].column], |
| 59 | + ], |
| 60 | + selection: editor.getSelections()[0], |
69 | 61 | line: range[0].row,
|
70 |
| - text: text |
| 62 | + text: text, |
71 | 63 | }
|
72 | 64 | return [res]
|
73 | 65 | }
|
74 |
| - |
75 |
| -export function moveNext (ed) { |
76 |
| - if (ed == null) { |
77 |
| - ed = atom.workspace.getActiveTextEditor() |
| 66 | +function moveNext(editor) { |
| 67 | + if (!editor) { |
| 68 | + editor = atom.workspace.getActiveTextEditor() |
78 | 69 | }
|
79 |
| - if (ed.getGrammar().scopeName.indexOf('source.julia') > -1) { |
80 |
| - return jlMoveNext(ed) |
| 70 | + // TODO: getActiveTextEditor may return undefined |
| 71 | + if (editor) { |
| 72 | + if (editor.getGrammar().scopeName.indexOf("source.julia") > -1) { |
| 73 | + return jlMoveNext(editor) |
| 74 | + } else { |
| 75 | + return weave_js_1.moveNext(editor) |
| 76 | + } |
81 | 77 | } else {
|
82 |
| - return weaveMoveNext(ed) |
| 78 | + console.error("No editor is given") |
83 | 79 | }
|
84 | 80 | }
|
85 |
| - |
86 |
| -function jlMoveNext (ed) { |
87 |
| - var range = getRange(ed) |
88 |
| - var sel = ed.getSelections()[0] |
89 |
| - var nextRow = range[1].row + 2 // 2 = 1 to get to delimiter line + 1 more to go past it |
90 |
| - return sel.setBufferRange([[nextRow, 0], [nextRow, 0]]) |
| 81 | +exports.moveNext = moveNext |
| 82 | +function jlMoveNext(editor) { |
| 83 | + const range = getRange(editor) |
| 84 | + const sel = editor.getSelections()[0] |
| 85 | + const nextRow = range[1].row + 2 // 2 = 1 to get to delimiter line + 1 more to go past it |
| 86 | + return sel.setBufferRange([ |
| 87 | + [nextRow, 0], |
| 88 | + [nextRow, 0], |
| 89 | + ]) |
91 | 90 | }
|
92 |
| - |
93 |
| -export function movePrev (ed) { |
94 |
| - if (ed == null) { |
95 |
| - ed = atom.workspace.getActiveTextEditor() |
| 91 | +function movePrev(editor) { |
| 92 | + if (!editor) { |
| 93 | + editor = atom.workspace.getActiveTextEditor() |
96 | 94 | }
|
97 |
| - if (ed.getGrammar().scopeName.indexOf('source.weave') > -1) { |
98 |
| - return weaveMovePrev(ed) |
| 95 | + if (editor) { |
| 96 | + if (editor.getGrammar().scopeName.indexOf("source.weave") > -1) { |
| 97 | + return weave_js_1.movePrev(editor) |
| 98 | + } else { |
| 99 | + return jlMovePrev(editor) |
| 100 | + } |
99 | 101 | } else {
|
100 |
| - return jlMovePrev(ed) |
| 102 | + console.error("No editor is given") |
101 | 103 | }
|
102 | 104 | }
|
103 |
| - |
104 |
| -function jlMovePrev (ed) { |
105 |
| - var range = getRange(ed) |
106 |
| - var prevRow = range[0].row - 2 // 2 = 1 to get to delimiter line + 1 more to go past it |
107 |
| - var sel = ed.getSelections()[0] |
108 |
| - return sel.setBufferRange([[prevRow, 0], [prevRow, 0]]) |
| 105 | +exports.movePrev = movePrev |
| 106 | +function jlMovePrev(editor) { |
| 107 | + const range = getRange(editor) |
| 108 | + const prevRow = range[0].row - 2 // 2 = 1 to get to delimiter line + 1 more to go past it |
| 109 | + const sel = editor.getSelections()[0] |
| 110 | + return sel.setBufferRange([ |
| 111 | + [prevRow, 0], |
| 112 | + [prevRow, 0], |
| 113 | + ]) |
109 | 114 | }
|
0 commit comments