#!/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