Skip to content

Commit d16c82e

Browse files
committed
npm run build
1 parent aa7daeb commit d16c82e

File tree

2 files changed

+118
-57
lines changed

2 files changed

+118
-57
lines changed

lib/misc/cells.d.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { Point, TextEditor } from "atom";
2+
/**
3+
* @param {TextEditor} editor
4+
* @returns {[Point, Point]}
5+
*/
6+
export declare function getRange(editor: TextEditor): [Point, Point];
7+
/**
8+
* @param {TextEditor} editor
9+
*/
10+
export declare function get(editor: TextEditor): {
11+
range: any[][];
12+
selection: any;
13+
line: any;
14+
text: any;
15+
}[];
16+
/**
17+
* @param {TextEditor | null | undefined} editor
18+
*/
19+
export declare function moveNext(editor: TextEditor | null | undefined): void | null;
20+
/**
21+
* @param {TextEditor | undefined | null} editor
22+
*/
23+
export declare function movePrev(editor: TextEditor | undefined | null): void | null;

lib/misc/cells.js

Lines changed: 95 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,109 +1,147 @@
11
'use babel'
2-
3-
import { get as weaveGet,
4-
moveNext as weaveMoveNext,
5-
movePrev as weaveMovePrev } from './weave.js'
6-
2+
import {
3+
get as weaveGet,
4+
moveNext as weaveMoveNext,
5+
movePrev as weaveMovePrev,
6+
} from './weave.js'
77
import { getLine } from './blocks.js'
88

9-
import { Point } from 'atom'
10-
11-
export function getRange (ed) {
9+
/**
10+
* @param {TextEditor} editor
11+
* @returns {[Point, Point]}
12+
*/
13+
export function getRange(editor) {
1214
// Cell range is:
1315
// Start of line below top delimiter (and/or start of top row of file) to
1416
// 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()
17+
const buffer = editor.getBuffer()
18+
const start = buffer.getFirstPosition()
19+
const end = buffer.getEndPosition()
20+
const regexString =
21+
'^(' +
22+
atom.config.get('julia-client.uiOptions.cellDelimiter').join('|') +
23+
')'
24+
const regex = new RegExp(regexString)
25+
const cursor = editor.getCursorBufferPosition()
2126
cursor.column = Infinity // cursor on delimiter line means eval cell below
22-
23-
2427
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
28+
for (let i = cursor.row + 1, l = editor.getLastBufferRow(); i <= l; i++) {
29+
const { line, scope } = getLine(editor, i)
30+
foundDelim =
31+
regex.test(line) && scope.join('.').indexOf('comment.line') > -1
2832
end.row = i
2933
if (foundDelim) break
3034
}
31-
3235
if (foundDelim) {
3336
end.row -= 1
3437
if (end.row < 0) end.row = 0
3538
end.column = Infinity
3639
}
37-
3840
foundDelim = false
3941
if (cursor.row > 0) {
4042
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
43+
const { line, scope } = getLine(editor, i)
44+
foundDelim =
45+
regex.test(line) && scope.join('.').indexOf('comment.line') > -1
4346
start.row = i
4447
if (foundDelim) {
4548
break
4649
}
4750
}
4851
start.column = 0
4952
}
50-
5153
return [start, end]
5254
}
5355

54-
export function get (ed) {
55-
if (ed.getGrammar().scopeName.indexOf('source.julia') > -1) {
56-
return jlGet(ed)
56+
/**
57+
* @param {TextEditor} editor
58+
*/
59+
export function get(editor) {
60+
if (editor.getGrammar().scopeName.indexOf('source.julia') > -1) {
61+
return jlGet(editor)
5762
} else {
58-
return weaveGet(ed)
63+
return weaveGet(editor)
5964
}
6065
}
6166

62-
function jlGet (ed) {
63-
var range = getRange(ed)
64-
var text = ed.getTextInBufferRange(range)
67+
/**
68+
* @param {TextEditor} editor
69+
*/
70+
function jlGet(editor) {
71+
const range = getRange(editor)
72+
let text = editor.getTextInBufferRange(range)
6573
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],
74+
const res = {
75+
range: [
76+
[range[0].row, range[0].column],
77+
[range[1].row, range[1].column],
78+
],
79+
selection: editor.getSelections()[0],
6980
line: range[0].row,
70-
text: text
81+
text: text,
7182
}
7283
return [res]
7384
}
7485

75-
export function moveNext (ed) {
76-
if (ed == null) {
77-
ed = atom.workspace.getActiveTextEditor()
86+
/**
87+
* @param {TextEditor | null | undefined} editor
88+
*/
89+
export function moveNext(editor) {
90+
if (!editor) {
91+
editor = atom.workspace.getActiveTextEditor()
7892
}
79-
if (ed.getGrammar().scopeName.indexOf('source.julia') > -1) {
80-
return jlMoveNext(ed)
93+
// TODO: getActiveTextEditor may return undefined
94+
if (editor) {
95+
if (editor.getGrammar().scopeName.indexOf('source.julia') > -1) {
96+
return jlMoveNext(editor)
97+
} else {
98+
return weaveMoveNext(editor)
99+
}
81100
} else {
82-
return weaveMoveNext(ed)
101+
console.error('No editor is given')
83102
}
84103
}
85104

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]])
105+
/**
106+
* @param {TextEditor} editor
107+
*/
108+
function jlMoveNext(editor) {
109+
const range = getRange(editor)
110+
const sel = editor.getSelections()[0]
111+
const nextRow = range[1].row + 2 // 2 = 1 to get to delimiter line + 1 more to go past it
112+
return sel.setBufferRange([
113+
[nextRow, 0],
114+
[nextRow, 0],
115+
])
91116
}
92117

93-
export function movePrev (ed) {
94-
if (ed == null) {
95-
ed = atom.workspace.getActiveTextEditor()
118+
/**
119+
* @param {TextEditor | undefined | null} editor
120+
*/
121+
export function movePrev(editor) {
122+
if (!editor) {
123+
editor = atom.workspace.getActiveTextEditor()
96124
}
97-
if (ed.getGrammar().scopeName.indexOf('source.weave') > -1) {
98-
return weaveMovePrev(ed)
125+
if (editor) {
126+
if (editor.getGrammar().scopeName.indexOf('source.weave') > -1) {
127+
return weaveMovePrev(editor)
128+
} else {
129+
return jlMovePrev(editor)
130+
}
99131
} else {
100-
return jlMovePrev(ed)
132+
console.error('No editor is given')
101133
}
102134
}
103135

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]])
136+
/**
137+
* @param {TextEditor} editor
138+
*/
139+
function jlMovePrev(editor) {
140+
const range = getRange(editor)
141+
const prevRow = range[0].row - 2 // 2 = 1 to get to delimiter line + 1 more to go past it
142+
const sel = editor.getSelections()[0]
143+
return sel.setBufferRange([
144+
[prevRow, 0],
145+
[prevRow, 0],
146+
])
109147
}

0 commit comments

Comments
 (0)