summaryrefslogtreecommitdiffstats
path: root/Misc
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>1998-01-20 21:43:34 (GMT)
committerBarry Warsaw <barry@python.org>1998-01-20 21:43:34 (GMT)
commitc0ecb53194c5835bf355e5ddfc17524bd477e476 (patch)
tree99affc27872b4cf9c57e73ea64cdbb829923d6a7 /Misc
parent61b04526265c100fb6157c0019c3c898d11361d2 (diff)
downloadcpython-c0ecb53194c5835bf355e5ddfc17524bd477e476.zip
cpython-c0ecb53194c5835bf355e5ddfc17524bd477e476.tar.gz
cpython-c0ecb53194c5835bf355e5ddfc17524bd477e476.tar.bz2
(py-master-file): New buffer-local variable which can be set in the
file local variable section of a file. When set, and the user hits C-c C-c, this file gets executed instead of the buffer's file. Idea given by Roy Dragseth <royd@math.uit.no>, but implemented differently. (py-execute-buffer): Support py-master-file variable. If this names a relative path, default-directory is prepended via expand-file-name.
Diffstat (limited to 'Misc')
-rw-r--r--Misc/python-mode.el24
1 files changed, 24 insertions, 0 deletions
diff --git a/Misc/python-mode.el b/Misc/python-mode.el
index bc7e53f..4dd1de6 100644
--- a/Misc/python-mode.el
+++ b/Misc/python-mode.el
@@ -279,6 +279,22 @@ source code of the innermost frame.")
:type 'function
:group 'python)
+;; Not customizable
+(defvar py-master-file nil
+ "If non-nil, execute the named file instead of the buffer's file.
+The intent is to allow someone to set this variable file local
+variable section, e.g.:
+
+ # Local Variables:
+ # py-master-file: \"master.py\"
+ # End:
+
+so that hitting \\[py-execute-buffer] in that buffer executes the
+named master file instead of the buffer's file. Note that if the file
+name has a relative path, the `default-directory' for the file is
+prepended to come up with a buffer name.")
+(make-variable-buffer-local 'py-master-file)
+
;; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -1205,12 +1221,20 @@ is inserted at the end. See also the command `py-clear-queue'."
;; Code execution command
(defun py-execute-buffer (&optional async)
"Send the contents of the buffer to a Python interpreter.
+If the file local variable `py-master-file' is non-nil, execute the
+named file instead of the buffer's file.
+
If there is a *Python* process buffer it is used. If a clipping
restriction is in effect, only the accessible portion of the buffer is
sent. A trailing newline will be supplied if needed.
See the `\\[py-execute-region]' docs for an account of some subtleties."
(interactive "P")
+ (if py-master-file
+ (let* ((filename (expand-file-name py-master-file))
+ (buffer (or (get-file-buffer filename)
+ (find-file-noselect filename))))
+ (set-buffer buffer)))
(py-execute-region (point-min) (point-max) async))