使用自定义初始化文件无法在 `magit-status-mode` 中 运行 emacs
Unable to run emacs in `magit-status-mode` with using custom initialization file
我喜欢使用终端工具,其中之一是'magit' - 很棒的 Git 客户端实现为一个 Emacs 包。我用它来控制 Git 个项目。我有一个在计算机启动时自动启动 emacs 的脚本(这也是我日常工作的时间)。 但我也在寻找一种方法 运行 emacs 在 magit-status 模式(无需每次手动执行 M-x magit-status...
)。 Emacs 提供了在初始化配置文件中配置其环境的可能性。为了在启动时制作 emacs 运行 magit,我从命令行
创建了特殊的 magit.el
文件和 运行 emacs
$ emacs -q --load ~/.emacs.d/magit.el
不幸的是,我无法在 magic-status-mode
中切换 emacs - init 文件有问题。 Emacs 在启动后保留在 lisp-interaction-mode
。初始化文件内容如下:
;; 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))
试试这个:
(call-interactively 'magit-status)
而不是所有这些:
(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))
在初始化文件中使用 after-init-hook
是有意义的,但是对于 -q
你明确地 不是 使用初始化文件(使用 --load
不是一回事),并且在加载自定义 magit.el
文件时该挂钩已经 运行,因此您在那个阶段添加到挂钩的任何内容都不会被处理。
请注意,您根本 不想调用 magit-status-mode
。这不是您期望手动调用的主要模式,因为除了由 magit-status
命令创建的缓冲区之外,您永远不会希望该模式用于任何缓冲区。
我喜欢使用终端工具,其中之一是'magit' - 很棒的 Git 客户端实现为一个 Emacs 包。我用它来控制 Git 个项目。我有一个在计算机启动时自动启动 emacs 的脚本(这也是我日常工作的时间)。 但我也在寻找一种方法 运行 emacs 在 magit-status 模式(无需每次手动执行 M-x magit-status...
)。 Emacs 提供了在初始化配置文件中配置其环境的可能性。为了在启动时制作 emacs 运行 magit,我从命令行
magit.el
文件和 运行 emacs
$ emacs -q --load ~/.emacs.d/magit.el
不幸的是,我无法在 magic-status-mode
中切换 emacs - init 文件有问题。 Emacs 在启动后保留在 lisp-interaction-mode
。初始化文件内容如下:
;; 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))
试试这个:
(call-interactively 'magit-status)
而不是所有这些:
(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))
在初始化文件中使用 after-init-hook
是有意义的,但是对于 -q
你明确地 不是 使用初始化文件(使用 --load
不是一回事),并且在加载自定义 magit.el
文件时该挂钩已经 运行,因此您在那个阶段添加到挂钩的任何内容都不会被处理。
请注意,您根本 不想调用 magit-status-mode
。这不是您期望手动调用的主要模式,因为除了由 magit-status
命令创建的缓冲区之外,您永远不会希望该模式用于任何缓冲区。