1
Fork 0
mirror of https://github.com/RGBCube/ncc synced 2025-07-31 12:07:48 +00:00

Fix Nu scripts

This commit is contained in:
RGBCube 2023-11-06 11:51:03 +03:00
parent 89fb6b66fa
commit 9cc5d1f737
No known key found for this signature in database
3 changed files with 686 additions and 453 deletions

View file

@ -1,78 +1,31 @@
let theme = { let theme = {
filesize: { |size|
if $size == 0b {
'white'
} else if $size < 1mb {
'cyan'
} else {
'blue'
}
}
date: { ||
(date now) - $in |
if $in < 1hr {
'red3b'
} else if $in < 6hr {
'orange3'
} else if $in < 1day {
'yellow3b'
} else if $in < 3day {
'chartreuse2b'
} else if $in < 1wk {
'green3b'
} else if $in < 6wk {
'darkturquoise'
} else if $in < 52wk {
'deepskyblue3b'
} else {
'dark_gray'
}
}
bool: { ||
if $in {
'light_cyan'
} else {
'light_gray'
}
}
leading_trailing_space_bg: {
attr: n
}
empty: blue
hints: dark_gray
header: green_bold
row_index: green_bold
separator: white separator: white
duration: white leading_trailing_space_bg: { attr: n }
header: green_bold
empty: blue
bool: {|| if $in { light_cyan } else { light_red }}
int: white int: white
filesize: cyan
duration: white
date: purple
range: white range: white
float: white float: white
string: white string: white
nothing: white nothing: white
binary: white binary: white
cellpath: white cell-path: white
row_index: green_bold
record: white record: white
list: white list: white
block: white block: white
hints: dark_gray
shape_garbage: { search_result: { bg: red fg: white }
fg: "#FFFFFF"
bg: "#FF0000"
attr: b
}
shape_matching_brackets: {
attr: u
}
shape_and: purple_bold shape_and: purple_bold
shape_binary: purple_bold shape_binary: purple_bold
shape_block: blue_bold shape_block: blue_bold
shape_bool: light_cyan shape_bool: light_cyan
shape_closure: green_bold
shape_custom: green shape_custom: green
shape_datetime: cyan_bold shape_datetime: cyan_bold
shape_directory: cyan shape_directory: cyan
@ -81,12 +34,14 @@ let theme = {
shape_filepath: cyan shape_filepath: cyan
shape_flag: blue_bold shape_flag: blue_bold
shape_float: purple_bold shape_float: purple_bold
shape_garbage: { fg: white bg: red attr: b}
shape_globpattern: cyan_bold shape_globpattern: cyan_bold
shape_int: purple_bold shape_int: purple_bold
shape_internalcall: cyan_bold shape_internalcall: cyan_bold
shape_list: cyan_bold shape_list: cyan_bold
shape_match_pattern: green
shape_literal: blue shape_literal: blue
shape_match_pattern: green
shape_matching_brackets: { attr: u }
shape_nothing: light_cyan shape_nothing: light_cyan
shape_operator: yellow shape_operator: yellow
shape_or: purple_bold shape_or: purple_bold
@ -99,10 +54,10 @@ let theme = {
shape_string_interpolation: cyan_bold shape_string_interpolation: cyan_bold
shape_table: blue_bold shape_table: blue_bold
shape_variable: purple shape_variable: purple
shape_vardecl: purple
} }
$env.config = {
let-env config = {
show_banner: false show_banner: false
ls: { ls: {
@ -114,102 +69,127 @@ let-env config = {
always_trash: false always_trash: false
} }
cd: {
abbreviations: false
}
table: { table: {
mode: rounded mode: basic
index_mode: always index_mode: always
show_empty: true show_empty: true
padding: { left: 1, right: 1 }
trim: { trim: {
methodology: wrapping methodology: wrapping
wrapping_try_keep_words: true wrapping_try_keep_words: true
truncating_suffix: "..." truncating_suffix: "..."
} }
header_on_separator: false
} }
error_style: "fancy"
datetime_format: {}
explore: { explore: {
help_banner: true status_bar_background: { fg: "#1D1F21", bg: "#C4C9C6" }
exit_esc: true command_bar_text: { fg: "#C4C9C6" }
command_bar_text: '#C4C9C6' highlight: { fg: black, bg: yellow }
status: {
status_bar_background: { error: { fg: white, bg: red }
fg: '#1D1F21' warn: {}
bg: '#C4C9C6' info: {}
} },
highlight: {
bg: 'yellow'
fg: 'black'
}
table: { table: {
split_line: '#404040' split_line: { fg: "#404040" }
cursor: true selected_cell: { bg: light_blue }
line_index: true selected_row: {}
line_shift: true selected_column: {}
line_head_top: true },
line_head_bottom: true
show_head: true
show_index: true
}
config: {
cursor_color: {
bg: 'yellow'
fg: 'black'
}
}
} }
history: { history: {
max_size: 1000 max_size: 100_000
sync_on_enter: true sync_on_enter: true
file_format: "plaintext" file_format: plaintext
isolation: false
} }
completions: { completions: {
case_sensitive: false case_sensitive: false
quick: true quick: true
partial: true partial: true
algorithm: "prefix" algorithm: prefix
external: { external: {
enable: true enable: true
max_results: 100 max_results: 100
completer: null completer: {|tokens|
let expanded_alias = scope aliases | where name == $tokens.0 | get --ignore-errors expansion.0
let tokens = if $expanded_alias != null {
$expanded_alias | split row " " | append ($tokens | skip 1)
} else {
$tokens
}
let cmd = $tokens.0 | str trim --left --char "^"
let completions = ^carapace $cmd nushell $tokens | from json | default []
if ($completions | is-empty) {
let path = $tokens | last
ls $"($path)*" | each {|it|
let choice = if ($path | str ends-with "/") {
$path | path join ($it.name | path basename)
} else {
$path | path dirname | path join ($it.name | path basename)
}
let choice = if ($it.type == "dir") and (not ($choice | str ends-with "/")) {
$"($choice)/"
} else {
$choice
}
if ($choice | str contains " ") {
$"`($choice)`"
} else {
$choice
}
}
} else if ($completions | where value =~ '^.*ERR$' | is-empty) {
$completions
} else {
null
}
}
} }
} }
filesize: { filesize: {
metric: true metric: true
format: "auto" format: auto
} }
cursor_shape: { cursor_shape: {
vi_insert: line emacs: line
vi_normal: underscore vi_insert: blink_underscore
vi_normal: block
} }
color_config: $theme color_config: $theme
use_grid_icons: true use_grid_icons: true
footer_mode: "25" footer_mode: 25
float_precision: 2 float_precision: 2
buffer_editor: ""
use_ansi_coloring: true use_ansi_coloring: true
bracketed_paste: true
edit_mode: vi edit_mode: vi
shell_integration: false shell_integration: false
render_right_prompt_on_last_line: true render_right_prompt_on_last_line: false
use_kitty_protocol: false
hooks: { hooks: {
display_output: { || pre_prompt: []
if (term size).columns >= 100 { pre_execution: []
table -e env_change: {}
} else { display_output: "if (term size).columns >= 100 { table -e } else { table }"
table command_not_found: {}
}
}
} }
menus: [ menus: [
@ -217,14 +197,12 @@ let-env config = {
name: completion_menu name: completion_menu
only_buffer_difference: false only_buffer_difference: false
marker: "| " marker: "| "
type: { type: {
layout: columnar layout: columnar
columns: 4 columns: 4
col_width: 20 col_width: 20 # Optional value. If missing all the screen width is used to calculate column width
col_padding: 2 col_padding: 2
} }
style: { style: {
text: green text: green
selected_text: green_reverse selected_text: green_reverse
@ -235,12 +213,10 @@ let-env config = {
name: history_menu name: history_menu
only_buffer_difference: true only_buffer_difference: true
marker: "? " marker: "? "
type: { type: {
layout: list layout: list
page_size: 10 page_size: 10
} }
style: { style: {
text: green text: green
selected_text: green_reverse selected_text: green_reverse
@ -251,104 +227,20 @@ let-env config = {
name: help_menu name: help_menu
only_buffer_difference: true only_buffer_difference: true
marker: "? " marker: "? "
type: { type: {
layout: description layout: description
columns: 4 columns: 4
col_width: 20 col_width: 20 # Optional value. If missing all the screen width is used to calculate column width
col_padding: 2 col_padding: 2
selection_rows: 4 selection_rows: 4
description_rows: 10 description_rows: 10
} }
style: { style: {
text: green text: green
selected_text: green_reverse selected_text: green_reverse
description_text: yellow description_text: yellow
} }
} }
{
name: commands_menu
only_buffer_difference: false
marker: "# "
type: {
layout: columnar
columns: 4
col_width: 20
col_padding: 2
}
style: {
text: green
selected_text: green_reverse
description_text: yellow
}
source: { |buffer, position|
$nu.scope.commands
| where name =~ $buffer
| each { |it| {
value: $it.name
description: $it.usage
} }
}
}
{
name: vars_menu
only_buffer_difference: true
marker: "# "
type: {
layout: list
page_size: 10
}
style: {
text: green
selected_text: green_reverse
description_text: yellow
}
source: { |buffer, position|
nu.scope.vars
| where name =~ $buffer
| sort-by name
| each { |it| {
value: $it.name
description: $it.type
} }
}
}
{
name: commands_with_description
only_buffer_difference: true
marker: "# "
type: {
layout: description
columns: 4
col_width: 20
col_padding: 2
selection_rows: 4
description_rows: 10
}
style: {
text: green
selected_text: green_reverse
description_text: yellow
}
source: { |buffer, position|
$nu.scope.commands
| where name =~ $buffer
| each { |it| {
value: $it.name
description: $it.usage
} }
}
}
] ]
keybindings: [ keybindings: [
@ -361,32 +253,40 @@ let-env config = {
until: [ until: [
{ send: menu name: completion_menu } { send: menu name: completion_menu }
{ send: menunext } { send: menunext }
{ edit: complete }
] ]
} }
} }
{
name: completion_previous
modifier: shift
keycode: backtab
mode: [vi_normal, vi_insert]
event: { send: menuprevious }
}
{ {
name: history_menu name: history_menu
modifier: control modifier: control
keycode: char_r keycode: char_r
mode: emacs mode: [emacs, vi_insert, vi_normal]
event: { send: menu name: history_menu } event: { send: menu name: history_menu }
} }
{ {
name: next_page name: help_menu
modifier: none
keycode: f1
mode: [emacs, vi_insert, vi_normal]
event: { send: menu name: help_menu }
}
{
name: completion_previous_menu
modifier: shift
keycode: backtab
mode: [emacs, vi_normal, vi_insert]
event: { send: menuprevious }
}
{
name: next_page_menu
modifier: control modifier: control
keycode: char_x keycode: char_x
mode: emacs mode: emacs
event: { send: menupagenext } event: { send: menupagenext }
} }
{ {
name: undo_or_previous_page name: undo_or_previous_page_menu
modifier: control modifier: control
keycode: char_z keycode: char_z
mode: emacs mode: emacs
@ -398,58 +298,407 @@ let-env config = {
} }
} }
{ {
name: yank name: escape
modifier: control modifier: none
keycode: char_y keycode: escape
mode: emacs mode: [emacs, vi_normal, vi_insert]
event: { event: { send: esc } # NOTE: does not appear to work
until: [
{ edit: pastecutbufferafter }
]
}
} }
{ {
name: unix-line-discard name: cancel_command
modifier: control modifier: control
keycode: char_u keycode: char_c
mode: [emacs, vi_normal, vi_insert]
event: { send: ctrlc }
}
{
name: quit_shell
modifier: control
keycode: char_d
mode: [emacs, vi_normal, vi_insert]
event: { send: ctrld }
}
{
name: clear_screen
modifier: control
keycode: char_l
mode: [emacs, vi_normal, vi_insert]
event: { send: clearscreen }
}
{
name: search_history
modifier: control
keycode: char_q
mode: [emacs, vi_normal, vi_insert]
event: { send: searchhistory }
}
{
name: open_command_editor
modifier: control
keycode: char_o
mode: [emacs, vi_normal, vi_insert]
event: { send: openeditor }
}
{
name: move_up
modifier: none
keycode: up
mode: [emacs, vi_normal, vi_insert] mode: [emacs, vi_normal, vi_insert]
event: { event: {
until: [ until: [
{ edit: cutfromlinestart } {send: menuup}
{send: up}
] ]
} }
} }
{ {
name: kill-line name: move_down
modifier: control modifier: none
keycode: char_k keycode: down
mode: [emacs, vi_normal, vi_insert] mode: [emacs, vi_normal, vi_insert]
event: { event: {
until: [ until: [
{ edit: cuttolineend } {send: menudown}
{send: down}
] ]
} }
} }
{ {
name: commands_menu name: move_left
modifier: none
keycode: left
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{send: menuleft}
{send: left}
]
}
}
{
name: move_right_or_take_history_hint
modifier: none
keycode: right
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{send: historyhintcomplete}
{send: menuright}
{send: right}
]
}
}
{
name: move_one_word_left
modifier: control
keycode: left
mode: [emacs, vi_normal, vi_insert]
event: {edit: movewordleft}
}
{
name: move_one_word_right_or_take_history_hint
modifier: control
keycode: right
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{send: historyhintwordcomplete}
{edit: movewordright}
]
}
}
{
name: move_to_line_start
modifier: none
keycode: home
mode: [emacs, vi_normal, vi_insert]
event: {edit: movetolinestart}
}
{
name: move_to_line_start
modifier: control
keycode: char_a
mode: [emacs, vi_normal, vi_insert]
event: {edit: movetolinestart}
}
{
name: move_to_line_end_or_take_history_hint
modifier: none
keycode: end
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{send: historyhintcomplete}
{edit: movetolineend}
]
}
}
{
name: move_to_line_end_or_take_history_hint
modifier: control
keycode: char_e
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{send: historyhintcomplete}
{edit: movetolineend}
]
}
}
{
name: move_to_line_start
modifier: control
keycode: home
mode: [emacs, vi_normal, vi_insert]
event: {edit: movetolinestart}
}
{
name: move_to_line_end
modifier: control
keycode: end
mode: [emacs, vi_normal, vi_insert]
event: {edit: movetolineend}
}
{
name: move_up
modifier: control
keycode: char_p
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{send: menuup}
{send: up}
]
}
}
{
name: move_down
modifier: control modifier: control
keycode: char_t keycode: char_t
mode: [emacs, vi_normal, vi_insert] mode: [emacs, vi_normal, vi_insert]
event: { send: menu name: commands_menu } event: {
until: [
{send: menudown}
{send: down}
]
}
} }
{ {
name: vars_menu name: delete_one_character_backward
modifier: alt modifier: none
keycode: char_o keycode: backspace
mode: [emacs, vi_normal, vi_insert] mode: [emacs, vi_insert]
event: { send: menu name: vars_menu } event: {edit: backspace}
} }
{ {
name: commands_with_description name: delete_one_word_backward
modifier: control modifier: control
keycode: char_s keycode: backspace
mode: [emacs, vi_normal, vi_insert] mode: [emacs, vi_insert]
event: { send: menu name: commands_with_description } event: {edit: backspaceword}
}
{
name: delete_one_character_forward
modifier: none
keycode: delete
mode: [emacs, vi_insert]
event: {edit: delete}
}
{
name: delete_one_character_forward
modifier: control
keycode: delete
mode: [emacs, vi_insert]
event: {edit: delete}
}
{
name: delete_one_character_forward
modifier: control
keycode: char_h
mode: [emacs, vi_insert]
event: {edit: backspace}
}
{
name: delete_one_word_backward
modifier: control
keycode: char_w
mode: [emacs, vi_insert]
event: {edit: backspaceword}
}
{
name: move_left
modifier: none
keycode: backspace
mode: vi_normal
event: {edit: moveleft}
}
{
name: newline_or_run_command
modifier: none
keycode: enter
mode: emacs
event: {send: enter}
}
{
name: move_left
modifier: control
keycode: char_b
mode: emacs
event: {
until: [
{send: menuleft}
{send: left}
]
}
}
{
name: move_right_or_take_history_hint
modifier: control
keycode: char_f
mode: emacs
event: {
until: [
{send: historyhintcomplete}
{send: menuright}
{send: right}
]
}
}
{
name: redo_change
modifier: control
keycode: char_g
mode: emacs
event: {edit: redo}
}
{
name: undo_change
modifier: control
keycode: char_z
mode: emacs
event: {edit: undo}
}
{
name: paste_before
modifier: control
keycode: char_y
mode: emacs
event: {edit: pastecutbufferbefore}
}
{
name: cut_word_left
modifier: control
keycode: char_w
mode: emacs
event: {edit: cutwordleft}
}
{
name: cut_line_to_end
modifier: control
keycode: char_k
mode: emacs
event: {edit: cuttoend}
}
{
name: cut_line_from_start
modifier: control
keycode: char_u
mode: emacs
event: {edit: cutfromstart}
}
{
name: swap_graphemes
modifier: control
keycode: char_t
mode: emacs
event: {edit: swapgraphemes}
}
{
name: move_one_word_left
modifier: alt
keycode: left
mode: emacs
event: {edit: movewordleft}
}
{
name: move_one_word_right_or_take_history_hint
modifier: alt
keycode: right
mode: emacs
event: {
until: [
{send: historyhintwordcomplete}
{edit: movewordright}
]
}
}
{
name: move_one_word_left
modifier: alt
keycode: char_b
mode: emacs
event: {edit: movewordleft}
}
{
name: move_one_word_right_or_take_history_hint
modifier: alt
keycode: char_f
mode: emacs
event: {
until: [
{send: historyhintwordcomplete}
{edit: movewordright}
]
}
}
{
name: delete_one_word_forward
modifier: alt
keycode: delete
mode: emacs
event: {edit: deleteword}
}
{
name: delete_one_word_backward
modifier: alt
keycode: backspace
mode: emacs
event: {edit: backspaceword}
}
{
name: delete_one_word_backward
modifier: alt
keycode: char_m
mode: emacs
event: {edit: backspaceword}
}
{
name: cut_word_to_right
modifier: alt
keycode: char_d
mode: emacs
event: {edit: cutwordright}
}
{
name: upper_case_word
modifier: alt
keycode: char_u
mode: emacs
event: {edit: uppercaseword}
}
{
name: lower_case_word
modifier: alt
keycode: char_l
mode: emacs
event: {edit: lowercaseword}
}
{
name: capitalize_char
modifier: alt
keycode: char_c
mode: emacs
event: {edit: capitalizechar}
} }
] ]
} }

View file

@ -1,4 +1,4 @@
{ lib, pkgs, systemConfiguration, homeConfiguration, enabled, ... }: lib.recursiveUpdate { lib, pkgs, systemConfiguration, homeConfiguration, homePackages, enabled, ... }: lib.recursiveUpdate3
(systemConfiguration { (systemConfiguration {
users.users.nixos.shell = pkgs.nushell; users.users.nixos.shell = pkgs.nushell;
@ -17,3 +17,7 @@
}; };
}; };
}) })
(with pkgs; homePackages "nixos" [
carapace
])

View file

@ -1,26 +1,6 @@
let-env ENV_CONVERSIONS = { $env.ENV_CONVERSIONS = {
"PATH": { "PATH": {
from_string: { |string| from_string: { |s| $s | split row (char esep) | path expand --no-symlink }
$string to_string: { |v| $v | path expand --no-symlink | str join (char esep) }
| split row (char esep)
| path expand -n
}
to_string: { |value|
$value
| path expand -n
| str join (char esep)
}
} }
} }
$env.NU_LIB_DIRS = [
($nu.config-path
| path dirname
| path join 'scripts')
]
$env.NU_PLUGIN_DIRS = [
($nu.config-path
| path dirname
| path join 'plugins')
]