std/linenoise

Source   Edit  

Types

CompletionCallback = proc (a2: cstring; a3: ptr Completions) {.cdecl.}
Source   Edit  
Completions = object
  len*: csize_t
  cvec*: cstringArray
Source   Edit  
LinenoiseData = object
Source   Edit  
ReadLineResult = object
  line*: string
  status*: Status
Source   Edit  
Status = enum
  lnCtrlUnkown, lnCtrlC, lnCtrlD
Source   Edit  

Procs

proc addCompletion(a2: ptr Completions; a3: cstring) {.
    importc: "linenoiseAddCompletion", ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc clearScreen() {.importc: "linenoiseClearScreen", ...raises: [], tags: [],
                     forbids: [].}
Source   Edit  
proc free(s: cstring) {.importc: "free", header: "<stdlib.h>", ...raises: [],
                        tags: [], forbids: [].}
Source   Edit  
proc historyAdd(line: cstring): cint {.importc: "linenoiseHistoryAdd",
                                       discardable, ...raises: [], tags: [],
                                       forbids: [].}
Source   Edit  
proc historyLoad(filename: cstring): cint {.importc: "linenoiseHistoryLoad",
    ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc historySave(filename: cstring): cint {.importc: "linenoiseHistorySave",
    ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc historySetMaxLen(len: cint): cint {.importc: "linenoiseHistorySetMaxLen",
    ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc printKeyCodes() {.importc: "linenoisePrintKeyCodes", ...raises: [], tags: [],
                       forbids: [].}
Source   Edit  
proc readLine(prompt: cstring): cstring {.importc: "linenoise", ...raises: [],
    tags: [], forbids: [].}
Source   Edit  
proc readLineStatus(prompt: string; result: var ReadLineResult) {....raises: [],
    tags: [], forbids: [].}
line editing API that allows returning the line entered and an indicator of which control key was entered, allowing user to distinguish between for example ctrl-C vs ctrl-D.

Example: cmd: -d:nimExperimentalLinenoiseExtra -r:off

var ret: ReadLineResult
while true:
  readLineStatus("name: ", ret) # ctrl-D will exit, ctrl-C will go to next prompt
  if ret.line.len > 0: echo ret.line
  if ret.status == lnCtrlD: break
echo "exiting"
Source   Edit  
proc setCompletionCallback(a2: CompletionCallback) {.
    importc: "linenoiseSetCompletionCallback", ...raises: [], tags: [], forbids: [].}
Source   Edit  
proc setMultiLine(ml: cint) {.importc: "linenoiseSetMultiLine", ...raises: [],
                              tags: [], forbids: [].}
Source   Edit