packages feed

linenoise 0.4.1 → 0.4.2

raw patch · 2 files changed

+119/−2 lines, 2 files

Files

+ 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