diff options
author | bptato <nincsnevem662@gmail.com> | 2024-08-11 14:05:15 +0200 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2024-08-11 14:05:15 +0200 |
commit | a0c6f80f76d60bc2bb36942d4162b90e6b5aa2a2 (patch) | |
tree | dbf93dc3b168c4a9e135f0fa4e1300892645ba68 /src/local | |
parent | d0910f85adfec4a2cddfe2297be821841f4dd671 (diff) | |
download | chawan-a0c6f80f76d60bc2bb36942d4162b90e6b5aa2a2.tar.gz |
dom: remove generic JS bindings
Dispatch manually with fromJS instead.
Diffstat (limited to 'src/local')
-rw-r--r-- | src/local/client.nim | 2 | ||||
-rw-r--r-- | src/local/container.nim | 38 | ||||
-rw-r--r-- | src/local/pager.nim | 17 |
3 files changed, 31 insertions, 26 deletions
diff --git a/src/local/client.nim b/src/local/client.nim index d3fd9ebe..3d3e1bb0 100644 --- a/src/local/client.nim +++ b/src/local/client.nim @@ -821,7 +821,7 @@ proc newClient*(config: Config; forkserver: ForkServer; loaderPid: int; factory: newCAtomFactory(), loader: loader ) - jsrt.setInterruptHandler(interruptHandler, cast[pointer](client)) + JS_SetInterruptHandler(jsrt, interruptHandler, cast[pointer](client)) let global = JS_GetGlobalObject(jsctx) jsctx.setGlobal(client) jsctx.definePropertyE(global, "cmd", config.cmd.jsObj) diff --git a/src/local/container.nim b/src/local/container.nim index de4a78ff..a01d5e3b 100644 --- a/src/local/container.nim +++ b/src/local/container.nim @@ -1340,26 +1340,26 @@ proc updateCursor(container: Container) = container.setCursorY(container.lastVisibleLine) container.alert("Last line is #" & $container.numLines) -proc gotoLine*[T: string|int](container: Container; s: T) = - when s is string: - if s == "": - container.redraw = true - elif s[0] == '^': - container.cursorFirstLine() - elif s[0] == '$': - container.cursorLastLine() - else: - let i = parseUInt32(s, allowSign = true) - if i.isSome and i.get > 0: - container.markPos0() - container.setCursorY(int(i.get - 1)) - container.markPos() - else: - container.alert("First line is #1") # :) +proc gotoLine*(container: Container; s: string) = + if s == "": + container.redraw = true + elif s[0] == '^': + container.cursorFirstLine() + elif s[0] == '$': + container.cursorLastLine() else: - container.markPos0() - container.setCursorY(s - 1) - container.markPos() + let i = parseUInt32(s, allowSign = true) + if i.isSome and i.get > 0: + container.markPos0() + container.setCursorY(int(i.get - 1)) + container.markPos() + else: + container.alert("First line is #1") # :) + +proc gotoLine*(container: Container; n: int) = + container.markPos0() + container.setCursorY(n - 1) + container.markPos() proc pushCursorPos*(container: Container) = if container.select != nil: diff --git a/src/local/pager.nim b/src/local/pager.nim index 592db0c6..354b1dc5 100644 --- a/src/local/pager.nim +++ b/src/local/pager.nim @@ -312,12 +312,17 @@ proc isearchBackward(pager: Pager) {.jsfunc.} = pager.container.markPos0() pager.setLineEdit(lmISearchB) -proc gotoLine[T: string|int](pager: Pager; s: T = "") {.jsfunc.} = - when s is string: - if s == "": - pager.setLineEdit(lmGotoLine) - return - pager.container.gotoLine(s) +proc gotoLine(ctx: JSContext; pager: Pager; val = JS_UNDEFINED): Opt[void] + {.jsfunc.} = + var n: int + if ctx.fromJS(val, n).isSome: + pager.container.gotoLine(n) + elif JS_IsUndefined(val): + pager.setLineEdit(lmGotoLine) + else: + var s: string + ?ctx.fromJS(val, s) + pager.container.gotoLine(s) proc dumpAlerts*(pager: Pager) = for msg in pager.alerts: |