vendor/linenoise.nim
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# linenoise.h -- guerrilla line editing library against the idea that a # line editing lib needs to be 20,000 lines of C code. # # See linenoise.c for more information. # # ------------------------------------------------------------------------ # # Copyright (c) 2010, Salvatore Sanfilippo <antirez at gmail dot com> # Copyright (c) 2010, Pieter Noordhuis <pcnoordhuis at gmail dot com> # # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # {.compile: "vendor/linenoise/liblinenoise.c".} {.push importc.} when not(defined(LINENOISE_H)): const LINENOISE_H* = true when not(defined(NO_COMPLETION)): type linenoiseCompletions* = object len*: csize cvec*: cstringArray linenoiseCompletionCallback* = proc (a: cstring, b: ptr linenoiseCompletions) # # The callback type for tab completion handlers. # #typedef void(linenoiseCompletionCallback)(const char *, linenoiseCompletions *); # # Sets the current tab completion handler and returns the previous one, or NULL # if no prior one has been set. # proc linenoiseSetCompletionCallback*(a: linenoiseCompletionCallback): linenoiseCompletions; # # Adds a copy of the given string to the given completion list. The copy is owned # by the linenoiseCompletions object. # proc linenoiseAddCompletion*(a2: ptr linenoiseCompletions; a3: cstring) # # Prompts for input using the given string as the input # prompt. Returns when the user has tapped ENTER or (on an empty # line) EOF (Ctrl-D on Unix, Ctrl-Z on Windows). Returns either # a copy of the entered string (for ENTER) or NULL (on EOF). The # caller owns the returned string and must eventually free() it. # proc linenoise*(prompt: cstring): cstring # # Activates password entry in future calls of linenoise(), i.e. user # input will not be echoed back to the terminal during entry. # const LN_HIDDEN_NO* = (0) # Fully visible entry. LN_HIDDEN_ALL* = (1) # Fully hidden, no echo at all LN_HIDDEN_STAR* = (2) # Hidden entry, echoing *'s back proc linenoiseSetHidden*(enable: cint) # # Activates normal entry in future calls of linenoise(), i.e. user # input will again be echoed back to the terminal during entry. # proc linenoiseGetHidden*(): cint # # Adds a copy of the given line of the command history. # proc linenoiseHistoryAdd*(line: cstring): cint # # Sets the maximum length of the command history, in lines. # If the history is currently longer, it will be trimmed, # retaining only the most recent entries. If len is 0 or less # then this function does nothing. # proc linenoiseHistorySetMaxLen*(len: cint): cint # # Returns the current maximum length of the history, in lines. # proc linenoiseHistoryGetMaxLen*(): cint # # Saves the current contents of the history to the given file. # Returns 0 on success. # proc linenoiseHistorySave*(filename: cstring): cint # # Replaces the current history with the contents # of the given file. Returns 0 on success. # proc linenoiseHistoryLoad*(filename: cstring): cint # # Frees all history entries, clearing the history. # proc linenoiseHistoryFree*() # # Returns a pointer to the list of history entries, writing its # length to *len if len is not NULL. The memory is owned by linenoise # and must not be freed. # proc linenoiseHistory*(len: ptr cint): cstringArray # # Returns the number of display columns in the current terminal. # proc linenoiseColumns*(): cint # # Returns the number of display rows|lines in the current terminal. # proc linenoiseLines*(): cint |