python.el: Generate clearer shell buffer names.

* lisp/progmodes/python.el (python-shell-get-process-name)
(python-shell-internal-get-process-name): Use `buffer-name`.
(python-shell-internal-get-or-create-process): Simplify.

* test/automated/python-tests.el (python-shell-get-process-name-1)
(python-shell-internal-get-process-name-1): Cleanup.
(python-shell-get-process-name-2)
(python-shell-internal-get-process-name-2): New tests.
(python-shell-calculate-command-1)
(python-shell-calculate-process-environment-3)
(python-shell-calculate-exec-path-2, python-shell-make-comint-1)
(python-shell-make-comint-2, python-shell-make-comint-4)
(python-shell-get-process-1, python-util-clone-local-variables-1):
Replace obsolete function and variable references with current.
parent 8cf42182
2014-12-26 Fabián Ezequiel Gallina <fgallina@gnu.org>
python.el: Generate clearer shell buffer names.
* progmodes/python.el (python-shell-get-process-name)
(python-shell-internal-get-process-name): Use `buffer-name`.
(python-shell-internal-get-or-create-process): Simplify.
2014-12-26 Dmitry Gutov <dgutov@yandex.ru>
Add basic xref apropos implementation to elisp-mode.
......
......@@ -2087,36 +2087,18 @@ and `python-shell-output-prompt-regexp' using the values from
(defun python-shell-get-process-name (dedicated)
"Calculate the appropriate process name for inferior Python process.
If DEDICATED is t and the variable `buffer-file-name' is non-nil
returns a string with the form
`python-shell-buffer-name'[variable `buffer-file-name'] else
returns the value of `python-shell-buffer-name'."
(let ((process-name
(if (and dedicated
buffer-file-name)
(format "%s[%s]" python-shell-buffer-name buffer-file-name)
(format "%s" python-shell-buffer-name))))
process-name))
If DEDICATED is t returns a string with the form
`python-shell-buffer-name'[`buffer-name'] else returns the value
of `python-shell-buffer-name'."
(if dedicated
(format "%s[%s]" python-shell-buffer-name (buffer-name))
python-shell-buffer-name))
(defun python-shell-internal-get-process-name ()
"Calculate the appropriate process name for Internal Python process.
The name is calculated from `python-shell-global-buffer-name' and
a hash of all relevant global shell settings in order to ensure
uniqueness for different types of configurations."
(format "%s [%s]"
python-shell-internal-buffer-name
(md5
(concat
python-shell-interpreter
python-shell-interpreter-args
python-shell--prompt-calculated-input-regexp
python-shell--prompt-calculated-output-regexp
(mapconcat #'symbol-value python-shell-setup-codes "")
(mapconcat #'identity python-shell-process-environment "")
(mapconcat #'identity python-shell-extra-pythonpaths "")
(mapconcat #'identity python-shell-exec-path "")
(or python-shell-virtualenv-root "")
(mapconcat #'identity python-shell-exec-path "")))))
the `buffer-name'."
(format "%s[%s]" python-shell-internal-buffer-name (buffer-name)))
(defun python-shell-calculate-command ()
"Calculate the string used to execute the inferior Python process."
......@@ -2606,12 +2588,10 @@ there for compatibility with CEDET.")
(defun python-shell-internal-get-or-create-process ()
"Get or create an inferior Internal Python process."
(let* ((proc-name (python-shell-internal-get-process-name))
(proc-buffer-name (format " *%s*" proc-name)))
(when (not (process-live-p proc-name))
(run-python-internal)
(setq python-shell-internal-buffer proc-buffer-name))
(get-buffer-process proc-buffer-name)))
(let ((proc-name (python-shell-internal-get-process-name)))
(if (process-live-p proc-name)
(get-process proc-name)
(run-python-internal))))
(define-obsolete-function-alias
'python-proc 'python-shell-internal-get-or-create-process "24.3")
......
2014-12-26 Fabián Ezequiel Gallina <fgallina@gnu.org>
* automated/python-tests.el (python-shell-get-process-name-1)
(python-shell-internal-get-process-name-1): Cleanup.
(python-shell-get-process-name-2)
(python-shell-internal-get-process-name-2): New tests.
(python-shell-calculate-command-1)
(python-shell-calculate-process-environment-3)
(python-shell-calculate-exec-path-2, python-shell-make-comint-1)
(python-shell-make-comint-2, python-shell-make-comint-4)
(python-shell-get-process-1, python-util-clone-local-variables-1):
Replace obsolete function and variable references with current.
2014-12-19 Artur Malabarba <bruce.connor.am@gmail.com>
* automated/let-alist.el: require `cl-lib'
......
......@@ -1775,52 +1775,41 @@ def f():
(defvar python-tests-shell-interpreter "python")
(ert-deftest python-shell-get-process-name-1 ()
"Check process name calculation on different scenarios."
"Check process name calculation sans `buffer-file-name'."
(python-tests-with-temp-buffer
""
(should (string= (python-shell-get-process-name nil)
python-shell-buffer-name))
;; When the `current-buffer' doesn't have `buffer-file-name', even
;; if dedicated flag is non-nil should not include its name.
(should (string= (python-shell-get-process-name t)
python-shell-buffer-name)))
""
(should (string= (python-shell-get-process-name nil)
python-shell-buffer-name))
(should (string= (python-shell-get-process-name t)
(format "%s[%s]" python-shell-buffer-name (buffer-name))))))
(ert-deftest python-shell-get-process-name-2 ()
"Check process name calculation with `buffer-file-name'."
(python-tests-with-temp-file
""
;; `buffer-file-name' is non-nil but the dedicated flag is nil and
;; should be respected.
(should (string= (python-shell-get-process-name nil)
python-shell-buffer-name))
(should (string=
(python-shell-get-process-name t)
(format "%s[%s]" python-shell-buffer-name buffer-file-name)))))
""
;; `buffer-file-name' is non-nil but the dedicated flag is nil and
;; should be respected.
(should (string= (python-shell-get-process-name nil)
python-shell-buffer-name))
(should (string=
(python-shell-get-process-name t)
(format "%s[%s]" python-shell-buffer-name (buffer-name))))))
(ert-deftest python-shell-internal-get-process-name-1 ()
"Check the internal process name is config-unique."
(let* ((python-shell-interpreter python-tests-shell-interpreter)
(python-shell-interpreter-args "")
(python-shell-prompt-regexp ">>> ")
(python-shell-prompt-block-regexp "[.][.][.] ")
(python-shell-setup-codes "")
(python-shell-process-environment "")
(python-shell-extra-pythonpaths "")
(python-shell-exec-path "")
(python-shell-virtualenv-path "")
(expected (python-tests-with-temp-buffer
"" (python-shell-internal-get-process-name))))
;; Same configurations should match.
(should
(string= expected
(python-tests-with-temp-buffer
"" (python-shell-internal-get-process-name))))
(let ((python-shell-interpreter-args "-B"))
;; A minimal change should generate different names.
(should
(not (string=
expected
(python-tests-with-temp-buffer
"" (python-shell-internal-get-process-name))))))))
(ert-deftest python-shell-parse-command-1 ()
"Check the internal process name is buffer-unique sans `buffer-file-name'."
(python-tests-with-temp-buffer
""
(should (string= (python-shell-internal-get-process-name)
(format "%s[%s]" python-shell-internal-buffer-name (buffer-name))))))
(ert-deftest python-shell-internal-get-process-name-2 ()
"Check the internal process name is buffer-unique with `buffer-file-name'."
(python-tests-with-temp-file
""
(should (string= (python-shell-internal-get-process-name)
(format "%s[%s]" python-shell-internal-buffer-name (buffer-name))))))
(ert-deftest python-shell-calculate-command-1 ()
"Check the command to execute is calculated correctly.
Using `python-shell-interpreter' and
`python-shell-interpreter-args'."
......@@ -1832,7 +1821,7 @@ Using `python-shell-interpreter' and
(format "%s %s"
python-shell-interpreter
python-shell-interpreter-args)
(python-shell-parse-command)))))
(python-shell-calculate-command)))))
(ert-deftest python-shell-calculate-process-environment-1 ()
"Test `python-shell-process-environment' modification."
......@@ -1857,17 +1846,17 @@ Using `python-shell-interpreter' and
path-separator original-pythonpath)))))
(ert-deftest python-shell-calculate-process-environment-3 ()
"Test `python-shell-virtualenv-path' modification."
"Test `python-shell-virtualenv-root' modification."
(let* ((original-path (or (getenv "PATH") ""))
(python-shell-virtualenv-path
(python-shell-virtualenv-root
(directory-file-name user-emacs-directory))
(process-environment
(python-shell-calculate-process-environment)))
(should (not (getenv "PYTHONHOME")))
(should (string= (getenv "VIRTUAL_ENV") python-shell-virtualenv-path))
(should (string= (getenv "VIRTUAL_ENV") python-shell-virtualenv-root))
(should (equal (getenv "PATH")
(format "%s/bin%s%s"
python-shell-virtualenv-path
python-shell-virtualenv-root
path-separator original-path)))))
(ert-deftest python-shell-calculate-process-environment-4 ()
......@@ -1900,13 +1889,13 @@ Using `python-shell-interpreter' and
(ert-deftest python-shell-calculate-exec-path-2 ()
"Test `python-shell-exec-path' modification."
(let* ((original-exec-path exec-path)
(python-shell-virtualenv-path
(python-shell-virtualenv-root
(directory-file-name (expand-file-name user-emacs-directory)))
(exec-path (python-shell-calculate-exec-path)))
(should (equal
exec-path
(append (cons
(format "%s/bin" python-shell-virtualenv-path)
(format "%s/bin" python-shell-virtualenv-root)
original-exec-path))))))
(ert-deftest python-shell-make-comint-1 ()
......@@ -1922,7 +1911,7 @@ Using `python-shell-interpreter' and
(shell-buffer
(python-tests-with-temp-buffer
"" (python-shell-make-comint
(python-shell-parse-command) proc-name)))
(python-shell-calculate-command) proc-name)))
(process (get-buffer-process shell-buffer)))
(unwind-protect
(progn
......@@ -1943,7 +1932,7 @@ Using `python-shell-interpreter' and
(shell-buffer
(python-tests-with-temp-buffer
"" (python-shell-make-comint
(python-shell-parse-command) proc-name nil t)))
(python-shell-calculate-command) proc-name nil t)))
(process (get-buffer-process shell-buffer)))
(unwind-protect
(progn
......@@ -2010,7 +1999,7 @@ and `python-shell-interpreter-args' in the new shell buffer."
(setenv "PYTHONSTARTUP" startup-file)
(python-tests-with-temp-buffer
"" (python-shell-make-comint
(python-shell-parse-command) proc-name nil))))
(python-shell-calculate-command) proc-name nil))))
(process (get-buffer-process shell-buffer)))
(unwind-protect
(progn
......@@ -2040,10 +2029,10 @@ and `python-shell-interpreter-args' in the new shell buffer."
(dedicated-proc-name (python-shell-get-process-name t))
(global-shell-buffer
(python-shell-make-comint
(python-shell-parse-command) global-proc-name))
(python-shell-calculate-command) global-proc-name))
(dedicated-shell-buffer
(python-shell-make-comint
(python-shell-parse-command) dedicated-proc-name))
(python-shell-calculate-command) dedicated-proc-name))
(global-process (get-buffer-process global-shell-buffer))
(dedicated-process (get-buffer-process dedicated-shell-buffer)))
(unwind-protect
......@@ -3767,7 +3756,7 @@ def foo(a, b, c):
. "from IPython.core.completerlib import module_completion")
(python-shell-completion-string-code
. "';'.join(get_ipython().Completer.all_completions('''%s'''))\n")
(python-shell-virtualenv-path
(python-shell-virtualenv-root
. "/home/user/.virtualenvs/project"))))
(with-current-buffer buffer
(kill-all-local-variables)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment