diff options
author | Ryan Schanzenbacher <ryan@rschanz.org> | 2024-04-05 11:57:45 -0400 |
---|---|---|
committer | Ryan Schanzenbacher <ryan@rschanz.org> | 2024-04-05 11:57:45 -0400 |
commit | b88d77fb2d0d5028a6f5670695dee6bec129501f (patch) | |
tree | 2536b0461d297e647cf07157641c9b1223339adf /home-config/fish/functions/fish_prompt.fish | |
parent | 776a7ca55d2d2c3f396de91db1c6c3c5065012cd (diff) |
ahhh sloppy fish, still needs fixing, esp with the vars
Diffstat (limited to 'home-config/fish/functions/fish_prompt.fish')
-rw-r--r-- | home-config/fish/functions/fish_prompt.fish | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/home-config/fish/functions/fish_prompt.fish b/home-config/fish/functions/fish_prompt.fish new file mode 100644 index 0000000..3b58b7b --- /dev/null +++ b/home-config/fish/functions/fish_prompt.fish | |||
@@ -0,0 +1,171 @@ | |||
1 | function fish_prompt | ||
2 | end # In case this file gets loaded non-interactively, e.g by conda | ||
3 | status is-interactive || exit | ||
4 | |||
5 | _tide_remove_unusable_items | ||
6 | _tide_cache_variables | ||
7 | _tide_parent_dirs | ||
8 | source (functions --details _tide_pwd) | ||
9 | |||
10 | set -l prompt_var _tide_prompt_$fish_pid | ||
11 | set -U $prompt_var # Set var here so if we erase $prompt_var, bg job won't set a uvar | ||
12 | |||
13 | set_color normal | read -l color_normal | ||
14 | status fish-path | read -l fish_path | ||
15 | |||
16 | # _tide_repaint prevents us from creating a second background job | ||
17 | function _tide_refresh_prompt --on-variable $prompt_var --on-variable COLUMNS | ||
18 | set -g _tide_repaint | ||
19 | commandline -f repaint | ||
20 | end | ||
21 | |||
22 | if contains newline $_tide_left_items # two line prompt initialization | ||
23 | test "$tide_prompt_add_newline_before" = true && set -l add_newline '\n' | ||
24 | |||
25 | set_color $tide_prompt_color_frame_and_connection -b normal | read -l prompt_and_frame_color | ||
26 | |||
27 | set -l column_offset 5 | ||
28 | test "$tide_left_prompt_frame_enabled" = true && | ||
29 | set -l top_left_frame "$prompt_and_frame_color╭─" && | ||
30 | set -l bot_left_frame "$prompt_and_frame_color╰─" && | ||
31 | set column_offset (math $column_offset-2) | ||
32 | test "$tide_right_prompt_frame_enabled" = true && | ||
33 | set -l top_right_frame "$prompt_and_frame_color─╮" && | ||
34 | set -l bot_right_frame "$prompt_and_frame_color─╯" && | ||
35 | set column_offset (math $column_offset-2) | ||
36 | |||
37 | if test "$tide_prompt_transient_enabled" = true | ||
38 | eval " | ||
39 | function fish_prompt | ||
40 | _tide_status=\$status _tide_pipestatus=\$pipestatus if not set -e _tide_repaint | ||
41 | jobs -q && jobs -p | count | read -lx _tide_jobs | ||
42 | $fish_path -c \"set _tide_pipestatus \$_tide_pipestatus | ||
43 | set _tide_parent_dirs \$_tide_parent_dirs | ||
44 | PATH=\$(string escape \"\$PATH\") CMD_DURATION=\$CMD_DURATION fish_bind_mode=\$fish_bind_mode set $prompt_var (_tide_2_line_prompt)\" & | ||
45 | builtin disown | ||
46 | |||
47 | command kill \$_tide_last_pid 2>/dev/null | ||
48 | set -g _tide_last_pid \$last_pid | ||
49 | end | ||
50 | |||
51 | if not set -q _tide_transient | ||
52 | math \$COLUMNS-(string length -V \"\$$prompt_var[1][1]\$$prompt_var[1][3]\")+$column_offset | read -lx dist_btwn_sides | ||
53 | |||
54 | echo -n $add_newline'$top_left_frame'(string replace @PWD@ (_tide_pwd) \"\$$prompt_var[1][1]\")'$prompt_and_frame_color' | ||
55 | string repeat -Nm(math max 0, \$dist_btwn_sides-\$_tide_pwd_len) '$tide_prompt_icon_connection' | ||
56 | |||
57 | echo \"\$$prompt_var[1][3]$top_right_frame\" | ||
58 | end | ||
59 | echo -n \e\[0J\"$bot_left_frame\$$prompt_var[1][2]$color_normal \" | ||
60 | end | ||
61 | |||
62 | function fish_right_prompt | ||
63 | set -e _tide_transient || string unescape \"\$$prompt_var[1][4]$bot_right_frame$color_normal\" | ||
64 | end" | ||
65 | else | ||
66 | eval " | ||
67 | function fish_prompt | ||
68 | _tide_status=\$status _tide_pipestatus=\$pipestatus if not set -e _tide_repaint | ||
69 | jobs -q && jobs -p | count | read -lx _tide_jobs | ||
70 | $fish_path -c \"set _tide_pipestatus \$_tide_pipestatus | ||
71 | set _tide_parent_dirs \$_tide_parent_dirs | ||
72 | PATH=\$(string escape \"\$PATH\") CMD_DURATION=\$CMD_DURATION fish_bind_mode=\$fish_bind_mode set $prompt_var (_tide_2_line_prompt)\" & | ||
73 | builtin disown | ||
74 | |||
75 | command kill \$_tide_last_pid 2>/dev/null | ||
76 | set -g _tide_last_pid \$last_pid | ||
77 | end | ||
78 | |||
79 | math \$COLUMNS-(string length -V \"\$$prompt_var[1][1]\$$prompt_var[1][3]\")+$column_offset | read -lx dist_btwn_sides | ||
80 | |||
81 | echo -ns $add_newline'$top_left_frame'(string replace @PWD@ (_tide_pwd) \"\$$prompt_var[1][1]\")'$prompt_and_frame_color' | ||
82 | string repeat -Nm(math max 0, \$dist_btwn_sides-\$_tide_pwd_len) '$tide_prompt_icon_connection' | ||
83 | echo -ns \"\$$prompt_var[1][3]$top_right_frame\"\n\"$bot_left_frame\$$prompt_var[1][2]$color_normal \" | ||
84 | end | ||
85 | |||
86 | function fish_right_prompt | ||
87 | string unescape \"\$$prompt_var[1][4]$bot_right_frame$color_normal\" | ||
88 | end" | ||
89 | end | ||
90 | else # one line prompt initialization | ||
91 | test "$tide_prompt_add_newline_before" = true && set -l add_newline '\0' | ||
92 | |||
93 | math 5 -$tide_prompt_min_cols | read -l column_offset | ||
94 | test $column_offset -ge 0 && set column_offset "+$column_offset" | ||
95 | |||
96 | if test "$tide_prompt_transient_enabled" = true | ||
97 | eval " | ||
98 | function fish_prompt | ||
99 | set -lx _tide_status \$status | ||
100 | _tide_pipestatus=\$pipestatus if not set -e _tide_repaint | ||
101 | jobs -q && jobs -p | count | read -lx _tide_jobs | ||
102 | $fish_path -c \"set _tide_pipestatus \$_tide_pipestatus | ||
103 | set _tide_parent_dirs \$_tide_parent_dirs | ||
104 | PATH=\$(string escape \"\$PATH\") CMD_DURATION=\$CMD_DURATION fish_bind_mode=\$fish_bind_mode set $prompt_var (_tide_1_line_prompt)\" & | ||
105 | builtin disown | ||
106 | |||
107 | command kill \$_tide_last_pid 2>/dev/null | ||
108 | set -g _tide_last_pid \$last_pid | ||
109 | end | ||
110 | |||
111 | if set -q _tide_transient | ||
112 | echo -n \e\[0J | ||
113 | add_prefix= _tide_item_character | ||
114 | echo -n '$color_normal ' | ||
115 | else | ||
116 | math \$COLUMNS-(string length -V \"\$$prompt_var[1][1]\$$prompt_var[1][2]\")$column_offset | read -lx dist_btwn_sides | ||
117 | string replace @PWD@ (_tide_pwd) $add_newline \$$prompt_var[1][1]'$color_normal ' | ||
118 | end | ||
119 | end | ||
120 | |||
121 | function fish_right_prompt | ||
122 | set -e _tide_transient || string unescape \"\$$prompt_var[1][2]$color_normal\" | ||
123 | end" | ||
124 | else | ||
125 | eval " | ||
126 | function fish_prompt | ||
127 | _tide_status=\$status _tide_pipestatus=\$pipestatus if not set -e _tide_repaint | ||
128 | jobs -q && jobs -p | count | read -lx _tide_jobs | ||
129 | $fish_path -c \"set _tide_pipestatus \$_tide_pipestatus | ||
130 | set _tide_parent_dirs \$_tide_parent_dirs | ||
131 | PATH=\$(string escape \"\$PATH\") CMD_DURATION=\$CMD_DURATION fish_bind_mode=\$fish_bind_mode set $prompt_var (_tide_1_line_prompt)\" & | ||
132 | builtin disown | ||
133 | |||
134 | command kill \$_tide_last_pid 2>/dev/null | ||
135 | set -g _tide_last_pid \$last_pid | ||
136 | end | ||
137 | |||
138 | math \$COLUMNS-(string length -V \"\$$prompt_var[1][1]\$$prompt_var[1][2]\")$column_offset | read -lx dist_btwn_sides | ||
139 | string replace @PWD@ (_tide_pwd) $add_newline \$$prompt_var[1][1]'$color_normal ' | ||
140 | end | ||
141 | |||
142 | function fish_right_prompt | ||
143 | string unescape \"\$$prompt_var[1][2]$color_normal\" | ||
144 | end" | ||
145 | end | ||
146 | end | ||
147 | |||
148 | eval "function _tide_on_fish_exit --on-event fish_exit | ||
149 | set -e $prompt_var | ||
150 | end" | ||
151 | |||
152 | if test "$tide_prompt_transient_enabled" = true | ||
153 | function _tide_enter_transient | ||
154 | # If the commandline will be executed, or is empty | ||
155 | if commandline --is-valid || test -z "$(commandline)" | ||
156 | # Pager open usually means selecting, not running | ||
157 | # Can be untrue, but it's better than the alternative | ||
158 | if not commandline --paging-mode | ||
159 | set -g _tide_transient | ||
160 | set -g _tide_repaint | ||
161 | commandline -f repaint | ||
162 | end | ||
163 | end | ||
164 | commandline -f execute | ||
165 | end | ||
166 | |||
167 | bind \r _tide_enter_transient | ||
168 | bind \n _tide_enter_transient | ||
169 | bind -M insert \r _tide_enter_transient | ||
170 | bind -M insert \n _tide_enter_transient | ||
171 | end | ||