diff --git a/config/init.nu b/config/init.nu index d571f9a..dda33ca 100644 --- a/config/init.nu +++ b/config/init.nu @@ -1,6 +1,6 @@ # Nushell Config File # -# version = "0.86.0" +# version = "0.96.0" # For more information on defining custom themes, see # https://www.nushell.sh/book/coloring_and_theming.html @@ -31,7 +31,7 @@ let dark_theme = { list: white block: white hints: dark_gray - search_result: {bg: red fg: white} + search_result: { bg: red fg: white } shape_and: purple_bold shape_binary: purple_bold shape_block: blue_bold @@ -42,14 +42,17 @@ let dark_theme = { shape_directory: cyan shape_external: cyan shape_externalarg: green_bold + shape_external_resolved: light_yellow_bold shape_filepath: cyan shape_flag: blue_bold shape_float: purple_bold # shapes are used to change the cli syntax highlighting - shape_garbage: { fg: white bg: red attr: b} + shape_garbage: { fg: white bg: red attr: b } + shape_glob_interpolation: cyan_bold shape_globpattern: cyan_bold shape_int: purple_bold shape_internalcall: cyan_bold + shape_keyword: cyan_bold shape_list: cyan_bold shape_literal: blue shape_match_pattern: green @@ -67,6 +70,7 @@ let dark_theme = { shape_table: blue_bold shape_variable: purple shape_vardecl: purple + shape_raw_string: light_purple } let light_theme = { @@ -90,11 +94,11 @@ let light_theme = { binary: dark_gray cell-path: dark_gray row_index: green_bold - record: white - list: white - block: white + record: dark_gray + list: dark_gray + block: dark_gray hints: dark_gray - search_result: {fg: white bg: red} + search_result: { fg: white bg: red } shape_and: purple_bold shape_binary: purple_bold shape_block: blue_bold @@ -105,14 +109,17 @@ let light_theme = { shape_directory: cyan shape_external: cyan shape_externalarg: green_bold + shape_external_resolved: light_purple_bold shape_filepath: cyan shape_flag: blue_bold shape_float: purple_bold # shapes are used to change the cli syntax highlighting - shape_garbage: { fg: white bg: red attr: b} + shape_garbage: { fg: white bg: red attr: b } + shape_glob_interpolation: cyan_bold shape_globpattern: cyan_bold shape_int: purple_bold shape_internalcall: cyan_bold + shape_keyword: cyan_bold shape_list: cyan_bold shape_literal: blue shape_match_pattern: green @@ -130,12 +137,13 @@ let light_theme = { shape_table: blue_bold shape_variable: purple shape_vardecl: purple + shape_raw_string: light_purple } # External completer example -let carapace_completer = {|spans| - carapace $spans.0 nushell $spans | from json -} +# let carapace_completer = {|spans| +# carapace $spans.0 nushell ...$spans | from json +# } # The default config record. This is where much of your global configuration is setup. $env.config = { @@ -175,20 +183,15 @@ $env.config = { } explore: { - status_bar_background: {fg: "#1D1F21", bg: "#C4C9C6"}, - command_bar_text: {fg: "#C4C9C6"}, - highlight: {fg: "black", bg: "yellow"}, + status_bar_background: { fg: "#1D1F21", bg: "#C4C9C6" }, + command_bar_text: { fg: "#C4C9C6" }, + highlight: { fg: "black", bg: "yellow" }, status: { - error: {fg: "white", bg: "red"}, + error: { fg: "white", bg: "red" }, warn: {} info: {} }, - table: { - split_line: {fg: "#404040"}, - selected_cell: {bg: light_blue}, - selected_row: {}, - selected_column: {}, - }, + selected_cell: { bg: light_blue }, } history: { @@ -206,12 +209,13 @@ $env.config = { external: { enable: true # set to false to prevent nushell looking into $env.PATH to find more suggestions, `false` recommended for WSL users as this look up may be very slow max_results: 100 # setting it lower can improve completion performance at the cost of omitting some options - completer: $carapace_completer # check 'carapace_completer' above as an example + completer: null # check 'carapace_completer' above as an example } + use_ls_colors: true # set this to true to enable file/path/directory completions using LS_COLORS } filesize: { - metric: true # true => KB, MB, GB (ISO standard), false => KiB, MiB, GiB (Windows standard) + metric: false # true => KB, MB, GB (ISO standard), false => KiB, MiB, GiB (Windows standard) format: "auto" # b, kb, kib, mb, mib, gb, gib, tb, tib, pb, pib, eb, eib, auto } @@ -223,15 +227,61 @@ $env.config = { color_config: $dark_theme # if you want a more interesting theme, you can replace the empty record with `$dark_theme`, `$light_theme` or another custom record use_grid_icons: true - footer_mode: "25" # always, never, number_of_rows, auto + footer_mode: 25 # always, never, number_of_rows, auto float_precision: 2 # the precision for displaying floats in tables - buffer_editor: "" # command that will be used to edit the current line buffer with ctrl+o, if unset fallback to $env.EDITOR and $env.VISUAL + buffer_editor: null # command that will be used to edit the current line buffer with ctrl+o, if unset fallback to $env.EDITOR and $env.VISUAL use_ansi_coloring: true bracketed_paste: true # enable bracketed paste, currently useless on windows edit_mode: emacs # emacs, vi - shell_integration: false # enables terminal shell integration. Off by default, as some terminals have issues with this. + shell_integration: { + # osc2 abbreviates the path if in the home_dir, sets the tab/window title, shows the running command in the tab/window title + osc2: true + # osc7 is a way to communicate the path to the terminal, this is helpful for spawning new tabs in the same directory + osc7: true + # osc8 is also implemented as the deprecated setting ls.show_clickable_links, it shows clickable links in ls output if your terminal supports it. show_clickable_links is deprecated in favor of osc8 + osc8: true + # osc9_9 is from ConEmu and is starting to get wider support. It's similar to osc7 in that it communicates the path to the terminal + osc9_9: false + # osc133 is several escapes invented by Final Term which include the supported ones below. + # 133;A - Mark prompt start + # 133;B - Mark prompt end + # 133;C - Mark pre-execution + # 133;D;exit - Mark execution finished with exit code + # This is used to enable terminals to know where the prompt is, the command is, where the command finishes, and where the output of the command is + osc133: true + # osc633 is closely related to osc133 but only exists in visual studio code (vscode) and supports their shell integration features + # 633;A - Mark prompt start + # 633;B - Mark prompt end + # 633;C - Mark pre-execution + # 633;D;exit - Mark execution finished with exit code + # 633;E - NOT IMPLEMENTED - Explicitly set the command line with an optional nonce + # 633;P;Cwd= - Mark the current working directory and communicate it to the terminal + # and also helps with the run recent menu in vscode + osc633: true + # reset_application_mode is escape \x1b[?1l and was added to help ssh work better + reset_application_mode: true + } render_right_prompt_on_last_line: false # true or false to enable or disable right prompt to be rendered on last line of the prompt. - use_kitty_protocol: false # enables keyboard enhancement protocol implemented by kitty console, only if your terminal support this + use_kitty_protocol: false # enables keyboard enhancement protocol implemented by kitty console, only if your terminal support this. + highlight_resolved_externals: false # true enables highlighting of external commands in the repl resolved by which. + recursion_limit: 50 # the maximum number of times nushell allows recursion before stopping it + + plugins: {} # Per-plugin configuration. See https://www.nushell.sh/contributor-book/plugins.html#configuration. + + plugin_gc: { + # Configuration for plugin garbage collection + default: { + enabled: true # true to enable stopping of inactive plugins + stop_after: 10sec # how long to wait after a plugin is inactive to stop it + } + plugins: { + # alternate configuration for specific plugins, by name, for example: + # + # gstat: { + # enabled: false + # } + } + } hooks: { pre_prompt: [{ null }] # run before the prompt is shown @@ -258,8 +308,43 @@ $env.config = { } style: { text: green - selected_text: green_reverse + selected_text: { attr: r } description_text: yellow + match_text: { attr: u } + selected_match_text: { attr: ur } + } + } + { + name: ide_completion_menu + only_buffer_difference: false + marker: "| " + type: { + layout: ide + min_completion_width: 0, + max_completion_width: 50, + max_completion_height: 10, # will be limited by the available lines in the terminal + padding: 0, + border: true, + cursor_offset: 0, + description_mode: "prefer_right" + min_description_width: 0 + max_description_width: 50 + max_description_height: 10 + description_offset: 1 + # If true, the cursor pos will be corrected, so the suggestions match up with the typed text + # + # C:\> str + # str join + # str trim + # str split + correct_cursor_pos: false + } + style: { + text: green + selected_text: { attr: r } + description_text: yellow + match_text: { attr: u } + selected_match_text: { attr: ur } } } { @@ -310,6 +395,19 @@ $env.config = { ] } } + { + name: ide_completion_menu + modifier: control + keycode: char_n + mode: [emacs vi_normal vi_insert] + event: { + until: [ + { send: menu name: ide_completion_menu } + { send: menunext } + { edit: complete } + ] + } + } { name: history_menu modifier: control @@ -399,8 +497,8 @@ $env.config = { mode: [emacs, vi_normal, vi_insert] event: { until: [ - {send: menuup} - {send: up} + { send: menuup } + { send: up } ] } } @@ -411,8 +509,8 @@ $env.config = { mode: [emacs, vi_normal, vi_insert] event: { until: [ - {send: menudown} - {send: down} + { send: menudown } + { send: down } ] } } @@ -423,8 +521,8 @@ $env.config = { mode: [emacs, vi_normal, vi_insert] event: { until: [ - {send: menuleft} - {send: left} + { send: menuleft } + { send: left } ] } } @@ -435,9 +533,9 @@ $env.config = { mode: [emacs, vi_normal, vi_insert] event: { until: [ - {send: historyhintcomplete} - {send: menuright} - {send: right} + { send: historyhintcomplete } + { send: menuright } + { send: right } ] } } @@ -446,7 +544,7 @@ $env.config = { modifier: control keycode: left mode: [emacs, vi_normal, vi_insert] - event: {edit: movewordleft} + event: { edit: movewordleft } } { name: move_one_word_right_or_take_history_hint @@ -455,8 +553,8 @@ $env.config = { mode: [emacs, vi_normal, vi_insert] event: { until: [ - {send: historyhintwordcomplete} - {edit: movewordright} + { send: historyhintwordcomplete } + { edit: movewordright } ] } } @@ -465,14 +563,14 @@ $env.config = { modifier: none keycode: home mode: [emacs, vi_normal, vi_insert] - event: {edit: movetolinestart} + event: { edit: movetolinestart } } { name: move_to_line_start modifier: control keycode: char_a mode: [emacs, vi_normal, vi_insert] - event: {edit: movetolinestart} + event: { edit: movetolinestart } } { name: move_to_line_end_or_take_history_hint @@ -481,8 +579,8 @@ $env.config = { mode: [emacs, vi_normal, vi_insert] event: { until: [ - {send: historyhintcomplete} - {edit: movetolineend} + { send: historyhintcomplete } + { edit: movetolineend } ] } } @@ -493,8 +591,8 @@ $env.config = { mode: [emacs, vi_normal, vi_insert] event: { until: [ - {send: historyhintcomplete} - {edit: movetolineend} + { send: historyhintcomplete } + { edit: movetolineend } ] } } @@ -503,14 +601,14 @@ $env.config = { modifier: control keycode: home mode: [emacs, vi_normal, vi_insert] - event: {edit: movetolinestart} + event: { edit: movetolinestart } } { name: move_to_line_end modifier: control keycode: end mode: [emacs, vi_normal, vi_insert] - event: {edit: movetolineend} + event: { edit: movetolineend } } { name: move_up @@ -519,8 +617,8 @@ $env.config = { mode: [emacs, vi_normal, vi_insert] event: { until: [ - {send: menuup} - {send: up} + { send: menuup } + { send: up } ] } } @@ -531,8 +629,8 @@ $env.config = { mode: [emacs, vi_normal, vi_insert] event: { until: [ - {send: menudown} - {send: down} + { send: menudown } + { send: down } ] } } @@ -541,56 +639,56 @@ $env.config = { modifier: none keycode: backspace mode: [emacs, vi_insert] - event: {edit: backspace} + event: { edit: backspace } } { name: delete_one_word_backward modifier: control keycode: backspace mode: [emacs, vi_insert] - event: {edit: backspaceword} + event: { edit: backspaceword } } { name: delete_one_character_forward modifier: none keycode: delete mode: [emacs, vi_insert] - event: {edit: delete} + event: { edit: delete } } { name: delete_one_character_forward modifier: control keycode: delete mode: [emacs, vi_insert] - event: {edit: delete} + event: { edit: delete } } { - name: delete_one_character_forward + name: delete_one_character_backward modifier: control keycode: char_h mode: [emacs, vi_insert] - event: {edit: backspace} + event: { edit: backspace } } { name: delete_one_word_backward modifier: control keycode: char_w mode: [emacs, vi_insert] - event: {edit: backspaceword} + event: { edit: backspaceword } } { name: move_left modifier: none keycode: backspace mode: vi_normal - event: {edit: moveleft} + event: { edit: moveleft } } { name: newline_or_run_command modifier: none keycode: enter mode: emacs - event: {send: enter} + event: { send: enter } } { name: move_left @@ -599,8 +697,8 @@ $env.config = { mode: emacs event: { until: [ - {send: menuleft} - {send: left} + { send: menuleft } + { send: left } ] } } @@ -611,9 +709,9 @@ $env.config = { mode: emacs event: { until: [ - {send: historyhintcomplete} - {send: menuright} - {send: right} + { send: historyhintcomplete } + { send: menuright } + { send: right } ] } } @@ -622,56 +720,56 @@ $env.config = { modifier: control keycode: char_g mode: emacs - event: {edit: redo} + event: { edit: redo } } { name: undo_change modifier: control keycode: char_z mode: emacs - event: {edit: undo} + event: { edit: undo } } { name: paste_before modifier: control keycode: char_y mode: emacs - event: {edit: pastecutbufferbefore} + event: { edit: pastecutbufferbefore } } { name: cut_word_left modifier: control keycode: char_w mode: emacs - event: {edit: cutwordleft} + event: { edit: cutwordleft } } { name: cut_line_to_end modifier: control keycode: char_k mode: emacs - event: {edit: cuttoend} + event: { edit: cuttoend } } { name: cut_line_from_start modifier: control keycode: char_u mode: emacs - event: {edit: cutfromstart} + event: { edit: cutfromstart } } { name: swap_graphemes modifier: control keycode: char_t mode: emacs - event: {edit: swapgraphemes} + event: { edit: swapgraphemes } } { name: move_one_word_left modifier: alt keycode: left mode: emacs - event: {edit: movewordleft} + event: { edit: movewordleft } } { name: move_one_word_right_or_take_history_hint @@ -680,8 +778,8 @@ $env.config = { mode: emacs event: { until: [ - {send: historyhintwordcomplete} - {edit: movewordright} + { send: historyhintwordcomplete } + { edit: movewordright } ] } } @@ -690,7 +788,7 @@ $env.config = { modifier: alt keycode: char_b mode: emacs - event: {edit: movewordleft} + event: { edit: movewordleft } } { name: move_one_word_right_or_take_history_hint @@ -699,8 +797,8 @@ $env.config = { mode: emacs event: { until: [ - {send: historyhintwordcomplete} - {edit: movewordright} + { send: historyhintwordcomplete } + { edit: movewordright } ] } } @@ -709,49 +807,86 @@ $env.config = { modifier: alt keycode: delete mode: emacs - event: {edit: deleteword} + event: { edit: deleteword } } { name: delete_one_word_backward modifier: alt keycode: backspace mode: emacs - event: {edit: backspaceword} + event: { edit: backspaceword } } { name: delete_one_word_backward modifier: alt keycode: char_m mode: emacs - event: {edit: backspaceword} + event: { edit: backspaceword } } { name: cut_word_to_right modifier: alt keycode: char_d mode: emacs - event: {edit: cutwordright} + event: { edit: cutwordright } } { name: upper_case_word modifier: alt keycode: char_u mode: emacs - event: {edit: uppercaseword} + event: { edit: uppercaseword } } { name: lower_case_word modifier: alt keycode: char_l mode: emacs - event: {edit: lowercaseword} + event: { edit: lowercaseword } } { name: capitalize_char modifier: alt keycode: char_c mode: emacs - event: {edit: capitalizechar} + event: { edit: capitalizechar } + } + # The following bindings with `*system` events require that Nushell has + # been compiled with the `system-clipboard` feature. + # This should be the case for Windows, macOS, and most Linux distributions + # Not available for example on Android (termux) + # If you want to use the system clipboard for visual selection or to + # paste directly, uncomment the respective lines and replace the version + # using the internal clipboard. + { + name: copy_selection + modifier: control_shift + keycode: char_c + mode: emacs + event: { edit: copyselection } + # event: { edit: copyselectionsystem } + } + { + name: cut_selection + modifier: control_shift + keycode: char_x + mode: emacs + event: { edit: cutselection } + # event: { edit: cutselectionsystem } + } + # { + # name: paste_system + # modifier: control_shift + # keycode: char_v + # mode: emacs + # event: { edit: pastesystem } + # } + { + name: select_all + modifier: control_shift + keycode: char_a + mode: emacs + event: { edit: selectall } } ] -} +} \ No newline at end of file