├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── completions └── scheme.fish └── functions ├── __scheme_get_definition.fish ├── __scheme_list.fish ├── __scheme_preview.fish ├── __scheme_set.fish └── scheme.fish /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## How it works 2 | 3 | Fish's syntax highlighting colors can be configured by changing the values of [some environmental variables](https://fishshell.com/docs/current/index.html#variables-color). 4 | 5 | This plugin set these environment variables to predefined colors and export them. 6 | 7 | ## Adding color scheme 8 | 9 | Add scheme name and color definitions to [functions/__scheme_get_definition.fish](https://github.com/h-matsuo/fish-color-scheme-switcher/blob/master/functions/__scheme_get_definition.fish). 10 | 11 | ### Step 1. Add color scheme name 12 | 13 | `echo` the new scheme name in the `if` section. 14 | 15 | ```fish 16 | # If no scheme specified, print available scheme list 17 | if [ -z $scheme_name ] 18 | echo 'default' 19 | # omitted 20 | echo 'SCHEME_NAME' # Add this line 21 | return 22 | end 23 | ``` 24 | 25 | These names are printed in `scheme ls` command. 26 | 27 | ### Step 2. Add color definitions 28 | 29 | Create a new `case` in the `switch` section. 30 | 31 | ```fish 32 | switch $scheme_name 33 | 34 | # omitted 35 | 36 | case 'SCHEME_NAME' # Add this section 37 | # Define colors using `scheme_color_*` variables here 38 | # Use other scheme definitions as a reference 39 | 40 | # omitted 41 | 42 | end 43 | ``` 44 | 45 | Defined `scheme_color_*` variables are referred and exposed in `scheme preview/set` command. 46 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Hiroyuki Matsuo 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | logo 4 | 5 |

fish-color-scheme-switcher

6 | 7 |

8 | Want to change fish's syntax highlighting color scheme? 9 |

10 | 11 |

12 | fish-shell plugin 13 | license 14 |

15 | 16 | demo 17 | 18 |
19 | 20 | --- 21 | 22 | ## Installation 23 | 24 | ### With [Fisher](https://github.com/jorgebucaran/fisher) 25 | 26 | ```sh 27 | $ fisher install h-matsuo/fish-color-scheme-switcher 28 | ``` 29 | 30 | ### With [Oh My Fish](https://github.com/oh-my-fish/oh-my-fish) 31 | 32 | ```sh 33 | $ omf install https://github.com/h-matsuo/fish-color-scheme-switcher 34 | $ omf reload 35 | ``` 36 | 37 | ## Usage 38 | 39 | `scheme` command is available after installation. 40 | 41 | ```sh 42 | $ scheme 43 | Usage: 44 | scheme list, ls 45 | List available color schemes. 46 | scheme preview [scheme-name] 47 | Preview the color scheme of scheme-name. 48 | If scheme-name is empty, preview the current scheme. 49 | scheme set scheme-name 50 | Set color scheme to scheme-name. 51 | ``` 52 | 53 | ## Tips 54 | 55 | ### Comparing all available schemes 56 | 57 | ```sh 58 | $ scheme ls | xargs -n1 -I {} fish -c 'scheme preview {} ; echo' 59 | ``` 60 | 61 | ### Saving your configurations 62 | 63 | ```sh 64 | # Set color scheme to `Dracula` automatically on new session 65 | $ echo 'scheme set dracula' >> "$HOME/.config/fish/config.fish" 66 | ``` 67 | 68 | ### Adding new color scheme 69 | 70 | See [CONTRIBUTING.md](https://github.com/h-matsuo/fish-color-scheme-switcher/blob/master/CONTRIBUTING.md). 71 | 72 | ## Limitations 73 | 74 | :warning: This plugin manages syntax highlighting color scheme only. Fish's plugins cannot affect other color settings such as color definitions in other fish themes, terminal's appearance / backgrounds, etc. 75 | -------------------------------------------------------------------------------- /completions/scheme.fish: -------------------------------------------------------------------------------- 1 | function __scheme_needs_subcommand 2 | set cmd (commandline -opc) 3 | if [ (count $cmd) -eq 1 ] 4 | return 0 5 | end 6 | return 1 7 | end 8 | 9 | function __scheme_is_subcommand -a subcommand 10 | set cmd (commandline -opc) 11 | if [ (count $cmd) -eq 2 ]; and [ $cmd[2] = $subcommand ] 12 | return 0 13 | end 14 | return 1 15 | end 16 | 17 | set -l scheme_list (scheme ls) 18 | 19 | # Always don't comple paths 20 | complete -f -c scheme 21 | 22 | # Completions for `scheme ls` 23 | complete -f -c scheme -n '__scheme_needs_subcommand' -a ls -d 'List available color schemes' 24 | 25 | # Completions for `scheme preview` 26 | complete -f -c scheme -n '__scheme_needs_subcommand' -a preview -d 'Preview the color scheme' 27 | complete -f -c scheme -n '__scheme_is_subcommand preview' -a "$scheme_list" 28 | 29 | # Completions for `scheme set` 30 | complete -f -c scheme -n '__scheme_needs_subcommand' -a set -d 'Set color scheme' 31 | complete -f -c scheme -n '__scheme_is_subcommand set' -a "$scheme_list" 32 | -------------------------------------------------------------------------------- /functions/__scheme_get_definition.fish: -------------------------------------------------------------------------------- 1 | function __scheme_reset_to_default 2 | # Color values from: https://github.com/fish-shell/fish-shell/blob/82052a6cc9fa797070d8945130d45226d5cbc1c5/share/functions/__fish_config_interactive.fish#L51 3 | # normal 4 | set -g scheme_color_normal normal 5 | # commands 6 | set -g scheme_color_command 005fd7 7 | # quoted blocks of text 8 | set -g scheme_color_quote 999900 9 | # IO redirections 10 | set -g scheme_color_redirection 00afff 11 | # process separators like ';' and '&' 12 | set -g scheme_color_end 009900 13 | # potential errors 14 | set -g scheme_color_error ff0000 15 | # regular command parameters 16 | set -g scheme_color_param 00afff 17 | # code comments 18 | set -g scheme_color_comment 990000 19 | # parameter expansion operators like '*' and '~' 20 | set -g scheme_color_operator 00a6b2 21 | # character escapes like '\n' and '\x70' 22 | set -g scheme_color_escape 00a6b2 23 | # current working directory in the prompt 24 | set -g scheme_color_cwd green 25 | # current working directory in the prompt when superuser 26 | set -g scheme_color_cwd_root red 27 | # autosuggestions 28 | set -g scheme_color_autosuggestion 555 29 | # current username in the prompt 30 | set -g scheme_color_user brgreen 31 | # current host system in the prompt 32 | set -g scheme_color_host normal 33 | # '^C' indicator on a canceled command 34 | set -g scheme_color_cancel --reverse 35 | # valid path name 36 | set -g scheme_color_valid_path --underline 37 | # matching parenthesis 38 | set -g scheme_color_match --background=brblue 39 | # selected text (in vi visual mode) 40 | set -g scheme_color_selection white --bold --background=brblack 41 | # history search matches and the selected pager item (must be a background) 42 | set -g scheme_color_search_match bryellow --background=brblack 43 | # Additional for completion pager: 44 | # prefix string, i.e. the string that is to be completed 45 | set -g scheme_pager_color_prefix white --bold --underline 46 | # completion itself 47 | set -g scheme_pager_color_completion normal 48 | # completion description 49 | set -g scheme_pager_color_description B3A06D 50 | # progress bar at the bottom left corner 51 | set -g scheme_pager_color_progress brwhite --background=cyan 52 | # background color of the every second completion 53 | set -g scheme_pager_color_secondary 54 | # Additional for some commands: 55 | # current position out of `cdh` / `dirh` command 56 | set -g scheme_color_history_current --bold 57 | end 58 | 59 | 60 | function __scheme_get_definition \ 61 | -d 'Get specified color scheme definition' \ 62 | -a scheme_name 63 | 64 | # If no scheme specified, print available scheme list 65 | if [ -z $scheme_name ] 66 | echo 'catppuccin' 67 | echo 'default' 68 | echo 'dracula' 69 | echo 'monokai' 70 | echo 'solarized' 71 | echo 'tokyonight' 72 | echo 'tomorrow' 73 | echo 'tomorrow-night' 74 | echo 'tomorrow-night-bright' 75 | echo 'zenburn' 76 | return 77 | end 78 | 79 | switch $scheme_name 80 | 81 | case 'default' 82 | __scheme_reset_to_default 83 | 84 | # https://draculatheme.com 85 | case 'dracula' 86 | # Color palette 87 | set -l background 282a36 88 | set -l current_line 44475a 89 | set -l selection 44475a 90 | set -l foreground f8f8f2 91 | set -l comment 6272a4 92 | set -l cyan 8be9fd 93 | set -l green 50fa7b 94 | set -l orange ffb86c 95 | set -l pink ff79c6 96 | set -l purple bd93f9 97 | set -l red ff5555 98 | set -l yellow f1fa8c 99 | # Preferred to reset all colors 100 | __scheme_reset_to_default 101 | # Color configurations 102 | # set -g scheme_color_normal normal 103 | set -g scheme_color_command $foreground 104 | set -g scheme_color_quote $yellow 105 | set -g scheme_color_redirection $cyan 106 | set -g scheme_color_end $green 107 | set -g scheme_color_error $red 108 | set -g scheme_color_param $pink 109 | set -g scheme_color_comment $comment 110 | set -g scheme_color_operator $green 111 | set -g scheme_color_escape $purple 112 | set -g scheme_color_cwd $green 113 | set -g scheme_color_cwd_root $red 114 | set -g scheme_color_autosuggestion $purple 115 | set -g scheme_color_user $orange 116 | set -g scheme_color_host $foreground 117 | # set -g scheme_color_cancel --reverse 118 | # set -g scheme_color_valid_path --underline 119 | # set -g scheme_color_match --background=brblue 120 | # set -g scheme_color_selection white --bold --background=brblack 121 | # set -g scheme_color_search_match bryellow --background=brblack 122 | # set -g scheme_pager_color_prefix white --bold --underline 123 | # set -g scheme_pager_color_completion normal 124 | # set -g scheme_pager_color_description B3A06D 125 | # set -g scheme_pager_color_progress brwhite --background=cyan 126 | # set -g scheme_pager_color_secondary 127 | # set -g scheme_color_history_current --bold 128 | 129 | case 'monokai' 130 | # Color palette 131 | set -l background 272822 132 | set -l foreground d6d6d6 133 | set -l comment 75715e 134 | set -l cyan 66d9ef 135 | set -l green a6e22e 136 | set -l orange fd971f 137 | set -l purple ae81ff 138 | set -l red f92672 139 | set -l yellow e6db74 140 | # Preferred to reset all colors 141 | __scheme_reset_to_default 142 | # Color configurations 143 | # set -g scheme_color_normal normal 144 | set -g scheme_color_command $cyan 145 | set -g scheme_color_quote $yellow 146 | set -g scheme_color_redirection $orange 147 | set -g scheme_color_end $red 148 | set -g scheme_color_error $red 149 | set -g scheme_color_param $foreground 150 | set -g scheme_color_comment $comment 151 | set -g scheme_color_operator $foreground 152 | set -g scheme_color_escape $purple 153 | set -g scheme_color_cwd $green 154 | set -g scheme_color_cwd_root $red 155 | set -g scheme_color_autosuggestion $comment 156 | set -g scheme_color_user $orange 157 | set -g scheme_color_host $foreground 158 | # set -g scheme_color_cancel --reverse 159 | # set -g scheme_color_valid_path --underline 160 | # set -g scheme_color_match --background=brblue 161 | # set -g scheme_color_selection white --bold --background=brblack 162 | # set -g scheme_color_search_match bryellow --background=brblack 163 | # set -g scheme_pager_color_prefix white --bold --underline 164 | # set -g scheme_pager_color_completion normal 165 | # set -g scheme_pager_color_description B3A06D 166 | # set -g scheme_pager_color_progress brwhite --background=cyan 167 | # set -g scheme_pager_color_secondary 168 | # set -g scheme_color_history_current --bold 169 | 170 | # https://github.com/altercation/solarized 171 | case 'solarized' 172 | # Color palette 173 | set -l base03 002b36 174 | set -l base02 073642 175 | set -l base01 586e75 176 | set -l base00 657b83 177 | set -l base0 839496 178 | set -l base1 93a1a1 179 | set -l base2 eee8d5 180 | set -l base3 fdf6e3 181 | set -l yellow b58900 182 | set -l orange cb4b16 183 | set -l red dc322f 184 | set -l magenta d33682 185 | set -l violet 6c71c4 186 | set -l blue 268bd2 187 | set -l cyan 2aa198 188 | set -l green 859900 189 | # Preferred to reset all colors 190 | __scheme_reset_to_default 191 | # Color configurations 192 | # set -g scheme_color_normal normal 193 | set -g scheme_color_command $blue 194 | set -g scheme_color_quote $cyan 195 | set -g scheme_color_redirection $violet 196 | set -g scheme_color_end $green 197 | set -g scheme_color_error $red 198 | set -g scheme_color_param $base1 199 | set -g scheme_color_comment $base01 200 | set -g scheme_color_operator $yellow 201 | set -g scheme_color_escape $base00 202 | set -g scheme_color_cwd $yellow 203 | set -g scheme_color_cwd_root $red 204 | set -g scheme_color_autosuggestion $base01 205 | set -g scheme_color_user $magenta 206 | set -g scheme_color_host $base1 207 | # set -g scheme_color_cancel --reverse 208 | # set -g scheme_color_valid_path --underline 209 | # set -g scheme_color_match --background=brblue 210 | # set -g scheme_color_selection white --bold --background=brblack 211 | # set -g scheme_color_search_match bryellow --background=brblack 212 | # set -g scheme_pager_color_prefix white --bold --underline 213 | # set -g scheme_pager_color_completion normal 214 | # set -g scheme_pager_color_description B3A06D 215 | # set -g scheme_pager_color_progress brwhite --background=cyan 216 | # set -g scheme_pager_color_secondary 217 | # set -g scheme_color_history_current --bold 218 | 219 | # https://github.com/chriskempson/tomorrow-theme 220 | case 'tomorrow' 221 | # Color palette 222 | set -l background ffffff 223 | set -l current_line efefef 224 | set -l selection d6d6d6 225 | set -l foreground 4d4d4c 226 | set -l comment 8e908c 227 | set -l red c82829 228 | set -l orange f5871f 229 | set -l yellow eab700 230 | set -l green 718c00 231 | set -l aqua 3e999f 232 | set -l blue 4271ae 233 | set -l purple 8959a8 234 | # Preferred to reset all colors 235 | __scheme_reset_to_default 236 | # Color configurations 237 | # set -g scheme_color_normal normal 238 | set -g scheme_color_command $purple 239 | set -g scheme_color_quote $green 240 | set -g scheme_color_redirection $aqua 241 | set -g scheme_color_end $purple 242 | set -g scheme_color_error $red 243 | set -g scheme_color_param $blue 244 | set -g scheme_color_comment $comment 245 | set -g scheme_color_operator $orange 246 | set -g scheme_color_escape $orange 247 | set -g scheme_color_cwd $aqua 248 | set -g scheme_color_cwd_root $red 249 | set -g scheme_color_autosuggestion $comment 250 | set -g scheme_color_user $green 251 | set -g scheme_color_host $foreground 252 | # set -g scheme_color_cancel --reverse 253 | # set -g scheme_color_valid_path --underline 254 | # set -g scheme_color_match --background=brblue 255 | # set -g scheme_color_selection white --bold --background=brblack 256 | # set -g scheme_color_search_match bryellow --background=brblack 257 | # set -g scheme_pager_color_prefix white --bold --underline 258 | # set -g scheme_pager_color_completion normal 259 | # set -g scheme_pager_color_description B3A06D 260 | # set -g scheme_pager_color_progress brwhite --background=cyan 261 | # set -g scheme_pager_color_secondary 262 | # set -g scheme_color_history_current --bold 263 | 264 | # https://github.com/chriskempson/tomorrow-theme 265 | case 'tomorrow-night' 266 | # Color palette 267 | set -l background 1d1f21 268 | set -l current_line 282a2e 269 | set -l selection 373b41 270 | set -l foreground c5c8c6 271 | set -l comment 969896 272 | set -l red cc6666 273 | set -l orange de935f 274 | set -l yellow f0c674 275 | set -l green b5bd68 276 | set -l aqua 8abeb7 277 | set -l blue 81a2be 278 | set -l purple b294bb 279 | # Preferred to reset all colors 280 | __scheme_reset_to_default 281 | # Color configurations 282 | # set -g scheme_color_normal normal 283 | set -g scheme_color_command $purple 284 | set -g scheme_color_quote $green 285 | set -g scheme_color_redirection $aqua 286 | set -g scheme_color_end $purple 287 | set -g scheme_color_error $red 288 | set -g scheme_color_param $blue 289 | set -g scheme_color_comment $comment 290 | set -g scheme_color_operator $orange 291 | set -g scheme_color_escape $orange 292 | set -g scheme_color_cwd $aqua 293 | set -g scheme_color_cwd_root $red 294 | set -g scheme_color_autosuggestion $comment 295 | set -g scheme_color_user $green 296 | set -g scheme_color_host $foreground 297 | # set -g scheme_color_cancel --reverse 298 | # set -g scheme_color_valid_path --underline 299 | # set -g scheme_color_match --background=brblue 300 | # set -g scheme_color_selection white --bold --background=brblack 301 | # set -g scheme_color_search_match bryellow --background=brblack 302 | # set -g scheme_pager_color_prefix white --bold --underline 303 | # set -g scheme_pager_color_completion normal 304 | # set -g scheme_pager_color_description B3A06D 305 | # set -g scheme_pager_color_progress brwhite --background=cyan 306 | # set -g scheme_pager_color_secondary 307 | # set -g scheme_color_history_current --bold 308 | 309 | # https://github.com/chriskempson/tomorrow-theme 310 | case 'tomorrow-night-bright' 311 | # Color palette 312 | set -l background 000000 313 | set -l current_line 2a2a2a 314 | set -l selection 424242 315 | set -l foreground eaeaea 316 | set -l comment 969896 317 | set -l red d54e53 318 | set -l orange e78c45 319 | set -l yellow e7c547 320 | set -l green b9ca4a 321 | set -l aqua 70c0b1 322 | set -l blue 7aa6da 323 | set -l purple c397d8 324 | # Preferred to reset all colors 325 | __scheme_reset_to_default 326 | # Color configurations 327 | # set -g scheme_color_normal normal 328 | set -g scheme_color_command $purple 329 | set -g scheme_color_quote $green 330 | set -g scheme_color_redirection $aqua 331 | set -g scheme_color_end $purple 332 | set -g scheme_color_error $red 333 | set -g scheme_color_param $blue 334 | set -g scheme_color_comment $comment 335 | set -g scheme_color_operator $orange 336 | set -g scheme_color_escape $orange 337 | set -g scheme_color_cwd $aqua 338 | set -g scheme_color_cwd_root $red 339 | set -g scheme_color_autosuggestion $comment 340 | set -g scheme_color_user $green 341 | set -g scheme_color_host $foreground 342 | # set -g scheme_color_cancel --reverse 343 | # set -g scheme_color_valid_path --underline 344 | # set -g scheme_color_match --background=brblue 345 | # set -g scheme_color_selection white --bold --background=brblack 346 | # set -g scheme_color_search_match bryellow --background=brblack 347 | # set -g scheme_pager_color_prefix white --bold --underline 348 | # set -g scheme_pager_color_completion normal 349 | # set -g scheme_pager_color_description B3A06D 350 | # set -g scheme_pager_color_progress brwhite --background=cyan 351 | # set -g scheme_pager_color_secondary 352 | # set -g scheme_color_history_current --bold 353 | 354 | # https://github.com/jnurmine/Zenburn 355 | case 'zenburn' 356 | # Color palette 357 | set -l background 3f3f3f 358 | set -l foreground dcdccc 359 | set -l cyan 9bced2 360 | set -l green 7f9f7f 361 | set -l pink d191c0 362 | set -l red cc9393 363 | set -l yellow efef8f 364 | set -l orange ffcfaf 365 | set -l cream e3ceab 366 | set -l white dfdfdf 367 | set -l gray 53606e 368 | # Preferred to reset all colors 369 | __scheme_reset_to_default 370 | # Color configurations 371 | # set -g scheme_color_normal normal 372 | set -g scheme_color_command $yellow 373 | set -g scheme_color_quote $orange 374 | set -g scheme_color_redirection $cyan 375 | set -g scheme_color_end $pink 376 | set -g scheme_color_error $red 377 | set -g scheme_color_param $foreground 378 | set -g scheme_color_comment $green 379 | set -g scheme_color_operator $cream 380 | set -g scheme_color_escape $orange 381 | set -g scheme_color_cwd $orange 382 | set -g scheme_color_cwd_root $red 383 | set -g scheme_color_autosuggestion $gray 384 | set -g scheme_color_user $cream 385 | set -g scheme_color_host $foreground 386 | # set -g scheme_color_cancel --reverse 387 | # set -g scheme_color_valid_path --underline 388 | # set -g scheme_color_match --background=brblue 389 | # set -g scheme_color_selection white --bold --background=brblack 390 | # set -g scheme_color_search_match bryellow --background=brblack 391 | # set -g scheme_pager_color_prefix white --bold --underline 392 | # set -g scheme_pager_color_completion normal 393 | # set -g scheme_pager_color_description B3A06D 394 | # set -g scheme_pager_color_progress brwhite --background=cyan 395 | # set -g scheme_pager_color_secondary 396 | # set -g scheme_color_history_current --bold 397 | 398 | case 'tokyonight' 399 | # Color Palette 400 | set -l foreground c0caf5 401 | set -l selection 33467C 402 | set -l comment 565f89 403 | set -l red f7768e 404 | set -l orange ff9e64 405 | set -l yellow e0af68 406 | set -l green 9ece6a 407 | set -l purple 9d7cd8 408 | set -l cyan 7dcfff 409 | set -l pink bb9af7 410 | __scheme_reset_to_default 411 | # Syntax Highlighting Colors 412 | set -g scheme_color_normal $foreground 413 | set -g scheme_color_command $cyan 414 | set -g scheme_color_keyword $pink 415 | set -g scheme_color_quote $yellow 416 | set -g scheme_color_redirection $pink 417 | set -g scheme_color_end $orange 418 | set -g scheme_color_error $red 419 | set -g scheme_color_param $purple 420 | set -g scheme_color_comment $comment 421 | set -g scheme_color_selection --background=$selection 422 | set -g scheme_color_search_match --background=$selection 423 | set -g scheme_color_operator $green 424 | set -g scheme_color_escape $pink 425 | set -g fish_color_autosuggestion $comment 426 | # Completion Pager Colors 427 | set -g scheme_pager_color_progress $comment 428 | set -g scheme_pager_color_prefix $cyan 429 | set -g scheme_pager_color_completion $foreground 430 | set -g scheme_pager_color_description $comment 431 | 432 | # https://github.com/catppuccin/fish 433 | case 'catppuccin' 434 | #Color Palette 435 | set -l foreground dadae8 436 | set -l selection 3e4058 437 | set -l teal bee4ed 438 | set -l flamingo f2cecf 439 | set -l magenta c6aae8 440 | set -l pink e5b4e2 441 | set -l red e38c8f 442 | set -l peach f9c096 443 | set -l green b1e3ad 444 | set -l yellow ebddaa 445 | set -l blue a4b9ef 446 | set -l gray 6e6c7e 447 | __scheme_reset_to_default 448 | # Syntax Highlighting Colors 449 | set -g scheme_color_normal $foreground 450 | set -g scheme_color_command $blue 451 | set -g scheme_color_param $flamingo 452 | set -g scheme_color_keyword $red 453 | set -g scheme_color_quote $green 454 | set -g scheme_color_redirection $pink 455 | set -g scheme_color_end $peach 456 | set -g scheme_color_error $red 457 | set -g scheme_color_gray $gray 458 | set -g scheme_color_selection --background=$selection 459 | set -g scheme_color_search_match --background=$selection 460 | set -g scheme_color_operator $pink 461 | set -g scheme_color_escape $flamingo 462 | set -g scheme_color_autosuggestion $gray 463 | set -g scheme_color_cancel $red 464 | # Prompt 465 | set -g scheme_color_cwd $yellow 466 | set -g scheme_color_user $teal 467 | set -g scheme_color_host $blue 468 | # Completion Pager 469 | set -g scheme_pager_color_progress $gray 470 | set -g scheme_pager_color_prefix $pink 471 | set -g scheme_pager_color_completion $foreground 472 | set -g scheme_pager_color_description $gray 473 | 474 | case '*' 475 | echo (set_color normal)(set_color $fish_color_error)(set_color -o)'Error:'(set_color normal)' '(set_color $fish_color_normal)'No such scheme available:'(set_color normal)' '(set_color $fish_color_error)$scheme_name(set_color normal) 476 | return 1 477 | 478 | end 479 | 480 | end 481 | -------------------------------------------------------------------------------- /functions/__scheme_list.fish: -------------------------------------------------------------------------------- 1 | function __scheme_list \ 2 | -d 'Get list of available color schemes' 3 | 4 | __scheme_get_definition 5 | 6 | end 7 | -------------------------------------------------------------------------------- /functions/__scheme_preview.fish: -------------------------------------------------------------------------------- 1 | function __scheme_preview_prompt 2 | # user@host ~/foo> 3 | # user, normal, host, cwd, normal 4 | set_color normal 5 | set_color $scheme_color_user 6 | echo -n 'user' 7 | set_color normal 8 | set_color $scheme_color_normal 9 | echo -n '@' 10 | set_color normal 11 | set_color $scheme_color_host 12 | echo -n 'host' 13 | set_color normal 14 | echo -n ' ' 15 | set_color normal 16 | set_color $scheme_color_cwd 17 | echo -n '~/foo' 18 | set_color normal 19 | set_color $scheme_color_normal 20 | echo -n '> ' 21 | end 22 | 23 | 24 | function __scheme_preview \ 25 | -d 'Preview color scheme' \ 26 | -a scheme_name 27 | 28 | # If no scheme specified, preview current scheme 29 | if [ -z $scheme_name ] 30 | set scheme_color_normal $fish_color_normal 31 | set scheme_color_command $fish_color_command 32 | set scheme_color_quote $fish_color_quote 33 | set scheme_color_redirection $fish_color_redirection 34 | set scheme_color_end $fish_color_end 35 | set scheme_color_error $fish_color_error 36 | set scheme_color_param $fish_color_param 37 | set scheme_color_comment $fish_color_comment 38 | set scheme_color_operator $fish_color_operator 39 | set scheme_color_escape $fish_color_escape 40 | set scheme_color_cwd $fish_color_cwd 41 | set scheme_color_cwd_root $fish_color_cwd_root 42 | set scheme_color_autosuggestion $fish_color_autosuggestion 43 | set scheme_color_user $fish_color_user 44 | set scheme_color_host $fish_color_host 45 | set scheme_color_cancel $fish_color_cancel 46 | set scheme_color_valid_path $fish_color_valid_path 47 | set scheme_color_match $fish_color_match 48 | set scheme_color_selection $fish_color_selection 49 | set scheme_color_search_match $fish_color_search_match 50 | set scheme_pager_color_prefix $fish_pager_color_prefix 51 | set scheme_pager_color_completion $fish_pager_color_completion 52 | set scheme_pager_color_description $fish_pager_color_description 53 | set scheme_pager_color_progress $fish_pager_color_progress 54 | set scheme_pager_color_secondary $fish_pager_color_secondary 55 | set scheme_color_history_current $fish_color_history_current 56 | else 57 | __scheme_get_definition "$scheme_name" 58 | or return $status 59 | end 60 | 61 | 62 | # # This is a preview of `$scheme_name` scheme. 63 | __scheme_preview_prompt 64 | set_color normal 65 | set_color $scheme_color_comment 66 | if [ -z $scheme_name ] 67 | echo '# This is a preview of the current color scheme' 68 | else 69 | echo "# This is a preview of the color scheme: $scheme_name" 70 | end 71 | 72 | 73 | # echo foo\nbar > /tmp/baz & 74 | # command, param, quote, redirection, end 75 | __scheme_preview_prompt 76 | set_color normal 77 | set_color $scheme_color_command 78 | echo -n 'echo' 79 | set_color normal 80 | echo -n ' ' 81 | set_color normal 82 | set_color $scheme_color_param 83 | echo -n 'foo' 84 | set_color normal 85 | set_color $scheme_color_escape 86 | echo -n '\\n' 87 | set_color normal 88 | set_color $scheme_color_param 89 | echo -n 'bar' 90 | set_color normal 91 | echo -n ' ' 92 | set_color normal 93 | set_color $scheme_color_redirection 94 | echo -n '>' 95 | set_color normal 96 | echo -n ' ' 97 | set_color normal 98 | set_color $scheme_color_redirection 99 | echo -n '/tmp/baz' 100 | set_color normal 101 | echo -n ' ' 102 | set_color normal 103 | set_color $scheme_color_end 104 | echo '&' 105 | 106 | 107 | # echo (cat /tmp/baz) | grep 'foo' 108 | # command, operator, command, param&valid_path, operator, end, command, quote 109 | __scheme_preview_prompt 110 | set_color normal 111 | set_color $scheme_color_command 112 | echo -n 'echo' 113 | set_color normal 114 | echo -n ' ' 115 | set_color normal 116 | set_color $scheme_color_operator 117 | echo -n '(' 118 | set_color normal 119 | set_color $scheme_color_command 120 | echo -n 'cat' 121 | set_color normal 122 | echo -n ' ' 123 | set_color normal 124 | set_color $scheme_color_param 125 | set_color $scheme_color_valid_path 126 | echo -n '/tmp/baz' 127 | set_color normal 128 | set_color $scheme_color_operator 129 | echo -n ')' 130 | set_color normal 131 | echo -n ' ' 132 | set_color normal 133 | set_color $scheme_color_end 134 | echo -n '|' 135 | set_color normal 136 | echo -n ' ' 137 | set_color normal 138 | set_color $scheme_color_command 139 | echo -n 'grep' 140 | set_color normal 141 | echo -n ' ' 142 | set_color normal 143 | set_color $scheme_color_quote 144 | echo '\'foo\'' 145 | 146 | 147 | # echo 'Error: invalid stri^C 148 | # command, error, normal&cancel 149 | __scheme_preview_prompt 150 | set_color normal 151 | set_color $scheme_color_command 152 | echo -n 'echo' 153 | set_color normal 154 | echo -n ' ' 155 | set_color normal 156 | set_color $scheme_color_error 157 | echo -n '\'Error: invalid stri' 158 | set_color normal 159 | set_color $scheme_color_cancel 160 | echo '^C' 161 | 162 | 163 | # This an autosuggestion 164 | # command, normal&-r, autosuggestion 165 | __scheme_preview_prompt 166 | set_color normal 167 | set_color $scheme_color_command 168 | echo -n 'Th' 169 | set_color normal 170 | set_color -r 171 | echo -n 'i' 172 | set_color normal 173 | set_color $scheme_color_autosuggestion 174 | echo 's an autosuggestion' 175 | 176 | end 177 | -------------------------------------------------------------------------------- /functions/__scheme_set.fish: -------------------------------------------------------------------------------- 1 | function __scheme_set \ 2 | -d 'Set current color scheme to specified one' \ 3 | -a scheme_name 4 | 5 | if [ -z $scheme_name ] 6 | echo (set_color normal)(set_color $fish_color_error)(set_color -o)'Error:'(set_color normal)' '(set_color $fish_color_normal)'Scheme name not provided.'(set_color normal) 7 | return 1 8 | end 9 | 10 | __scheme_get_definition "$scheme_name" 11 | 12 | set -xg fish_color_normal $scheme_color_normal 13 | set -xg fish_color_command $scheme_color_command 14 | set -xg fish_color_quote $scheme_color_quote 15 | set -xg fish_color_redirection $scheme_color_redirection 16 | set -xg fish_color_end $scheme_color_end 17 | set -xg fish_color_error $scheme_color_error 18 | set -xg fish_color_param $scheme_color_param 19 | set -xg fish_color_comment $scheme_color_comment 20 | set -xg fish_color_operator $scheme_color_operator 21 | set -xg fish_color_escape $scheme_color_escape 22 | set -xg fish_color_cwd $scheme_color_cwd 23 | set -xg fish_color_cwd_root $scheme_color_cwd_root 24 | set -xg fish_color_autosuggestion $scheme_color_autosuggestion 25 | set -xg fish_color_user $scheme_color_user 26 | set -xg fish_color_host $scheme_color_host 27 | set -xg fish_color_cancel $scheme_color_cancel 28 | set -xg fish_color_valid_path $scheme_color_valid_path 29 | set -xg fish_color_match $scheme_color_match 30 | set -xg fish_color_selection $scheme_color_selection 31 | set -xg fish_color_search_match $scheme_color_search_match 32 | set -xg fish_pager_color_prefix $scheme_pager_color_prefix 33 | set -xg fish_pager_color_completion $scheme_pager_color_completion 34 | set -xg fish_pager_color_description $scheme_pager_color_description 35 | set -xg fish_pager_color_progress $scheme_pager_color_progress 36 | set -xg fish_pager_color_secondary $scheme_pager_color_secondary 37 | set -xg fish_color_history_current $scheme_color_history_current 38 | 39 | end 40 | -------------------------------------------------------------------------------- /functions/scheme.fish: -------------------------------------------------------------------------------- 1 | function __scheme_print_usage 2 | echo (set_color normal)(set_color $fish_color_normal)(set_color -o)'Usage:'(set_color normal) 3 | echo ' '(set_color $fish_color_command)'scheme'(set_color normal)' '(set_color $fish_color_param)(set_color -o)'list'(set_color normal)(set_color $fish_color_normal)','(set_color normal)' '(set_color $fish_color_param)(set_color -o)'ls'(set_color normal) 4 | echo ' '(set_color $fish_color_normal)'List available color schemes.'(set_color normal) 5 | echo ' '(set_color $fish_color_command)'scheme'(set_color normal)' '(set_color $fish_color_param)(set_color -o)'preview'(set_color normal)' '(set_color normal)(set_color $fish_color_normal)'['(set_color normal)(set_color $fish_color_param)(set_color -u)'scheme-name'(set_color normal)(set_color $fish_color_normal)']'(set_color normal) 6 | echo ' '(set_color $fish_color_normal)'Preview the color scheme of '(set_color normal)(set_color $fish_color_param)(set_color -u)'scheme-name'(set_color normal)(set_color $fish_color_normal)'.'(set_color normal) 7 | echo ' '(set_color $fish_color_normal)'If '(set_color normal)(set_color $fish_color_param)(set_color -u)'scheme-name'(set_color normal)(set_color $fish_color_normal)' is empty, preview the current scheme.'(set_color normal) 8 | echo ' '(set_color $fish_color_command)'scheme'(set_color normal)' '(set_color $fish_color_param)(set_color -o)'set'(set_color normal)' '(set_color normal)(set_color $fish_color_param)(set_color -u)'scheme-name'(set_color normal) 9 | echo ' '(set_color $fish_color_normal)'Set color scheme to '(set_color normal)(set_color $fish_color_param)(set_color -u)'scheme-name'(set_color normal)(set_color $fish_color_normal)'.'(set_color normal) 10 | end 11 | 12 | 13 | function scheme \ 14 | -d 'Configure fish\'s color scheme' \ 15 | -a subcommand scheme_name 16 | 17 | if [ -z $subcommand ] 18 | __scheme_print_usage 19 | return 1 20 | else if [ $subcommand = 'list' ]; or [ $subcommand = 'ls' ] 21 | __scheme_list 22 | else if [ $subcommand = 'preview' ] 23 | __scheme_preview $scheme_name 24 | else if [ $subcommand = 'set' ] 25 | __scheme_set $scheme_name 26 | or return $status 27 | else 28 | echo (set_color normal)(set_color $fish_color_error)(set_color -o)'Error:'(set_color normal)' '(set_color $fish_color_normal)'Unknown command:'(set_color normal)' '(set_color $fish_color_error)$subcommand(set_color normal) 29 | __scheme_print_usage 30 | return 1 31 | end 32 | 33 | end 34 | --------------------------------------------------------------------------------