313 lines
6.7 KiB
Text
313 lines
6.7 KiB
Text
$env.config = {
|
|
bracketed_paste: true
|
|
buffer_editor: "hx"
|
|
datetime_format: {}
|
|
edit_mode: vi
|
|
error_style: fancy
|
|
float_precision: 2
|
|
footer_mode: 25
|
|
render_right_prompt_on_last_line: false
|
|
show_banner: false
|
|
use_ansi_coloring: true
|
|
use_kitty_protocol: true
|
|
|
|
shell_integration: {
|
|
osc2: false
|
|
osc7: true
|
|
osc8: true
|
|
osc9_9: false
|
|
osc133: true
|
|
osc633: true
|
|
reset_application_mode: true
|
|
}
|
|
}
|
|
|
|
$env.config.ls = {
|
|
clickable_links: true
|
|
use_ls_colors: true
|
|
}
|
|
|
|
$env.config.rm.always_trash = true
|
|
|
|
$env.config.table = {
|
|
header_on_separator: false
|
|
index_mode: always
|
|
mode: light
|
|
padding: {left: 1 right: 1}
|
|
show_empty: true
|
|
trim: {
|
|
methodology: wrapping
|
|
wrapping_try_keep_words: true
|
|
truncating_suffix: "..."
|
|
}
|
|
}
|
|
|
|
$env.config.explore = {
|
|
command_bar_text: {fg: "#C4C9C6"}
|
|
highlight: {fg: black bg: yellow}
|
|
status: {
|
|
error: {fg: white bg: red}
|
|
warn: {}
|
|
info: {}
|
|
}
|
|
status_bar_background: {fg: "#1D1F21" bg: "#C4C9C6"}
|
|
table: {
|
|
split_line: {fg: "#404040"}
|
|
selected_cell: {bg: light_blue}
|
|
selected_row: {}
|
|
selected_column: {}
|
|
}
|
|
}
|
|
|
|
$env.config.history = {
|
|
file_format: sqlite
|
|
isolation: false
|
|
max_size: 100_000
|
|
sync_on_enter: true
|
|
}
|
|
|
|
$env.config.cursor_shape = {
|
|
vi_insert: line
|
|
vi_normal: block
|
|
}
|
|
|
|
$env.config.hooks = {
|
|
command_not_found: {|| }
|
|
|
|
pre_execution: [
|
|
{
|
|
let prompt = commandline | str trim
|
|
|
|
if ($prompt | is-empty) {
|
|
return
|
|
}
|
|
|
|
print $"(ansi title)($prompt) — nu(char bel)"
|
|
}
|
|
]
|
|
|
|
pre_prompt: [
|
|
{
|
|
if (which direnv | is-empty) {
|
|
return
|
|
}
|
|
|
|
direnv export json | from json | default {} | load-env
|
|
# Direnv outputs $PATH as a string, but nushell silently breaks if isn't a list-like table.
|
|
# The following behemoth of Nu code turns this into nu's format while following the standards of how to handle quotes, use it if you need quote handling instead of the line below it:
|
|
# $env.PATH = $env.PATH | parse --regex ('' + `((?:(?:"(?:(?:\\[\\"])|.)*?")|(?:'.*?')|[^` + (char env_sep) + `]*)*)`) | each {|x| $x.capture0 | parse --regex `(?:"((?:(?:\\"|.))*?)")|(?:'(.*?)')|([^'"]*)` | each {|y| if ($y.capture0 != "") { $y.capture0 | str replace -ar `\\([\\"])` `$1` } else if ($y.capture1 != "") { $y.capture1 } else $y.capture2 } | str join }
|
|
$env.PATH = $env.PATH | split row (char env_sep)
|
|
}
|
|
]
|
|
}
|
|
|
|
$env.config.menus = [
|
|
{
|
|
marker: $"(ansi yellow)╋ "
|
|
name: help_menu
|
|
only_buffer_difference: true
|
|
style: {
|
|
description_text: yellow
|
|
selected_text: red_reverse
|
|
text: yellow
|
|
}
|
|
type: {
|
|
col_padding: 2
|
|
col_width: 20
|
|
columns: 4
|
|
description_rows: 10
|
|
layout: description
|
|
selection_rows: 4
|
|
}
|
|
}
|
|
]
|
|
|
|
$env.config.keybindings = [
|
|
{
|
|
name: copy_commandline
|
|
modifier: alt
|
|
keycode: char_c
|
|
mode: [vi_normal vi_insert]
|
|
event: {
|
|
send: executehostcommand
|
|
cmd: 'commandline | nu-highlight | $"```ansi\n($in)\n```" | wl-copy $in'
|
|
}
|
|
}
|
|
{
|
|
name: escape
|
|
modifier: none
|
|
keycode: escape
|
|
mode: [vi_normal vi_insert]
|
|
event: {send: esc}
|
|
}
|
|
{
|
|
name: cancel_command
|
|
modifier: control
|
|
keycode: char_c
|
|
mode: [vi_normal vi_insert]
|
|
event: {send: ctrlc}
|
|
}
|
|
{
|
|
name: quit_shell
|
|
modifier: control
|
|
keycode: char_d
|
|
mode: [vi_normal vi_insert]
|
|
event: {send: ctrld}
|
|
}
|
|
{
|
|
name: clear_screen
|
|
modifier: control
|
|
keycode: char_l
|
|
mode: [vi_normal vi_insert]
|
|
event: {send: clearscreen}
|
|
}
|
|
{
|
|
name: open_command_editor
|
|
modifier: control
|
|
keycode: char_o
|
|
mode: [vi_normal vi_insert]
|
|
event: {send: openeditor}
|
|
}
|
|
{
|
|
name: abbr
|
|
modifier: control
|
|
keycode: space
|
|
mode: [vi_normal vi_insert]
|
|
event: [
|
|
{send: menu name: abbr_menu}
|
|
{edit: insertchar value: " "}
|
|
]
|
|
}
|
|
{
|
|
name: move_down
|
|
modifier: none
|
|
keycode: down
|
|
mode: [vi_normal vi_insert]
|
|
event: {
|
|
until: [
|
|
{send: menudown}
|
|
{send: down}
|
|
]
|
|
}
|
|
}
|
|
{
|
|
name: move_left
|
|
modifier: none
|
|
keycode: left
|
|
mode: [vi_normal vi_insert]
|
|
event: {
|
|
until: [
|
|
{send: menuleft}
|
|
{send: left}
|
|
]
|
|
}
|
|
}
|
|
{
|
|
name: move_right_or_take_history_hint
|
|
modifier: none
|
|
keycode: right
|
|
mode: [vi_normal vi_insert]
|
|
event: {
|
|
until: [
|
|
{send: historyhintcomplete}
|
|
{send: menuright}
|
|
{send: right}
|
|
]
|
|
}
|
|
}
|
|
{
|
|
name: move_one_word_left
|
|
modifier: control
|
|
keycode: left
|
|
mode: [vi_normal vi_insert]
|
|
event: {edit: movewordleft}
|
|
}
|
|
{
|
|
name: move_one_word_right_or_take_history_hint
|
|
modifier: control
|
|
keycode: right
|
|
mode: [vi_normal vi_insert]
|
|
event: {
|
|
until: [
|
|
{send: historyhintwordcomplete}
|
|
{edit: movewordright}
|
|
]
|
|
}
|
|
}
|
|
{
|
|
name: move_to_line_start
|
|
modifier: control
|
|
keycode: char_a
|
|
mode: [vi_normal vi_insert]
|
|
event: {edit: movetolinestart}
|
|
}
|
|
{
|
|
name: move_to_line_end_or_take_history_hint
|
|
modifier: control
|
|
keycode: char_e
|
|
mode: [vi_normal vi_insert]
|
|
event: {
|
|
until: [
|
|
{send: historyhintcomplete}
|
|
{edit: movetolineend}
|
|
]
|
|
}
|
|
}
|
|
{
|
|
name: delete_one_character_backward
|
|
modifier: none
|
|
keycode: backspace
|
|
mode: vi_insert
|
|
event: {edit: backspace}
|
|
}
|
|
{
|
|
name: delete_one_word_backward
|
|
modifier: control
|
|
keycode: backspace
|
|
mode: vi_insert
|
|
event: {edit: backspaceword}
|
|
}
|
|
{
|
|
name: newline_or_run_command
|
|
modifier: none
|
|
keycode: enter
|
|
mode: vi_insert
|
|
event: {send: enter}
|
|
}
|
|
{
|
|
name: take_history_hint
|
|
modifier: control
|
|
keycode: char_f
|
|
mode: [vi_normal vi_insert]
|
|
event: {
|
|
until: [
|
|
{send: historyhintcomplete}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
|
|
let autoload_dir = $nu.user-autoload-dirs.0
|
|
mkdir $autoload_dir
|
|
|
|
zoxide init nushell --cmd cd | save -f ($autoload_dir | path join zoxide.nu)
|
|
atuin init nu | save -f ($autoload_dir | path join atuin.nu)
|
|
carapace _carapace nushell | save -f ($autoload_dir | path join carapace.nu)
|
|
|
|
source ./source_profile.nu
|
|
source ./prompt.nu
|
|
|
|
# fix sudo by prepending /run/wrappers/bin to the PATH.
|
|
$env.PATH = ($env.PATH | split row (char esep) | prepend '/run/wrappers/bin')
|
|
$env.LS_COLORS = (vivid generate lava)
|
|
$env.EDITOR = "hx"
|
|
|
|
$env.CARAPACE_BRIDGES = 'carapace,clap,inshellisense,fish'
|
|
$env.CARAPACE_MATCH = 1
|
|
|
|
|
|
# Set environment variables according to the path of the clone
|
|
$env.TOPIARY_CONFIG_FILE = ($env.HOME | path join .config | path join topiary languages.ncl)
|
|
$env.TOPIARY_LANGUAGE_DIR = ($env.HOME | path join .config | path join topiary languages)
|
|
# The prompt indicators are environmental variables that represent
|
|
# the state of the prompt.
|