I recently started using spacemacs, and have a newbie question about modifying the way
When I execute
run-python, a new buffer is opened in a different window. I'd like to change it so that it opens the newly created buffer in the current window.
find-function I found the source for
(defun run-python (&optional cmd dedicated show) "Run an inferior Python process. Argument CMD defaults to `python-shell-calculate-command' return value. When called interactively with `prefix-arg', it allows the user to edit such value and choose whether the interpreter should be DEDICATED for the current buffer. When numeric prefix arg is other than 0 or 4 do not SHOW. For a given buffer and same values of DEDICATED, if a process is already running for it, it will do nothing. This means that if the current buffer is using a global process, the user is still able to switch it to use a dedicated one. Runs the hook `inferior-python-mode-hook' after `comint-mode-hook' is run. (Type \\[describe-mode] in the process buffer for a list of commands.)" (interactive (if current-prefix-arg (list (read-shell-command "Run Python: " (python-shell-calculate-command)) (y-or-n-p "Make dedicated process? ") (= (prefix-numeric-value current-prefix-arg) 4)) (list (python-shell-calculate-command) nil t))) (get-buffer-process (python-shell-make-comint (or cmd (python-shell-calculate-command)) (python-shell-get-process-name dedicated) show)))
and the source for
(defun python-shell-make-comint (cmd proc-name &optional show internal) "Create a Python shell comint buffer. CMD is the Python command to be executed and PROC-NAME is the process name the comint buffer will get. After the comint buffer is created the `inferior-python-mode' is activated. When optional argument SHOW is non-nil the buffer is shown. When optional argument INTERNAL is non-nil this process is run on a buffer with a name that starts with a space, following the Emacs convention for temporary/internal buffers, and also makes sure the user is not queried for confirmation when the process is killed." (save-excursion (python-shell-with-environment (let* ((proc-buffer-name (format (if (not internal) "*%s*" " *%s*") proc-name))) (when (not (comint-check-proc proc-buffer-name)) (let* ((cmdlist (split-string-and-unquote cmd)) (interpreter (car cmdlist)) (args (cdr cmdlist)) (buffer (apply #'make-comint-in-buffer proc-name proc-buffer-name interpreter nil args)) (python-shell--parent-buffer (current-buffer)) (process (get-buffer-process buffer)) ;; Users can override the interpreter and args ;; interactively when calling `run-python', let-binding ;; these allows having the new right values in all ;; setup code that is done in `inferior-python-mode', ;; which is important, especially for prompt detection. (python-shell--interpreter interpreter) (python-shell--interpreter-args (mapconcat #'identity args " "))) (with-current-buffer buffer (inferior-python-mode)) (when show (display-buffer buffer)) (and internal (set-process-query-on-exit-flag process nil)))) proc-buffer-name))))
Based on the following snippets of documentation taken from the definition of
"Optional argument ACTION, if non-nil, should specify a buffer display action of the form (FUNCTIONS . ALIST). FUNCTIONS is either an \"action function\" or a possibly empty list of action functions. ALIST is a possibly empty \"action alist\"." "Action functions and the action they try to perform are: `display-buffer-same-window' -- Use the selected window."
I thought by changing the line
(when show (display-buffer buffer)) to
(when show (display-buffer buffer (cons '(display-buffer-same-window) '()))) I could get the behavior I wanted, but it didn't seem to have any effect.
- Is my understanding of how the code works incorrect? If so, how?
- Is modifying and saving the buffer sufficient to change the behavior of the
- Is there a simpler way to do this?