Commit graph

212 commits

Author SHA1 Message Date
Barry Warsaw
c8520351af (python-mode): Make imenu-create-index-function buffer local.
(imenu-example--create-python-index-engine): Use
buffer-substring-no-properties.  Also, don't use
imenu-create-submenu-name.  Apparently it is obsolete.

These Imenu patches were given by Christian Egli
<christian.egli@stest.ch>
1997-11-26 06:14:40 +00:00
Barry Warsaw
4da6bd51dd (py-mark-def-or-class): Added an exchange-point-and-mark and a
py-keep-region-active so that the marked def/class gets the
zmacs-region or transient-mark region highlighted.  Also point should
be left at the end of the marked region.

(py-mode-map): Moved py-mark-def-or-class to M-C-h to conform to Emacs
major mode standards.
1997-11-26 06:00:26 +00:00
Barry Warsaw
e467bfbfe9 (python-mode): Patch to fix Imenu support under Emacs, given by
Torsten Hilbrich <Torsten.Hilbrich@bln.de>.
1997-11-26 05:40:58 +00:00
Barry Warsaw
47384789b2 (py-kill-emacs-hook): Simplification. 1997-11-26 05:27:45 +00:00
Barry Warsaw
a0ee8cd982 Added comment about where to find details on python-mode.el, pointing
to the Web site.

(py-defun-start-re, py-class-start-re): Changed to defconst.

(py-traceback-line-re): Regular expression describing what traceback
lines look like.

(py-point): New defsubst copied from CC Mode.

(py-highlight-line): Function which does the work of making a
traceback line mouseable.  This only works on XEmacs.  Someone familar
with Emacs text properties and such will have to do that port.

(py-mode-map): Added C-c- bound to py-up-exception and C-c= bound to
py-down-exception.  Also, more concise form for mapcar.

(py-mode-output-map): New keymap for the *Python Output* buffer which
only has keybindings for py-mouseto-exception and py-goto-exception.
All other self-insert-command's are bound to beep.  This is actually
bogus because the buffer should really be made read-only and the
functions that insert in that buffer should bind inhibit-read-only.
Also, this map should be bound to highlighted extents in a *Python*
shell buffer, but this stuff hasn't been migrated into there.

(py-postprocess-output-buffer): New function which extentifies the
*Python Output* buffer.  The bogosities are that this only runs when
the synchronous process in the buffer is finished (so it doesn't work
for async procs), and it should also be merged into py-process-filter
so the *Python* shell gets mouseable too.

(py-shell): Added C-c- and C-c= to the comint buffer's keymap.  The
bogosity is that py-goto-exception should also be bound, but it cannot
be bound to C-cC-c (since that interferes with
comint-interrupt-subjob's typical binding).  Also, traceback lines
aren't mouseable in this buffer.

(py-execute-region): Support for traceback jumping.  This really is
quite a kludge, but necessary based on the way all this stuff works.
There's bound to be broken interactions here.

(py-jump-to-exception, py-mouseto-exception, py-goto-exception,
py-find-next-exception, py-down-exception, py-up-exception): All new
commands and functions to implement traceback jumping.

(py-compute-indentation): Hope this change doesn't get lost in all the
noise above!!!!  This fixes broken non-indentation of a line when TAB
is hit inside a string that isn't a multi-line string.
1997-11-26 01:04:44 +00:00
Barry Warsaw
6ae21ad687 #(py-emacs-features): Fixed typo in docstring. 1997-11-06 14:36:49 +00:00
Barry Warsaw
b8f1166922 (python-font-lock-keywords): Pick up block introducing keywords with
immediately following colons.  Sjoerd noticed this one too.  Here's a
nonsense.py file that flexes all the font-lock keyword combinations.

class A:
    class B(A):
	pass
    def __init__(self):
	if i == 2 and j == 3 or k == 4:
	    import stuff
	    from otherstuff import cool
	    for i in range(cool.count):
		if i == j:
		    break
		elif j == 1:
		    continue
		print i
	    else:
		return not i
	elif q is not i:
	    return lambda x: x + 1
	else:
	    try:
		try:
		    raise stuff.error
		except stuff.error, v:
		    print v
		except:
		    global q
	    finally:
		while q > 0:
		    q = q - 1
		assert q == 0

def make():
    a = A()
    exec "nonsense"
    del a
1997-11-06 14:35:15 +00:00
Barry Warsaw
ef3c891773 (python-font-lock-keywords): Fix for consecutive keyword font locking,
given by Sjoerd Mullender <Sjoerd.Mullender@cwi.nl>.
1997-11-05 18:55:50 +00:00
Barry Warsaw
5e21cb0bfb (py-emacs-features): Test for working make-temp-name, which is broken
on NTEmacs 19.34.6.

(py-serial-number): New variable.

(py-execute-region): If make-temp-name is broken, simply append a
serial number to the string "python-" to get a temporary file name.
It's possible concurrent NTEmacs can step on each others toes, but it
makes no sense to further coddle a busted NTEmacs.
1997-11-05 18:41:11 +00:00
Barry Warsaw
a9ce70f3bc (py-execute-region): Fixed small bug with queuing file for execution
in a py-shell.  Temp files now get cleaned up.
1997-11-05 16:56:51 +00:00
Barry Warsaw
2518c67984 (mark-python-def-or-class): Renamed to py-mark-def-or-class globally.
(py-mode-map): Moved py-mark-def-or-class from M-C-h to C-c C-m since
the old binding conflicts with the standard global backward-kill-word
binding, and this new binding is more conformant with other language
modes.  Moved py-mark-block to C-c C-k.
1997-11-05 00:51:08 +00:00
Barry Warsaw
6d48c4a00b (py-backspace-function): New variable.
(py-electric-backspace, py-electric-delete): Support the XEmacs 20 Way
for backspace and delete mappings.  In XEmacs 19, Emacs 19, and Emacs
20, both backspace and delete keysyms are bound to
py-electric-backspace.  In XEmacs 20, backspace and delete keysyms are
bound separately, allowing the user to specify forward or backward
deletion of the delete keysym through the variable
delete-key-deletes-forward.  All this is the Right Way To Do It and
this implementation was largely ripped from CC Mode.
1997-11-04 19:21:50 +00:00
Barry Warsaw
a97a3f34d6 First round of changes, mostly subprocess stuff.
(py-execute-file): Better interaction with comint.  Set
comint-scroll-to-bottom-on-output to t.  Wrapper buffer change in
unwind-protect in case process filter fails.

(py-shell): Start Python with -i flag to fix tty problem on Windows;
presumably -- not yet tested.

(py-clear-queue): New function to clear the pending exec file queue.
Not currently keybound.

(py-execute-region, py-execute-buffer): Added optional async flag (use
via C-u prefix) to execute the region in a new asynchrous buffer, even
if the Python shell is running.

(py-append-to-process-buffer): Removed as obsolete.  Comint provides
this functionality.

Removed fbound test defun of match-string.  All modern X/Emacsen have
this function.
1997-11-04 18:47:06 +00:00
Barry Warsaw
affc0ca0e8 Changes in preparation for integrating into the Python CVS tree.
Introductory comment updates.

(python-font-lock-keywords): Added "assert"

(py-block-closing-keywords-re): New variable.

(py-no-outdent-re): Rewrite to use py-block-closing-keywords-re.

(py-shell): py-process-filter should no longer be necessary.  Comint
should do all the work.  Note that more fixes to the py-shell process
mechanism need to be done.

(py-execute-region): Check for empty region.  Some questionable
changes to set-buffer after shell-command-on-region.  Again, this all
needs to be closely examined for X/Emacs 19/20 compatibility.

(py-goto-beyond-final-line): py-parse-partial-sexp-works-p should no
longer be necessary.

(py-statement-closes-block-p): Use py-block-closing-keywords-re.
1997-11-03 16:59:38 +00:00
Barry Warsaw
c12c62ee5a (py-parse-partial-sexp-works-p): Removed as obsolete. All current
Emacs and XEmacs versions should have working parse-partial-sexp's.

(py-emacs-features): Defined as future placeholder.
1997-09-04 04:18:07 +00:00
Barry Warsaw
516b6208c7 #Fixed two byte-compiler errors 1997-08-09 06:43:20 +00:00
Barry Warsaw
c72c11c9e3 #Checkpointing X/Emacs 20'fication of this mode. 1997-08-09 06:42:08 +00:00
Barry Warsaw
7d6b7d3f54 #Bumping to version 3.0 1997-08-08 16:19:03 +00:00
Barry Warsaw
e6648967b7 (py-shell): Remove support for Emacs 18, implicitly add support for
Emacs 20, and bind TAB key to self-insert-command in *Python* process.
1997-07-10 15:58:36 +00:00
Barry Warsaw
fb07f408b6 (python-font-lock-keywords): Use new convention for installing in mode 1997-02-24 03:37:22 +00:00
Barry Warsaw
941f70c331 (py-mode-map): Comment Out Region / Uncomment Region should use
py-comment-region instead of comment-region.
1997-01-30 20:16:18 +00:00
Barry Warsaw
2ccda502f6 #Updated authorship line 1997-01-30 19:50:39 +00:00
Barry Warsaw
f770578225 (py-parse-partial-sexp-works-p): New variable to work around a bug in
parse-partial-sexp in some Emacsen.

(py-goto-beyond-final-line): use py-parse-partial-sexp-works-p.
1997-01-30 19:49:39 +00:00
Barry Warsaw
b05399373c (py-delete-function): new variable
(py-delete-char): funcall py-delete-function.
1996-12-17 22:05:07 +00:00
Barry Warsaw
5c8bef1888 (python-mode): added comment-end definitions. 1996-12-17 21:56:10 +00:00
Barry Warsaw
3622e0d090 (match-string): Added a definition for older Emacsen. 1996-10-29 15:32:57 +00:00
Barry Warsaw
7cb505c89b (py-indent-line): take an optional universal argument which says to
defeat extra outdentation for block closing statements (return, raise,
break, continue, pass).

(py-compute-indentation): extra argument to honor block closing
statements.

(py-electric-colon, py-indent-region): use py-compute-indentation's
extra argument

(py-statement-closes-block-p): `pass' treated as a block closing
statement.
1996-10-23 20:44:59 +00:00
Barry Warsaw
7a73ef852f (py-process-filter): Make sure current-buffer is restored, even in the
event of error.  Can't use new Emacs primitive save-current-buffer, so
use unwind-protect instead.
1996-09-30 23:00:40 +00:00
Barry Warsaw
2e049b2b05 (python-font-lock-keywords): with Python 1.4 `access' is no a keyword 1996-09-04 15:21:55 +00:00
Barry Warsaw
b3e81d58aa I have been increasingly annoyed about the fact that
add-change-log-entry-other-window is so bad about guessing the proper
name of Python functions, methods and variables, so finally I wrote
the following (unidiff patch against python-mode.el 2.73):

Per Cederqvist <ceder@signum.se>
1996-09-04 15:12:42 +00:00
Barry Warsaw
01af401e27 #stylistics 1996-09-04 14:57:22 +00:00
Barry Warsaw
550a02e6ae (python-mode): typos 1996-09-04 14:23:00 +00:00
Barry Warsaw
615d4a458f (python-mode): font-lock-defaults must be make-local-variable'd 1996-09-04 14:14:10 +00:00
Barry Warsaw
604cefa8df (py-dump-help-string): Use documentation-property to get docstring. 1996-09-03 18:17:04 +00:00
Barry Warsaw
b1f895150a (python-mode): font-lock-defaults necessary for Emacs 19, but doesn't
hurt for XEmacs.
1996-09-03 16:38:30 +00:00
Barry Warsaw
c72ad871ba #py-shell gets an autoload cookie 1996-09-03 16:16:04 +00:00
Barry Warsaw
261f87dac1 *** empty log message *** 1996-08-20 19:57:34 +00:00
Barry Warsaw
f67a57efc4 (py-no-outdent-re): Added return, break, raise, continue since we
already outdent for those statements.
1996-08-12 19:52:27 +00:00
Barry Warsaw
cf34d2a010 #updated commentary 1996-08-06 15:57:58 +00:00
Barry Warsaw
5490a06fc7 (py-menu): Create default value 1996-08-06 15:43:33 +00:00
Barry Warsaw
c5a8cbd35d (py-forward-into-nomenclature): Slightly better regex for stopping on
underscore.
1996-08-05 21:53:02 +00:00
Barry Warsaw
a766182f08 (py-electric-colon): Use (py-next-statement -1) instead of
(forward-line -1), to properly catch continued statements.
1996-08-02 16:22:43 +00:00
Barry Warsaw
3fcaf61768 #updated comments 1996-08-01 20:11:51 +00:00
Barry Warsaw
755c6714cc (python-mode): automatically install imenu stuff. 1996-08-01 20:02:55 +00:00
Barry Warsaw
8143746750 (imenu-example--python-show-method-args-p,
imenu-example--python-class-regexp,
imenu-example--python-method-regexp,
imenu-example--python-method-no-arg-parens,
imenu-example--python-method-arg-parens,
imenu-example--generic-python-expression,
imenu-example--python-generic-regexp,
imenu-example--python-generic-parens): New variables.

(imenu-example--create-python-index,
imenu-example--create-python-index-engine): New functions.
1996-08-01 19:48:02 +00:00
Barry Warsaw
ce60bc7192 (py-keep-region-active): Zap duplicate defun. 1996-08-01 18:17:14 +00:00
Barry Warsaw
6e527d2ca3 (py-delete-char): Check for py-honor-comment-indentation. 1996-08-01 15:57:48 +00:00
Barry Warsaw
a7891718e1 (py-mode): comment-start is now "# " so indent-for-comment does the
right thing.

(py-comment-region): let-bind comment-start to "## " so commented
regions get transformed into non-indenting comment lines.

(py-compute-region): Implement modification to rule for recognizing
"indenting comment lines".
1996-08-01 15:53:09 +00:00
Barry Warsaw
9e277db76b #comment update 1996-07-31 22:33:40 +00:00
Barry Warsaw
c08a949549 #comment update 1996-07-31 22:27:58 +00:00