diff options
| author | Lukas Fürmetz <fuermetz@mailbox.org> | 2019-01-27 18:17:46 +0100 |
|---|---|---|
| committer | Lukas Fürmetz <fuermetz@mailbox.org> | 2019-01-27 18:34:18 +0100 |
| commit | 46f222eeef6ae5820c91c3aa4f86d385dd126cbc (patch) | |
| tree | 6976ae918e5426386e0caf27c84452cd5d57f348 /elisp.c | |
| parent | 3929a9d573d89365fc68053824045ef654ef1146 (diff) | |
Adapt color handling to the latest libvtermupdate_libvterm
Diffstat (limited to 'elisp.c')
| -rw-r--r-- | elisp.c | 44 |
1 files changed, 9 insertions, 35 deletions
@@ -18,6 +18,10 @@ void provide(emacs_env *env, const char *feature) { env->funcall(env, Qprovide, 1, (emacs_value[]){Qfeat}); } +emacs_value symbol_value(emacs_env *env, emacs_value symbol) { + env->funcall(env, Fsymbol_value, 1, (emacs_value[]){symbol}); +} + int string_bytes(emacs_env *env, emacs_value string) { ptrdiff_t size = 0; env->copy_string_contents(env, string, NULL, &size); @@ -28,10 +32,14 @@ emacs_value string_length(emacs_env *env, emacs_value string) { return env->funcall(env, Flength, 1, (emacs_value[]){string}); } -emacs_value list(emacs_env *env, emacs_value *elements, ptrdiff_t len) { +emacs_value list(emacs_env *env, emacs_value elements[], ptrdiff_t len) { return env->funcall(env, Flist, len, elements); } +emacs_value append(emacs_env *env, emacs_value lists[], ptrdiff_t count) { + return env->funcall(env, Fappend, count, lists); +} + void put_text_property(emacs_env *env, emacs_value string, emacs_value property, emacs_value value) { emacs_value start = env->make_integer(env, 0); @@ -41,40 +49,6 @@ void put_text_property(emacs_env *env, emacs_value string, emacs_value property, (emacs_value[]){start, end, property, value, string}); } -void byte_to_hex(uint8_t byte, char *hex) { snprintf(hex, 3, "%.2X", byte); } - -emacs_value color_to_rgb_string(emacs_env *env, VTermColor color) { - char buffer[8]; - buffer[0] = '#'; - buffer[7] = '\0'; - byte_to_hex(color.red, buffer + 1); - byte_to_hex(color.green, buffer + 3); - byte_to_hex(color.blue, buffer + 5); - - return env->make_string(env, buffer, 7); -}; - -uint8_t hex_to_byte(char *hex) { return strtoul(hex, NULL, 16); } - -VTermColor rgb_string_to_color(emacs_env *env, emacs_value string) { - VTermColor color; - ptrdiff_t len = 8; - char buffer[len]; - char hex[3]; - env->copy_string_contents(env, string, buffer, &len); - hex[0] = buffer[1]; - hex[1] = buffer[2]; - color.red = hex_to_byte(hex); - hex[0] = buffer[3]; - hex[1] = buffer[4]; - color.green = hex_to_byte(hex); - hex[0] = buffer[5]; - hex[1] = buffer[6]; - color.blue = hex_to_byte(hex); - - return color; -}; - void erase_buffer(emacs_env *env) { env->funcall(env, Ferase_buffer, 0, NULL); } void insert(emacs_env *env, emacs_value string) { |
