* progmodes/python.el (inferior-python-mode): Fix hang in

jit-lock.

Fixes: debbugs:12645
This commit is contained in:
Fabián Ezequiel Gallina 2012-11-03 09:20:02 -03:00
parent ad10696b89
commit 12fd5ee1ae
2 changed files with 23 additions and 11 deletions

View file

@ -1,3 +1,8 @@
2012-11-03 Fabián Ezequiel Gallina <fgallina@cuca>
* progmodes/python.el (inferior-python-mode): Fix hang in
jit-lock (Bug#12645).
2012-11-03 Martin Rudalics <rudalics@gmx.at>
* window.el (switch-to-visible-buffer)

View file

@ -1733,17 +1733,24 @@ variable.
(set (make-local-variable 'font-lock-defaults)
'(python-font-lock-keywords nil nil nil nil))
(set (make-local-variable 'syntax-propertize-function)
(syntax-propertize-rules
(comint-prompt-regexp
(0 (ignore
(put-text-property
comint-last-input-start end 'syntax-table
python-shell-output-syntax-table)
(font-lock-unfontify-region comint-last-input-start end))))
((python-rx string-delimiter)
(0 (ignore
(and (not (eq (get-text-property start 'field) 'output))
(python-syntax-stringify))))))))
(eval
;; XXX: Unfortunately eval is needed here to make use of the
;; dynamic value of `comint-prompt-regexp'.
`(syntax-propertize-rules
(,comint-prompt-regexp
(0 (ignore
(put-text-property
comint-last-input-start end 'syntax-table
python-shell-output-syntax-table)
;; XXX: This might look weird, but it is the easiest
;; way to ensure font lock gets cleaned up before the
;; current prompt, which is needed for unclosed
;; strings to not mess up with current input.
(font-lock-unfontify-region comint-last-input-start end))))
(,(python-rx string-delimiter)
(0 (ignore
(and (not (eq (get-text-property start 'field) 'output))
(python-syntax-stringify)))))))))
(compilation-shell-minor-mode 1))
(defun python-shell-make-comint (cmd proc-name &optional pop internal)