Function: python-shell-prompt-set-calculated-regexps
python-shell-prompt-set-calculated-regexps is a byte-compiled function
defined in python.el.gz.
Signature
(python-shell-prompt-set-calculated-regexps)
Documentation
Detect and set input and output prompt regexps.
Build and set the values for
python-shell--prompt-calculated-input-regexp and
python-shell--prompt-calculated-output-regexp using the values
from python-shell-prompt-regexp,
python-shell-prompt-block-regexp,
python-shell-prompt-pdb-regexp,
python-shell-prompt-output-regexp,
python-shell-prompt-input-regexps,
python-shell-prompt-output-regexps and detected prompts from
python-shell-prompt-detect.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/python.el.gz
(defun python-shell-prompt-set-calculated-regexps ()
"Detect and set input and output prompt regexps.
Build and set the values for
`python-shell--prompt-calculated-input-regexp' and
`python-shell--prompt-calculated-output-regexp' using the values
from `python-shell-prompt-regexp',
`python-shell-prompt-block-regexp',
`python-shell-prompt-pdb-regexp',
`python-shell-prompt-output-regexp',
`python-shell-prompt-input-regexps',
`python-shell-prompt-output-regexps' and detected prompts from
`python-shell-prompt-detect'."
(when (not (and python-shell--prompt-calculated-input-regexp
python-shell--prompt-calculated-output-regexp))
(let* ((detected-prompts (python-shell-prompt-detect))
(input-prompts nil)
(output-prompts nil)
(build-regexp
(lambda (prompts)
(concat "^\\("
(mapconcat #'identity
(sort prompts
(lambda (a b)
(let ((length-a (length a))
(length-b (length b)))
(if (= length-a length-b)
(string< a b)
(> (length a) (length b))))))
"\\|")
"\\)"))))
;; Validate ALL regexps
(python-shell-prompt-validate-regexps)
;; Collect all user defined input prompts
(dolist (prompt (append python-shell-prompt-input-regexps
(list python-shell-prompt-regexp
python-shell-prompt-block-regexp
python-shell-prompt-pdb-regexp)))
(cl-pushnew prompt input-prompts :test #'string=))
;; Collect all user defined output prompts
(dolist (prompt (cons python-shell-prompt-output-regexp
python-shell-prompt-output-regexps))
(cl-pushnew prompt output-prompts :test #'string=))
;; Collect detected prompts if any
(when detected-prompts
(dolist (prompt (butlast detected-prompts))
(setq prompt (regexp-quote prompt))
(cl-pushnew prompt input-prompts :test #'string=))
(setq python-shell--block-prompt (nth 1 detected-prompts))
(cl-pushnew (regexp-quote
(car (last detected-prompts)))
output-prompts :test #'string=))
;; Set input and output prompt regexps from collected prompts
(setq python-shell--prompt-calculated-input-regexp
(funcall build-regexp input-prompts)
python-shell--prompt-calculated-output-regexp
(funcall build-regexp output-prompts)))))