diff options
| -rw-r--r-- | README.md | 2 | ||||
| -rw-r--r-- | vterm-module.c | 29 |
2 files changed, 15 insertions, 16 deletions
@@ -100,7 +100,7 @@ For `zsh` put this in your `.zshrc`: ```zsh function chpwd() { - echo -e "\e]51;$(pwd)\e\\" + print -Pn "\e]51;$(pwd)\e\\"; } ``` diff --git a/vterm-module.c b/vterm-module.c index 21ace5f..7b8270f 100644 --- a/vterm-module.c +++ b/vterm-module.c @@ -392,7 +392,8 @@ static void term_redraw(Term *term, emacs_env *env) { } if (term->directory_changed) { - set_directory(env, env->make_string(env, term->directory, strlen(term->directory))); + set_directory( + env, env->make_string(env, term->directory, strlen(term->directory))); term->directory_changed = false; } @@ -644,20 +645,18 @@ void term_finalize(void *object) { free(term); } -static int osc_callback(const char *command, size_t cmdlen, void *user) -{ - Term *term = (Term *) user; +static int osc_callback(const char *command, size_t cmdlen, void *user) { + Term *term = (Term *)user; char buffer[cmdlen + 1]; buffer[cmdlen] = '\0'; memcpy(buffer, command, cmdlen); - if (term->directory != NULL) { - free(term->directory); - term->directory = NULL; - } - if (cmdlen > 3 && buffer[0] == '5' && buffer[1] == '1' && buffer[2] == ';') { + if (term->directory != NULL) { + free(term->directory); + term->directory = NULL; + } term->directory = malloc(cmdlen - 3 + 1); strcpy(term->directory, &buffer[3]); term->directory_changed = true; @@ -667,12 +666,12 @@ static int osc_callback(const char *command, size_t cmdlen, void *user) } static VTermParserCallbacks parser_callbacks = { - .text = NULL, - .control = NULL, - .escape = NULL, - .csi = NULL, - .osc = &osc_callback, - .dcs = NULL, + .text = NULL, + .control = NULL, + .escape = NULL, + .csi = NULL, + .osc = &osc_callback, + .dcs = NULL, }; emacs_value Fvterm_new(emacs_env *env, ptrdiff_t nargs, emacs_value args[], |
