This is a MODIFIED version of libvterm.
The original can be found:
-On the original site (tar archive and Bazaar repository):
+- on the original site (tar archive and Bazaar repository):
http://www.leonerd.org.uk/code/libvterm/
-Cloned on Github:
+- cloned on Github:
https://github.com/neovim/libvterm
Modifications:
- Add a .gitignore file.
- Convert from C99 to C90.
- Other changes to support embedding in Vim.
--
/* Free and cleanup a terminal and all its data. */
void vterm_free(VTerm* vt);
+/* Get the current size of the terminal and store in "rowsp" and "colsp". */
void vterm_get_size(const VTerm *vt, int *rowsp, int *colsp);
+
void vterm_set_size(VTerm *vt, int rows, int cols);
int vterm_get_utf8(const VTerm *vt);
*
* Don't confuse this with the final byte of the CSI escape; 'a' in this case.
*/
-#define CSI_ARG_FLAG_MORE (1<<31)
-#define CSI_ARG_MASK (~(1<<31))
+#define CSI_ARG_FLAG_MORE (1<<30)
+#define CSI_ARG_MASK (~(1<<30))
#define CSI_ARG_HAS_MORE(a) ((a) & CSI_ARG_FLAG_MORE)
#define CSI_ARG(a) ((a) & CSI_ARG_MASK)
/* Can't use -1 to indicate a missing argument; use this instead */
-#define CSI_ARG_MISSING ((1UL<<31)-1)
+#define CSI_ARG_MISSING ((1<<30)-1)
#define CSI_ARG_IS_MISSING(a) (CSI_ARG(a) == CSI_ARG_MISSING)
#define CSI_ARG_OR(a,def) (CSI_ARG(a) == CSI_ARG_MISSING ? (def) : CSI_ARG(a))
void vterm_state_set_unrecognised_fallbacks(VTermState *state, const VTermParserCallbacks *fallbacks, void *user);
void *vterm_state_get_unrecognised_fbdata(VTermState *state);
+/* Initialize the state. */
void vterm_state_reset(VTermState *state, int hard);
+
void vterm_state_get_cursorpos(const VTermState *state, VTermPos *cursorpos);
void vterm_state_get_default_colors(const VTermState *state, VTermColor *default_fg, VTermColor *default_bg);
void vterm_state_get_palette_color(const VTermState *state, int index, VTermColor *col);
int (*sb_popline)(int cols, VTermScreenCell *cells, void *user);
} VTermScreenCallbacks;
+/* Return the screen of the vterm. */
VTermScreen *vterm_obtain_screen(VTerm *vt);
/*
VTERM_DAMAGE_SCROLL /* entire screen + scrollrect */
} VTermDamageSize;
+/* Invoke the relevant callbacks to update the screen. */
void vterm_screen_flush_damage(VTermScreen *screen);
+
void vterm_screen_set_damage_merge(VTermScreen *screen, VTermDamageSize size);
+/*
+ * Reset the screen. Also invokes vterm_state_reset().
+ * Must be called before the terminal can be used.
+ */
void vterm_screen_reset(VTermScreen *screen, int hard);
/* Neither of these functions NUL-terminate the buffer */