@AmandaCameron Trying to understand your question a bit better:
Currently, if you:
Have the magit-status window open as the only window in the frame, and in it you use c c
or other such start-commit commands, it splits, such that the magit-status window goes away replaced by the editable commit-message buffer, and the new window contains a newly-created diff to match what you are committing.
Already have two windows open, magit-status and “Buffer B”, c c
gives you the same result as No. 1 above: one window with editable commit message, other with the diff.
You’re saying that the No. 1 behavior is okay, but in the No. 2 case, you want the result to be three windows, with “Buffer B” still in the frame?
magit-.*-function
variables you could defadvice
to do that (in this case, probably something like magit-commit-create-function
), but they were removed during a ~2018 rearchitecting of Magit because the functionality was split between Magit and magit-popup stuff. I’m not sure how you’d do this now
eq
returns nil, even though magit-save-repository-buffers
is set to dontask
https://github.com/magit/magit/blob/12cd9bf1a095f526237ef1cb1b6b3fa54df83abc/lisp/magit-mode.el#L1169
magit-save-repository-buffers
?
(debug)
before the linked eq
above, evaluating (type-of magit-save-repository-buffers)
says it is a cons
, where as doing the same in ielm
results in symbol
(eq magit-save-repository-buffers 'dontask)
is nil
(car magit-save-repository-buffers)
returns quote
Debugger entered--killing local value of magit-save-repository-buffers in buffer magit: ars:
debug--implement-debug-watch(magit-save-repository-buffers nil makunbound #<buffer magit: ars>)
kill-all-local-variables()
special-mode()
magit-section-mode()
magit-mode()
magit-status-mode()
Debugger entered--setting magit-save-repository-buffers in buffer magit: ars to 'dontask:
debug--implement-debug-watch(magit-save-repository-buffers 'dontask set #<buffer magit: ars>)
hack-one-local-variable(magit-save-repository-buffers 'dontask)
hack-local-variables-apply()
hack-dir-local-variables-non-file-buffer()
magit-status-mode()
magit-setup-buffer-internal(magit-status-mode nil ((magit-buffer-diff-args ("--no-ext-diff")) (magit-buffer-diff-files nil) (magit-buffer-log-args ("-n256" "--decorate")) (magit-buffer-log-files nil)))
(magit-save-repository-buffers . 'dontask)
in there, and I guess the quote is wrong
Hi! Sorry for the repost, but I still haven't figured this out:
Quick question (hopefully): when global-magit-file-mode is t (the default), does one still need to
(require 'magit)
in their init file in order to enable magit-file-mode bindings?
My .emacs does not(require 'magit)
ATM andC-x g
and other shortcuts do not seem to work until I manually callM-x magit-status
once. Adding(require 'magit)
in the init file fixes this. Is this expected?
The installation node in the manual explicitly says to(require 'magit)
when installing from the Git repository, but no such step is mentioned in "Installing from Melpa" nor in "Post-Installation Tasks".
(Tested with Emacs 28)
(My curiosity was renewed by Stefan's recent message on emacs-devel explaining why one shouldn't, in principle, (require 'foo)
in their init file)
@rgrinberg
For example, I'd like to add the diff stat to the current log with -s
Butting in without having read the rest; does L -s g
in a log buffer do what you want?