comparison lisp/progmodes/python.el @ 54943:07e279030b6f

(python-compilation-line-number): Fix braindamage. (python-load-file): Fix python-orig-start setting.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Fri, 16 Apr 2004 23:36:13 +0000
parents 109b2bf180dd
children ee7e5daa7ffd
comparison
equal deleted inserted replaced
54942:ea5155e2fbe2 54943:07e279030b6f
1 ;;; python.el --- silly walks for Python 1 ;;; python.el --- silly walks for Python
2 2
3 ;; Copyright (C) 2003, 04 Free Software Foundation, Inc. 3 ;; Copyright (C) 2003, 04 Free Software Foundation, Inc.
4 4
5 ;; Author: Dave Love <fx@gnu.org> 5 ;; Author: Dave Love <fx@gnu.org>
6 ;; Maintainer: FSF
6 ;; Created: Nov 2003 7 ;; Created: Nov 2003
7 ;; Keywords: languages 8 ;; Keywords: languages
8 9
9 ;; This file is part of GNU Emacs. 10 ;; This file is part of GNU Emacs.
10 11
1043 Used as line-number hook function in `python-compilation-regexp-alist'." 1044 Used as line-number hook function in `python-compilation-regexp-alist'."
1044 (let ((line (string-to-number (match-string 2)))) 1045 (let ((line (string-to-number (match-string 2))))
1045 (cons (point-marker) 1046 (cons (point-marker)
1046 (if (and (markerp python-orig-start) 1047 (if (and (markerp python-orig-start)
1047 (marker-buffer python-orig-start)) 1048 (marker-buffer python-orig-start))
1048 (with-current-buffer (marker-buffer python-orig-start) 1049 (let ((start python-orig-start))
1049 (goto-char python-orig-start) 1050 (with-current-buffer (marker-buffer python-orig-start)
1050 (forward-line (1- line))) 1051 (goto-char start)
1051 (list (if (stringp python-orig-start) python-orig-start file) 1052 (forward-line (1- line))
1052 line nil))))) 1053 (point-marker)))
1054 (list (if (stringp python-orig-start)
1055 (list python-orig-start default-directory)
1056 file)
1057 line col)))))
1053 1058
1054 (defvar python-preoutput-result nil 1059 (defvar python-preoutput-result nil
1055 "Data from output line last `_emacs_out' line seen by the preoutput filter.") 1060 "Data from output line last `_emacs_out' line seen by the preoutput filter.")
1056 1061
1057 (defvar python-preoutput-continuation nil 1062 (defvar python-preoutput-continuation nil
1240 (let ((end (marker-position (process-mark (python-proc))))) 1245 (let ((end (marker-position (process-mark (python-proc)))))
1241 (set (make-local-variable 'compilation-error-list) nil) 1246 (set (make-local-variable 'compilation-error-list) nil)
1242 ;; (set (make-local-variable 'compilation-old-error-list) nil) 1247 ;; (set (make-local-variable 'compilation-old-error-list) nil)
1243 (let ((comint-input-filter-functions 1248 (let ((comint-input-filter-functions
1244 (delete 'python-input-filter comint-input-filter-functions))) 1249 (delete 'python-input-filter comint-input-filter-functions)))
1250 (set (make-local-variable 'python-orig-start) nil)
1251 ;; Fixme: I'm not convinced by this logic from python-mode.el.
1245 (python-send-string 1252 (python-send-string
1246 (if (string-match "\\.py\\'" file-name) 1253 (if (string-match "\\.py\\'" file-name)
1247 ;; Fixme: make sure the directory is in the path list 1254 ;; Fixme: make sure the directory is in the path list
1248 (let ((module (file-name-sans-extension 1255 (let ((module (file-name-sans-extension
1249 (file-name-nondirectory file-name)))) 1256 (file-name-nondirectory file-name))))
1250 (set (make-local-variable 'python-orig-start) nil)
1251 (format "\ 1257 (format "\
1252 if globals().has_key(%S): reload(%s) 1258 if globals().has_key(%S): reload(%s)
1253 else: import %s 1259 else: import %s
1254 " module module module)) 1260 " module module module))
1255 (set (make-local-variable 'python-orig-start) file-name)
1256 (format "execfile('%s')" file-name)))) 1261 (format "execfile('%s')" file-name))))
1257 (set-marker compilation-parsing-end end) 1262 (set-marker compilation-parsing-end end)
1258 (setq compilation-last-buffer (current-buffer)))))) 1263 (setq compilation-last-buffer (current-buffer))))))
1259 1264
1260 ;; Fixme: Should this start a process if there isn't one? (Unlike cmuscheme.) 1265 ;; Fixme: Should this start a process if there isn't one? (Unlike cmuscheme.)