diff options
author | Minijackson <minijackson@riseup.net> | 2025-01-22 21:08:34 +0100 |
---|---|---|
committer | Minijackson <minijackson@riseup.net> | 2025-01-22 21:08:34 +0100 |
commit | ddaa5013d523942fb1429c4c7f6f2ac9f841a89d (patch) | |
tree | 475ba9522ffa50c017f2780960b25ae82225a41e /common | |
parent | daaa935186c818eb59ffc7c105afc8f1f09cf0e9 (diff) | |
download | nixos-config-reborn-ddaa5013d523942fb1429c4c7f6f2ac9f841a89d.tar.gz nixos-config-reborn-ddaa5013d523942fb1429c4c7f6f2ac9f841a89d.zip |
common/fish: implement sll function and command path shortcut
Diffstat (limited to 'common')
-rw-r--r-- | common/commandline/fish.fish | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/common/commandline/fish.fish b/common/commandline/fish.fish index 294849c..828d56f 100644 --- a/common/commandline/fish.fish +++ b/common/commandline/fish.fish | |||
@@ -5,12 +5,41 @@ set -g fish_key_bindings fish_vi_key_bindings | |||
5 | bind -M insert ctrl-Z 'fg ; commandline -f repaint' | 5 | bind -M insert ctrl-Z 'fg ; commandline -f repaint' |
6 | 6 | ||
7 | function ssht | 7 | function ssht |
8 | ssh -t "$argv" "tmux new-session -A -s 'ssh-$HOST'" | 8 | ssh -t "$argv" "tmux new-session -A -s 'ssh-$HOST'" |
9 | end | 9 | end |
10 | 10 | ||
11 | function cdt | 11 | function cdt |
12 | builtin cd (mktemp -d) | 12 | builtin cd (mktemp -d) |
13 | builtin pwd | 13 | builtin pwd |
14 | end | 14 | end |
15 | 15 | ||
16 | # TODO: sll | 16 | function sll --description "Recursively resolve a symbolic link" |
17 | for path in $argv | ||
18 | set -l seen_inodes | ||
19 | |||
20 | while test -L $path | ||
21 | set inode (stat -c %i $path) | ||
22 | |||
23 | if contains $inode $seen_inodes | ||
24 | echo "Infinite recursion detected" | ||
25 | return 1 | ||
26 | end | ||
27 | set -a seen_inodes $inode | ||
28 | |||
29 | ll -d $path || return 1 | ||
30 | |||
31 | set previous_dir (path dirname $path) | ||
32 | set path (readlink $path | path normalize) | ||
33 | if not string match -q "/*" $path | ||
34 | set path (path normalize "$previous_dir/$path") | ||
35 | end | ||
36 | end | ||
37 | ll -d $path || return 1 | ||
38 | end | ||
39 | end | ||
40 | |||
41 | function expand_equal_command | ||
42 | type -P (string sub --start 2 $argv) | ||
43 | end | ||
44 | |||
45 | abbr -a expand_equal_command --position anywhere --regex "^=.+" --function expand_equal_command | ||