45 lines
1.5 KiB
Bash
Executable File
45 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# Launch Emacs in terminal mode with Magit git interface
|
|
# Accepts optional repository path argument
|
|
|
|
if [ $# -eq 0 ]; then
|
|
# No arguments, use current directory
|
|
EMACS_NO_DESKTOP=1 emacs -nw --eval "(progn
|
|
(require 'package)
|
|
(package-initialize)
|
|
(unless (package-installed-p 'magit)
|
|
(package-refresh-contents)
|
|
(package-install 'magit))
|
|
(require 'magit)
|
|
;; Quit Emacs when magit status buffer is killed
|
|
(add-hook 'magit-status-mode-hook
|
|
(lambda ()
|
|
(add-hook 'kill-buffer-hook
|
|
(lambda ()
|
|
(when (eq major-mode 'magit-status-mode)
|
|
(kill-emacs)))
|
|
nil t)))
|
|
(magit-status))"
|
|
else
|
|
# Use specified directory
|
|
cd "$1" 2>/dev/null || {
|
|
echo "Error: Cannot access directory $1"
|
|
exit 1
|
|
}
|
|
EMACS_NO_DESKTOP=1 emacs -nw --eval "(progn
|
|
(require 'package)
|
|
(package-initialize)
|
|
(unless (package-installed-p 'magit)
|
|
(package-refresh-contents)
|
|
(package-install 'magit))
|
|
(require 'magit)
|
|
;; Quit Emacs when magit status buffer is killed
|
|
(add-hook 'magit-status-mode-hook
|
|
(lambda ()
|
|
(add-hook 'kill-buffer-hook
|
|
(lambda ()
|
|
(when (eq major-mode 'magit-status-mode)
|
|
(kill-emacs)))
|
|
nil t)))
|
|
(magit-status))"
|
|
fi |