z_mirror/dotfiles

git clone https://git.raiguard.me/z_mirror/dotfiles

Caleb Heuerkak: Bypass wrapper script when editing lines in lazygitbc4b269

tangere
1.4 KiB77 linesraw
1#!/bin/sh
2
3if [ -f "/usr/local/bin/kak" ]; then
4  kak="exec /usr/local/bin/kak"
5else
6  kak="exec /usr/bin/kak"
7fi
8
9# Don't do stuff if we are being piped into
10if [ ! -t 0 ]; then
11  echo "$(cat)" | $kak "$@"
12  exit
13fi
14
15# Don't do stuff if any flags were passed to kak
16case "$1" in
17  -L)
18    shift
19    $kak "$@"
20    exit
21    ;;
22  -*)
23    $kak "$@"
24    exit
25    ;;
26  # Passing in a line number
27  +*)
28    $kak "$@"
29    exit
30    ;;
31esac
32
33# Change filename to absolute path
34# This only works with the first one, but that's fine
35if [ -n "$1" ]; then
36  set -- "$(realpath $1)"
37fi
38
39# Attempt to root by git repo, or by .kakrc file
40basedir=$(git rev-parse --show-toplevel 2> /dev/null)
41if [ -n "$basedir" ]; then
42  # Set session name
43  session=$(basename "$basedir" | sed 's/\./-/g')
44  # Change to project root dir
45  cd "$basedir"
46else
47  oldpwd="$PWD"
48  while [ "$PWD" != "/" ]; do
49    if [ -f .kakrc ] || [ -f .editorconfig ]; then
50      session=$(basename "$PWD" | sed 's/\./-/g')
51      break
52    fi
53    cd ..
54  done
55  # If not found, revert to original dir
56  if [ -z "$session" ]; then
57    cd "$oldpwd"
58  fi
59fi
60
61sessions="$($kak -l)"
62if $(echo "$sessions" | grep -q "(dead)"); then
63  echo "Clearing dead sessions"
64  $kak -clear
65  sessions="$($kak -l)"
66fi
67
68if [ -z "$session" ]; then
69  $kak "$@"
70  exit
71fi
72
73if $(echo "$sessions" | grep -q "^$session$"); then
74  $kak -c $session "$@"
75else
76  $kak -s $session "$@"
77fi