# Nushell core team meeting 2024-11-20 ## Attendees - Jack - Stefan - Darren - Michael - Ian - Doug - Devyn - Wind - Rose - Jakub - vishal - piepmatz - Antoine - Maxim ## Agenda - [x] From last weeks agenda : Clarify when config is allowed to alter runtime behavior, if at all [#14331](https://github.com/nushell/nushell/pull/14331). - Darren would like to revert [#13875](https://github.com/nushell/nushell/pull/13875) in favor of 14331 when the PR is finished. It would be nice to have `ls` always sort in a configured manner and none of the `ls`-shadowing scripts work well enough. - Doug pointed out that the pipeline metadata could be inspected to check if the source is `ls`, and then a sort could be applied in the display hook. One downside is that `ls | get` will display a different order (Rose). - A custom command, although verbose, can cover this use case (Ian). There might be a bug with globs, but otherwise it can achieve the same result. - [x] Running ps files [#13020](https://github.com/nushell/nushell/issues/13020) - [ ] Followup to change the script launch behavior to use bash/powershell semantics of executable scripts have to be called either with a path `./script` or on `PATH` - [x] Standardizing hooks [#14345](https://github.com/nushell/nushell/pull/14345) - Change most hooks to lists to make sharing scripts easier. No need to check if null, a single hook, or a list. - Hook lists are run in order and have no return value but can print to the screen. - Hooks that return a value (display_output and command_not_found) must be a single hook. - [x] Concat operator [#14344](https://github.com/nushell/nushell/pull/14344) ### Add these last two items for next weeks agenda - [ ] Add parse-time constant $current_file [#14305](https://github.com/nushell/nushell/pull/14305) vs Add path const command for getting absolute paths to files at parse time [#14303](https://github.com/nushell/nushell/pull/14303) - [ ] Special interest groups, mini teams: getting the expertise to the issues. ## Discussed Topics ### Prelude: Vi mode in reedline - challenge with https://github.com/nushell/reedline/pull/849 - range incorrect in some cases (needs context awareness) - undo - copy ### sneaked in: config simplification Let's GO! #14331 (Jakub's attmept): ``` def lss [--all(-a), ...p: glob] { let p = if ($p | is-empty) { [.] } else { $p } ls ...$p --all=$all | sort-by size } ``` #14331 (Ian's attempt): Darren is running this (added the aliases at the bottom) ``` def lss [ --all (-a), # Show hidden files --long (-l), # Get all available columns for each entry (slower; columns are platform-dependent) --short-names (-s), # Only print the file names, and not the path --full-paths (-f), # display paths as absolute paths --du (-d), # Display the apparent directory size ("disk usage") in place of the directory metadata size --directory (-D), # List the specified directory itself instead of its contents --mime-type (-m), # Show mime-type in type column instead of 'file' (based on filenames only; files' contents are not examined) --threads (-t), # Use multiple threads to list contents. Output will be non-deterministic. ...pattern: glob, # The glob pattern to use. ]: [ nothing -> table ] { let pattern = if ($pattern | is-empty) { [ '.' ] } else { $pattern } (ls --all=$all --long=$long --short-names=$short_names --full-paths=$full_paths --du=$du --directory=$directory --mime-type=$mime_type --threads=$threads ...$pattern ) | sort-by type name -i } alias ls-builtin = ls alias ls = lss ``` #14344 (Jakub's cute idea): ``` [a b] <+ [c d] # [a b [c d]] [a b] +> [c d] # [[a b] c d] [a b] ++ [c d] # [a b c d] [a b] <+ c # [a b c] ```