changes by Barry, e.g. font lock & email addresses
diff --git a/Misc/python-mode-old.el b/Misc/python-mode-old.el
index 8700503..18f93b0 100644
--- a/Misc/python-mode-old.el
+++ b/Misc/python-mode-old.el
@@ -2,12 +2,12 @@
;; Copyright (C) 1992,1993,1994 Tim Peters
-;; Author: 1995 Barry A. Warsaw <bwarsaw@cnri.reston.va.us>
-;; 1992-1994 Tim Peters <tim@ksr.com>
-;; Maintainer: bwarsaw@cnri.reston.va.us
+;; Author: 1995 Barry A. Warsaw
+;; 1992-1994 Tim Peters
+;; Maintainer: python-mode@python.org
;; Created: Feb 1992
-;; Version: 2.19
-;; Last Modified: 1995/03/20 18:32:14
+;; Version: 2.26
+;; Last Modified: 1995/07/05 23:26:15
;; Keywords: python editing language major-mode
;; This software is provided as-is, without express or implied
@@ -58,6 +58,7 @@
;; - even better support for outdenting. Guido suggests outdents of
;; at least one level after a return, raise, break, or continue
;; statement.
+;; - de-electrify colon inside literals (e.g. comments and strings)
;; If you can think of more things you'd like to see, drop me a line.
;; If you want to report bugs, use py-submit-bug-report (C-c C-b).
@@ -67,9 +68,9 @@
;; patches.
;; LCD Archive Entry:
-;; python-mode|Barry A. Warsaw|bwarsaw@cnri.reston.va.us
+;; python-mode|Barry A. Warsaw|python-mode@python.org
;; |Major mode for editing Python programs
-;; |1995/03/20 18:32:14|2.19|
+;; |1995/07/05 23:26:15|2.26|
;;; Code:
@@ -162,30 +163,75 @@
displayed in the echo area, and if `py-beep-if-tab-change' is non-nil
the Emacs bell is also rung as a warning.")
+;; These were the previous font-lock keywords, but I think I now
+;; prefer the ones from XEmacs 19.12's font-lock.el. I've merged the
+;; two into the new definition below.
+;;
+;;(defvar python-font-lock-keywords
+;; (list
+;; (cons
+;; (concat
+;; "\\<\\("
+;; (mapconcat
+;; 'identity
+;; '("access" "and" "break" "continue"
+;; "del" "elif" "else" "except"
+;; "exec" "finally" "for" "from"
+;; "global" "if" "import" "in"
+;; "is" "lambda" "not" "or"
+;; "pass" "print" "raise" "return"
+;; "try" "while" "def" "class"
+;; )
+;; "\\|")
+;; "\\)\\>")
+;; 1)
+;; ;; functions
+;; '("\\bdef\\s +\\(\\sw+\\)(" 1 font-lock-function-name-face)
+;; ;; classes
+;; '("\\bclass\\s +\\(\\sw+\\)[(:]" 1 font-lock-function-name-face)
+;; )
+;; "*Additional keywords to highlight `python-mode' buffers.")
+
+;; These are taken from XEmacs 19.12's font-lock.el file, but have the
+;; more complete list of keywords from the previous definition in
+;; python-mode.el. There are a few other minor stylistic changes as
+;; well.
+;;
(defvar python-font-lock-keywords
- (list
- (cons
- (concat
- "\\<\\("
- (mapconcat
- 'identity
- '("access" "and" "break" "continue"
- "del" "elif" "else" "except"
- "exec" "finally" "for" "from"
- "global" "if" "import" "in"
- "is" "lambda" "not" "or"
- "pass" "print" "raise" "return"
- "try" "while" "def" "class"
- )
- "\\|")
- "\\)\\>")
- 1)
- ;; functions
- '("\\bdef\\s +\\(\\sw+\\)(" 1 font-lock-function-name-face)
- ;; classes
- '("\\bclass\\s +\\(\\sw+\\)[(:]" 1 font-lock-function-name-face)
- )
- "*Additional keywords to highlight `python-mode' buffers.")
+ (list
+ (cons (concat
+ "\\b\\("
+ (mapconcat
+ 'identity
+ '("access" "and" "break" "continue"
+ "del" "elif" "else:" "except"
+ "except:" "exec" "finally:" "for"
+ "from" "global" "if" "import"
+ "in" "is" "lambda" "not"
+ "or" "pass" "print" "raise"
+ "return" "try:" "while"
+ )
+ "\\|")
+ "\\)[ \n\t(]")
+ 1)
+ ;; classes
+ '("\\bclass[ \t]+\\([a-zA-Z_]+[a-zA-Z0-9_]*\\)"
+ 1 font-lock-type-face)
+ ;; functions
+ '("\\bdef[ \t]+\\([a-zA-Z_]+[a-zA-Z0-9_]*\\)"
+ 1 font-lock-function-name-face)
+ )
+ "*Additional expressions to highlight in Python mode.")
+
+;; R Lindsay Todd <toddr@rpi.edu> suggests these changes to the
+;; original keywords, which wouldn't be necessary if we go with the
+;; XEmacs defaults, but which I agree makes sense without them.
+;;
+;; functions
+;; '("\\bdef\\s +\\(\\sw+\\)\\s *(" 1 font-lock-function-name-face)
+;; classes
+;; '("\\bclass\\s +\\(\\sw+\\)\\s *[(:]" 1 font-lock-type-face)
+
;; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -525,7 +571,8 @@
(progn
(require 'shell)
(switch-to-buffer-other-window
- (make-shell "Python" py-python-command))))
+ (apply (if (boundp 'make-shell) 'make-shell 'make-comint)
+ "Python" py-python-command nil))))
(make-local-variable 'shell-prompt-pattern)
(setq shell-prompt-pattern "^>>> \\|^\\.\\.\\. ")
(set-process-filter (get-buffer-process (current-buffer))
@@ -615,6 +662,7 @@
(set-buffer pbuf)
(let* ((start (point))
(goback (< start pmark))
+ (goend (and (not goback) (= start (point-max))))
(buffer-read-only nil))
(goto-char pmark)
(insert string)
@@ -631,14 +679,18 @@
(if py-scroll-process-buffer
(let* ((pop-up-windows t)
(pwin (display-buffer pbuf)))
- (set-window-point pwin (point))))))
- (set-buffer curbuf)
- (if file-finished
- (progn
- (py-delete-file-silently (car py-file-queue))
- (setq py-file-queue (cdr py-file-queue))
- (if py-file-queue
- (py-execute-file pyproc (car py-file-queue)))))))
+ (set-window-point pwin (point)))))
+ (set-buffer curbuf)
+ (if file-finished
+ (progn
+ (py-delete-file-silently (car py-file-queue))
+ (setq py-file-queue (cdr py-file-queue))
+ (if py-file-queue
+ (py-execute-file pyproc (car py-file-queue)))))
+ (and goend
+ (progn (set-buffer pbuf)
+ (goto-char (point-max))))
+ )))
(defun py-execute-buffer ()
"Send the contents of the buffer to a Python interpreter.
@@ -1893,10 +1945,12 @@
(set-buffer pbuf)
(goto-char (point-max))
(move-marker (process-mark process) (point))
- (if (not py-this-is-emacs-19-p)
+ (if (not (or py-this-is-emacs-19-p
+ py-this-is-lucid-emacs-p))
(move-marker last-input-start (point))) ; muck w/ shell-mode
(funcall (process-filter process) process string)
- (if (not py-this-is-emacs-19-p)
+ (if (not (or py-this-is-emacs-19-p
+ py-this-is-lucid-emacs-p))
(move-marker last-input-end (point))) ; muck w/ shell-mode
(set-buffer cbuf))
(sit-for 0))
@@ -1910,9 +1964,9 @@
(setq zmacs-region-stays t)))
-(defconst py-version "2.19"
+(defconst py-version "2.26"
"`python-mode' version number.")
-(defconst py-help-address "bwarsaw@cnri.reston.va.us"
+(defconst py-help-address "python-mode@python.org"
"Address accepting submission of bug reports.")
(defun py-version ()