linenoise 0.4.1 → 0.4.2
raw patch · 2 files changed
+119/−2 lines, 2 files
Files
- cbits/linenoise.h +113/−0
- linenoise.cabal +6/−2
+ cbits/linenoise.h view
@@ -0,0 +1,113 @@+/* linenoise.h -- VERSION 1.0+ *+ * 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-2023, Salvatore Sanfilippo <antirez at gmail dot com>+ * Copyright (c) 2010-2013, 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.+ */++#ifndef __LINENOISE_H+#define __LINENOISE_H++#ifdef __cplusplus+extern "C" {+#endif++#include <stddef.h> /* For size_t. */++extern char *linenoiseEditMore;++/* The linenoiseState structure represents the state during line editing.+ * We pass this state to functions implementing specific editing+ * functionalities. */+struct linenoiseState {+ int in_completion; /* The user pressed TAB and we are now in completion+ * mode, so input is handled by completeLine(). */+ size_t completion_idx; /* Index of next completion to propose. */+ int ifd; /* Terminal stdin file descriptor. */+ int ofd; /* Terminal stdout file descriptor. */+ char *buf; /* Edited line buffer. */+ size_t buflen; /* Edited line buffer size. */+ const char *prompt; /* Prompt to display. */+ size_t plen; /* Prompt length. */+ size_t pos; /* Current cursor position. */+ size_t oldpos; /* Previous refresh cursor position. */+ size_t len; /* Current edited line length. */+ size_t cols; /* Number of columns in terminal. */+ size_t oldrows; /* Rows used by last refrehsed line (multiline mode) */+ int history_index; /* The history index we are currently editing. */+};++typedef struct linenoiseCompletions {+ size_t len;+ char **cvec;+} linenoiseCompletions;++/* Non blocking API. */+int linenoiseEditStart(struct linenoiseState *l, int stdin_fd, int stdout_fd, char *buf, size_t buflen, const char *prompt);+char *linenoiseEditFeed(struct linenoiseState *l);+void linenoiseEditStop(struct linenoiseState *l);+void linenoiseHide(struct linenoiseState *l);+void linenoiseShow(struct linenoiseState *l);++/* Blocking API. */+char *linenoise(const char *prompt);+void linenoiseFree(void *ptr);++/* Completion API. */+typedef void(linenoiseCompletionCallback)(const char *, linenoiseCompletions *);+typedef char*(linenoiseHintsCallback)(const char *, int *color, int *bold);+typedef void(linenoiseFreeHintsCallback)(void *);+void linenoiseSetCompletionCallback(linenoiseCompletionCallback *);+void linenoiseSetHintsCallback(linenoiseHintsCallback *);+void linenoiseSetFreeHintsCallback(linenoiseFreeHintsCallback *);+void linenoiseAddCompletion(linenoiseCompletions *, const char *);++/* History API. */+int linenoiseHistoryAdd(const char *line);+int linenoiseHistorySetMaxLen(int len);+int linenoiseHistorySave(const char *filename);+int linenoiseHistoryLoad(const char *filename);++/* Other utilities. */+void linenoiseClearScreen(void);+void linenoiseSetMultiLine(int ml);+void linenoisePrintKeyCodes(void);+void linenoiseMaskModeEnable(void);+void linenoiseMaskModeDisable(void);++#ifdef __cplusplus+}+#endif++#endif /* __LINENOISE_H */
linenoise.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: d7c93d3c5e6b850809e5aae6ce9b3df8784da16908082839f3fef8a267d5fe2e+-- hash: fe699d3f8d98d113f63c1ac0e1cd5597a7e3533238e63980f5e5c6a1b8a2dfff name: linenoise-version: 0.4.1+version: 0.4.2 synopsis: A lightweight readline-replacement library for Haskell description: Please see the README on GitHub at <https://github.com/ejconlon/haskell-linenoise#readme> category: User Interfaces@@ -40,6 +40,8 @@ ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints -fno-warn-unused-top-binds include-dirs: cbits+ install-includes:+ cbits/linenoise.h c-sources: cbits/linenoise.c build-depends:@@ -58,6 +60,8 @@ hs-source-dirs: app ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints -fno-warn-unused-top-binds -threaded -rtsopts -with-rtsopts=-N+ install-includes:+ cbits/linenoise.h build-depends: base >=4.12 && <5 , bytestring >=0.10 && <1