2017-09-02 8 views
1

J'aime utiliser les outils terminaux et l'un d'eux est « magit » - client Git impressionnant mis en œuvre comme un ensemble Emacs. Je l'utilise pour contrôler les projets Git. J'ai un script qui démarre automatiquement emacs au démarrage de l'ordinateur (ce même moi une fois avec le travail de routine). Mais aussi je cherche un moyen de courir emacs en magit-statut mode (sans manuel d'exécution M-x magit-status... chaque fois). Emacs offre la possibilité de configurer son environnement dans le fichier de configuration init. Pour exécuter emacs magit au démarrage, j'ai créé le fichier magit.el spécial et lancez emacs de la ligne de commandeImpossible d'exécuter emacs dans `magit-état-mode` avec l'aide du fichier d'initialisation personnalisé

$ emacs -q --load ~/.emacs.d/magit.el 

Malheureusement je pas basculer dans emacs magic-status-mode - quelque chose de mal avec le fichier init. Emacs reste au lisp-interaction-mode après le démarrage. Le contenu du fichier init est ci-dessous:

;; disable welcome screen at launch 
(setq inhibit-startup-screen t) 

(setq visible-bell t) 

; Disable tabs indent 
(setq-default c-basic-offset 4 
      tab-width 4 
      indent-tabs-mode nil) 

(global-set-key "\C-h" 'delete-backward-char) 

;; Makes *scratch* empty. 
(setq initial-scratch-message "") 

;; Removes *scratch* from buffer after the mode has been set. 
(defun remove-scratch-buffer() 
    (if (get-buffer "*scratch*") 
     (kill-buffer "*scratch*"))) 
;(add-hook 'after-change-major-mode-hook 'remove-scratch-buffer) 

;; Removes *messages* from the buffer. 
;(setq-default message-log-max nil) 
;(kill-buffer "*Messages*") 

;; Removes *Completions* from buffer after you've opened a file. 
;(add-hook 'minibuffer-exit-hook 
;  '(lambda() 
;   (let ((buffer "*Completions*")) 
;   (and (get-buffer buffer) 
;    (kill-buffer buffer))))) 

;; Don't show *Buffer list* when opening multiple files at the same time. 
(setq inhibit-startup-buffer-menu t) 

;; Show only one active window when opening multiple files at the same time. 
;(add-hook 'window-setup-hook 'delete-other-windows) 

;; Tell emacs where is your personal elisp lib dir (magit) 
(add-to-list 'load-path "~/.emacs.d/lisp/") 
(load "git") ;; best not to include the ending “.el” or “.elc” 
;; activate installed packages 
(package-initialize) 


(setq-default major-mode 'magit-status-mode) 
(add-hook 'after-init-hook #'magit-status-mode) 
(if after-init-time 
    (add-hook 'after-init-hook #'magit-status-mode)) 

Répondre

0

Essayez ceci:

(call-interactively 'magit-status) 

Au lieu de tout cela:

(setq-default major-mode 'magit-status-mode) 
(add-hook 'after-init-hook #'magit-status-mode) 
(if after-init-time 
    (add-hook 'after-init-hook #'magit-status-mode)) 

En utilisant after-init-hook aurait du sens dans un fichier init, mais avec -q vous êtes explicitement pas en utilisant un fichier init (en utilisant --load est pas la même chose), et ce crochet a déjà ru n au moment où votre fichier personnalisé magit.el est chargé, rien de ce que vous ajoutez au hook à ce stade ne sera traité.

Notez que vous ne pas voulez appeler magit-status-mode à tous. Ce n'est pas un mode majeur que vous pourriez invoquer manuellement, car vous ne voudriez jamais utiliser ce mode pour tout autre tampon que celui créé par la commande magit-status.

+0

Génial! Je vous remercie! –