Browse Source

fix(lib): fix automatic title abort inside Emacs (#10124)

Closes #10124

Co-authored-by: Paul Schorfheide <pschorf2@gmail.com>
Co-authored-by: Alastair Rankine <alastair@girtby.net>
Marc Cornellà 2 years ago
parent
commit
54e3e8ef54
1 changed files with 10 additions and 10 deletions
  1. 10 10
      lib/termsupport.zsh

+ 10 - 10
lib/termsupport.zsh

@@ -10,7 +10,8 @@ function title {
   emulate -L zsh
   setopt prompt_subst
 
-  [[ "$INSIDE_EMACS" == *term* ]] && return
+  # Don't set the title if inside emacs, unless using vterm
+  [[ -n "$INSIDE_EMACS" && "$INSIDE_EMACS" != vterm ]] && return
 
   # if $2 is unset use $1 as default
   # if it is set and empty, leave it as is
@@ -29,12 +30,9 @@ function title {
         print -Pn "\e]2;${2:q}\a" # set window name
         print -Pn "\e]1;${1:q}\a" # set tab name
       else
-        # Try to use terminfo to set the title
-        # If the feature is available set title
-        if [[ -n "$terminfo[fsl]" ]] && [[ -n "$terminfo[tsl]" ]]; then
-          echoti tsl
-          print -Pn "$1"
-          echoti fsl
+        # Try to use terminfo to set the title if the feature is available
+        if (( ${+terminfo[fsl]} && ${+terminfo[tsl]} )); then
+          print -Pn "${terminfo[tsl]}$1${terminfo[fsl]}"
         fi
       fi
       ;;
@@ -105,10 +103,12 @@ function omz_termsupport_preexec {
   title '$CMD' '%100>...>$LINE%<<'
 }
 
-autoload -U add-zsh-hook
-add-zsh-hook precmd omz_termsupport_precmd
-add-zsh-hook preexec omz_termsupport_preexec
+autoload -Uz add-zsh-hook
 
+if [[ -z "$INSIDE_EMACS" || "$INSIDE_EMACS" = vterm ]]; then
+  add-zsh-hook precmd omz_termsupport_precmd
+  add-zsh-hook preexec omz_termsupport_preexec
+fi
 
 # Keep Apple Terminal.app's current working directory updated
 # Based on this answer: https://superuser.com/a/315029