(py-shell-map): New variable contains the keymap used in *Python*
shell buffers.
(py-shell): Moved the require of comint to the top level. Also
use-local-map py-shell-map instead of hacking on the comint-mode-map.
This eliminates breakage of other comint-mode buffers (e.g. shell).
diff --git a/Misc/python-mode.el b/Misc/python-mode.el
index c8e78a7..088b0bb 100644
--- a/Misc/python-mode.el
+++ b/Misc/python-mode.el
@@ -105,6 +105,7 @@
;;; Code:
+(require 'comint)
(require 'custom)
(eval-when-compile
(require 'cl)
@@ -632,6 +633,16 @@
(where-is-internal 'self-insert-command))
)
+(defvar py-shell-map nil
+ "Keymap used in *Python* shell buffers.")
+(if py-shell-map
+ nil
+ (setq py-shell-map (copy-keymap comint-mode-map))
+ (define-key py-shell-map [tab] 'tab-to-tab-stop)
+ (define-key py-shell-map "\C-c-" 'py-up-exception)
+ (define-key py-shell-map "\C-c=" 'py-down-exception)
+ )
+
(defvar py-mode-syntax-table nil
"Syntax table used in `python-mode' buffers.")
(if py-mode-syntax-table
@@ -1193,17 +1204,13 @@
;; BAW - should undo be disabled in the python process buffer, if
;; this bug still exists?
(interactive)
- (require 'comint)
(switch-to-buffer-other-window
(apply 'make-comint py-which-bufname py-which-shell nil py-which-args))
(make-local-variable 'comint-prompt-regexp)
(setq comint-prompt-regexp "^>>> \\|^[.][.][.] \\|^(pdb) ")
(add-hook 'comint-output-filter-functions 'py-comint-output-filter-function)
(set-syntax-table py-mode-syntax-table)
- ;; set up keybindings for this subshell
- (local-set-key [tab] 'self-insert-command)
- (local-set-key "\C-c-" 'py-up-exception)
- (local-set-key "\C-c=" 'py-down-exception)
+ (use-local-map py-shell-map)
)
(defun py-clear-queue ()