test / bt-source /panel /BTPanel /static /editor /ext-whitespace.js
GGSheng's picture
feat: deploy Gemma 4 to hf space
08c964e verified
ace.define(
'ace/ext/whitespace',
['require', 'exports', 'module', 'ace/lib/lang'],
function (e, t, n) {
'use strict'
var r = e('../lib/lang')
;(t.$detectIndentation = function (e, t) {
function c(e) {
var t = 0
for (var r = e; r < n.length; r += e) t += n[r] || 0
return t
}
var n = [],
r = [],
i = 0,
s = 0,
o = Math.min(e.length, 1e3)
for (var u = 0; u < o; u++) {
var a = e[u]
if (!/^\s*[^*+\-\s]/.test(a)) continue
if (a[0] == ' ') i++, (s = -Number.MAX_VALUE)
else {
var f = a.match(/^ */)[0].length
if (f && a[f] != ' ') {
var l = f - s
l > 0 && !(s % l) && !(f % l) && (r[l] = (r[l] || 0) + 1), (n[f] = (n[f] || 0) + 1)
}
s = f
}
while (u < o && a[a.length - 1] == '\\') a = e[u++]
}
var h = r.reduce(function (e, t) {
return e + t
}, 0),
p = { score: 0, length: 0 },
d = 0
for (var u = 1; u < 12; u++) {
var v = c(u)
u == 1 ? ((d = v), (v = n[1] ? 0.9 : 0.8), n.length || (v = 0)) : (v /= d),
r[u] && (v += r[u] / h),
v > p.score && (p = { score: v, length: u })
}
if (p.score && p.score > 1.4) var m = p.length
if (i > d + 1) {
if (m == 1 || d < i / 4 || p.score < 1.8) m = undefined
return { ch: ' ', length: m }
}
if (d > i + 1) return { ch: ' ', length: m }
}),
(t.detectIndentation = function (e) {
var n = e.getLines(0, 1e3),
r = t.$detectIndentation(n) || {}
return r.ch && e.setUseSoftTabs(r.ch == ' '), r.length && e.setTabSize(r.length), r
}),
(t.trimTrailingSpace = function (e, t) {
var n = e.getDocument(),
r = n.getAllLines(),
i = t && t.trimEmpty ? -1 : 0,
s = [],
o = -1
t &&
t.keepCursorPosition &&
(e.selection.rangeCount
? e.selection.rangeList.ranges.forEach(function (e, t, n) {
var r = n[t + 1]
if (r && r.cursor.row == e.cursor.row) return
s.push(e.cursor)
})
: s.push(e.selection.getCursor()),
(o = 0))
var u = s[o] && s[o].row
for (var a = 0, f = r.length; a < f; a++) {
var l = r[a],
c = l.search(/\s+$/)
a == u &&
(c < s[o].column && c > i && (c = s[o].column), o++, (u = s[o] ? s[o].row : -1)),
c > i && n.removeInLine(a, c, l.length)
}
}),
(t.convertIndentation = function (e, t, n) {
var i = e.getTabString()[0],
s = e.getTabSize()
n || (n = s), t || (t = i)
var o = t == ' ' ? t : r.stringRepeat(t, n),
u = e.doc,
a = u.getAllLines(),
f = {},
l = {}
for (var c = 0, h = a.length; c < h; c++) {
var p = a[c],
d = p.match(/^\s*/)[0]
if (d) {
var v = e.$getStringScreenWidth(d)[0],
m = Math.floor(v / s),
g = v % s,
y = f[m] || (f[m] = r.stringRepeat(o, m))
;(y += l[g] || (l[g] = r.stringRepeat(' ', g))),
y != d && (u.removeInLine(c, 0, d.length), u.insertInLine({ row: c, column: 0 }, y))
}
}
e.setTabSize(n), e.setUseSoftTabs(t == ' ')
}),
(t.$parseStringArg = function (e) {
var t = {}
;/t/.test(e) ? (t.ch = ' ') : /s/.test(e) && (t.ch = ' ')
var n = e.match(/\d+/)
return n && (t.length = parseInt(n[0], 10)), t
}),
(t.$parseArg = function (e) {
return e
? typeof e == 'string'
? t.$parseStringArg(e)
: typeof e.text == 'string'
? t.$parseStringArg(e.text)
: e
: {}
}),
(t.commands = [
{
name: 'detectIndentation',
description: 'Detect indentation from content',
exec: function (e) {
t.detectIndentation(e.session)
},
},
{
name: 'trimTrailingSpace',
description: 'Trim trailing whitespace',
exec: function (e, n) {
t.trimTrailingSpace(e.session, n)
},
},
{
name: 'convertIndentation',
description: 'Convert indentation to ...',
exec: function (e, n) {
var r = t.$parseArg(n)
t.convertIndentation(e.session, r.ch, r.length)
},
},
{
name: 'setIndentation',
description: 'Set indentation',
exec: function (e, n) {
var r = t.$parseArg(n)
r.length && e.session.setTabSize(r.length),
r.ch && e.session.setUseSoftTabs(r.ch == ' ')
},
},
])
}
)
;(function () {
ace.require(['ace/ext/whitespace'], function (m) {
if (typeof module == 'object' && typeof exports == 'object' && module) {
module.exports = m
}
})
})()