summaryrefslogtreecommitdiff
path: root/fish/conf.d/editor.fish
blob: 8706eea5fb00586605ef3d392fb1c4c6981b8f1f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
set -gx EDITOR hx
set -gx VISUAL $EDITOR
set -gx GIT_EDITOR $EDITOR
set -gx HELIX_CONFIG_DIR $HOME/.config/helix

function editor::helix::open_with_lock
    set -l file $argv[1]
    set -l lock "$file.lock"
    if test -f "$lock"
        echo "File lock $lock exists! Another instance is editing it?"
        return 2
    end
    touch $lock
    hx $file $argv[2..-1]
    rm $lock
end

function editor::helix::open_with_lock::force
    set -l file $argv[1]
    set -l lock "$file.lock"
    if test -f "$lock"
        echo "File lock $lock exists! Force deleting it and terminating all $EDITOR instances?"
        rm -f $lock
        pkill -f $EDITOR
    end
    touch $lock
    hx $file $argv[2..-1]
    rm $lock
end

function editor::helix::edit::remote
    set -l local_path $argv[1]
    set -l remote_uri $argv[2]
    scp $local_path $remote_uri; or return 1
    echo "LOCAL_PATH=$local_path; REMOTE_URI=$remote_uri" >~/.hx.remote.source
    hx $local_path
end

function hxdiff
    set tmp (mktemp /tmp/hxdiff_XXXXXX.diff)
    diff -u -r $argv >$tmp
    hx $tmp
    rm -f $tmp

end

function tfdiff
    hxdiff --exclude=.claude --exclude=.cursor --exclude='tfplan' --exclude='*.tfplan' --exclude=modules.json --exclude=.terraform --exclude=.terraform.lock.hcl $argv
end

abbr -a lhx 'editor::helix::open_with_lock'
abbr -a hxl 'editor::helix::open_with_lock'
abbr -a hxlf 'editor::helix::open_with_lock::force'
abbr -a lhxf 'editor::helix::open_with_lock::force'
abbr -a rhx 'editor::helix::edit::remote'
abbr -a x hx