Blame view

plugins/screen/screen.plugin.zsh 2.04 KB
093a6c34b   mj   Squashed 'repos/r...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
  # if using GNU screen, let the zsh tell screen what the title and hardstatus
  # of the tab window should be.
  if [[ "$TERM" == screen* ]]; then
    if [[ $_GET_PATH == '' ]]; then
      _GET_PATH='echo $PWD | sed "s/^\/Users\//~/;s/^\/home\//~/;s/^~$USER/~/"'
    fi
    if [[ $_GET_HOST == '' ]]; then
      _GET_HOST='echo $HOST | sed "s/\..*//"'
    fi
  
    # use the current user as the prefix of the current tab title 
    TAB_TITLE_PREFIX='"`'$_GET_HOST'`:`'$_GET_PATH' | sed "s:..*/::"`$PROMPT_CHAR"'
    # when at the shell prompt, show a truncated version of the current path (with
    # standard ~ replacement) as the rest of the title.
    TAB_TITLE_PROMPT='$SHELL:t'
    # when running a command, show the title of the command as the rest of the
    # title (truncate to drop the path to the command)
    TAB_TITLE_EXEC='$cmd[1]:t'
  
    # use the current path (with standard ~ replacement) in square brackets as the
    # prefix of the tab window hardstatus.
    TAB_HARDSTATUS_PREFIX='"[`'$_GET_PATH'`] "'
    # when at the shell prompt, use the shell name (truncated to remove the path to
    # the shell) as the rest of the title
    TAB_HARDSTATUS_PROMPT='$SHELL:t'
    # when running a command, show the command name and arguments as the rest of
    # the title
    TAB_HARDSTATUS_EXEC='$cmd'
  
    # tell GNU screen what the tab window title ($1) and the hardstatus($2) should be
    function screen_set()
    {
      # set the tab window title (%t) for screen
      print -nR $'\033k'$1$'\033'\\\
  
      # set hardstatus of tab window (%h) for screen
      print -nR $'\033]0;'$2$'\a'
    }
    # called by zsh before executing a command
    function preexec()
    {
      local -a cmd; cmd=(${(z)1}) # the command string
      eval "tab_title=$TAB_TITLE_PREFIX:$TAB_TITLE_EXEC"
      eval "tab_hardstatus=$TAB_HARDSTATUS_PREFIX:$TAB_HARDSTATUS_EXEC"
      screen_set $tab_title $tab_hardstatus
    }
    # called by zsh before showing the prompt
    function precmd()
    {
      eval "tab_title=$TAB_TITLE_PREFIX:$TAB_TITLE_PROMPT"
      eval "tab_hardstatus=$TAB_HARDSTATUS_PREFIX:$TAB_HARDSTATUS_PROMPT"
      screen_set $tab_title $tab_hardstatus
    }
  fi