Commit Graph

352 Commits

Author SHA1 Message Date
Barry Warsaw f64b4054af (py-compute-indentation): Several changes made to improve navigation
over and around triple-quoted strings:

    - move the beginning-of-line to above the p-p-s call

    - in the `t' clause of the big cond, where we skip over
      triple-quoted strings, first find out if we're looking at a
      single or TQS, then skip over it in one fell swoop, instead of
      trying to loop over skipage of SQS's.

(py-parse-state): Implement XEmacs only hack to more accurately figure
out whether we're in a string or not.  Can't do this in Emacs because
it lacks the necessary primitive, so we just do it the old (and mostly
accurate, but foolable) way for Emacs.
1998-02-12 16:52:14 +00:00
Barry Warsaw 8ee4a60c70 (py-scroll-process-buffer): Default value changed to nil to act more
like default shell-mode behavior.
1998-02-06 16:01:52 +00:00
Barry Warsaw f1b3e89800 (py-parse-state): When looking for landing inside triple-quoted
string, don't check for indentation at column zero.  This will falsely
hit a line inside a docstring that starts at column zero but ends in a
colon.
1998-02-05 23:35:09 +00:00
Barry Warsaw 8f972b762a (py-python-command-args): New variable, allows user to customize the
arguments past to py-python-command when invoking the Python shell.
1998-02-05 20:45:49 +00:00
Barry Warsaw f06777dd7c (py-outdent-p): When looking at the previous line, watch out for
continuation lines.  This fixes this bug report, reported by Frank
Stajano.

# But if I split the "raise" line and reindent, the else WRONGLY goes up a
# level (?!?)

while condition1:
    if condition2:
        raise error3, \
              moreInfo4
else: # meant to close "if condition2"
    action5()
1998-01-21 05:36:18 +00:00
Barry Warsaw 9ec9fbc355 (py-goto-initial-line): Shut up the byte compiler. 1998-01-21 05:15:57 +00:00
Barry Warsaw 82aecb9d66 (py-mode-map): Add a binding of C-m to py-newline-and-indent. This is
a religious issue: RMS decrees that the Enter (RET) key should just do
a newline and a LFD (C-j) should do a newline and indent (i.e. the
python-mode version of this).  Almost everyone I know disagrees and
finds that RET should do newline and indent.  Almost everyone hacks
their modes to do this, if they know how.  Because it's hard for
newbies to figure out how to do this, and because most DOS keyboards
lack a LFD (leaving users to the more obscure C-j), I think it makes
better sense to add this default binding.
1998-01-21 05:14:24 +00:00
Barry Warsaw c210e69981 (py-compute-indentation): In the most common case, where indentation
is based on the line above, watch out for landing inside a triple
quoted string.  In this case, use iterative search +
parse-partial-sexp backwards to find the beginning of the string.

Note this does affect performance, but very little in the common cases
(I hope).  It could be made *much* faster by adding Emacs and XEmacs
dependent code -- different code naturally.  :-(

Fixes the following reported bug:

if len(sys.argv) >= 6:
    # More lines here
    fptr = open('/etc/hosts', 'w')
    fptr.write("""# /etc/hosts -- autocreated by /etc/ppp/ip-up
#
# Address from pppd
%-15s	%s

# For loopbacking
127.0.0.1	localhost

255.255.255.255	broadcast
""" % (ipaddr, ipname) )

os.chmod('/etc/hosts', 0644)
1998-01-20 22:52:56 +00:00
Barry Warsaw c0ecb53194 (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.
1998-01-20 21:43:34 +00:00
Guido van Rossum b25c0e739c delete gMakefile, clarify Makefile.pre.in 1998-01-13 18:53:42 +00:00
Guido van Rossum 5eb3f90ad5 No longer needed, sez Jim. 1998-01-13 18:52:40 +00:00
Guido van Rossum fbea1d35db Added from 1.5b2 to 1.5. 1997-12-31 00:04:35 +00:00
Guido van Rossum 14777f87d8 New blood. 1997-12-30 04:31:04 +00:00
Guido van Rossum 105ff952bd Typed in the relevant changes since 1.5b1. 1997-12-11 20:35:47 +00:00
Guido van Rossum 5a978dc7e5 Doug Marien. 1997-12-11 20:24:38 +00:00
Barry Warsaw 3723152c5b Update to the Big Comment at the top of the file. It should better
explain what the users of the various Emacsen have to do to get this
all working.
1997-12-11 17:23:13 +00:00
Guido van Rossum 87908f5925 New names. 1997-12-10 18:57:35 +00:00
Barry Warsaw 5ea20d52c7 Added some links to OO-Browser, given by Harri Pasanen.
Updated the to do list.
1997-12-06 00:00:47 +00:00
Barry Warsaw 9981d2226d (py-jump-on-exception): Variable which if t, means that if an
exception occurs in a synchronous Python subprocess, the mode will
automatically jump to the innermost exception.
1997-12-03 05:25:48 +00:00
Barry Warsaw 27ee115fd7 Removed redundant eval-when-compile.
(python-mode): Conditionalize imenu initializations to when we can
safely require imenu.  Under Emacs this should prevent python-mode
from hosing the global value of imenu-create-index-function and
messing things up for all other modes.  Problem identified by
Christian Egli.

(py-describe-mode): py-delete-char => py-electric-backspace.  Given by
Christian Egli.
1997-12-03 05:03:44 +00:00
Barry Warsaw 5c38bf6c62 (python-mode): Patch to make font-lock work automatically for Emacs.
Unnecessary for XEmacs, but oh well...
1997-12-02 22:01:04 +00:00
Barry Warsaw 673d05f0ee Test for an up-to-date Custom library when byte-compiling, and issue
an informative message when one cannot be found, as is the case with a
vanilla Emacs 19.34 (and NTEmacs 19.34).
1997-12-02 21:51:57 +00:00
Guido van Rossum 2888a12eed Add attributions to Jeffrey Ollie and Tim Peters for re.py. 1997-12-02 19:44:54 +00:00
Barry Warsaw 8529ebb78c Require 'cl when compiling so that the push macro gets picked in Emacs
19.34.
1997-12-01 20:03:12 +00:00
Barry Warsaw ffbc17da19 (py-traceback-line-re): Relaxation of regexp to catch SyntaxErrors.
Harri Pasanen.
1997-11-27 20:08:14 +00:00
Barry Warsaw f471056b0a (py-process-filter): py-delete-file-silently is obsolete. Use a
py-safe wrapped delete-file call instead.
1997-11-26 21:00:36 +00:00
Barry Warsaw 3b3ff4e96e (py-compute-indentation): Check for multiline stringness and
commentness so that hitting TAB in the middle of a comment will still
indent the line.
1997-11-26 20:58:48 +00:00
Barry Warsaw 8c4a8de75e (py-mode-map): Bind py-mark-def-or-class to C-M-h with a different
spelling so that it doesn't clobber the standard M-BS binding.  This
should be portable between X/Emacsen.
1997-11-26 20:30:33 +00:00
Guido van Rossum 7ea639b133 Added list of what's new in 1.5b1. Changed intro and some section titles. 1997-11-26 16:36:28 +00:00
Guido van Rossum 4d8e7c5464 Four more valuable contributors... 1997-11-26 16:35:55 +00:00
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
Guido van Rossum 4aa6186216 Drop Capitalized Important Words. 1997-11-25 15:40:06 +00:00
Guido van Rossum 275feea40f New names... 1997-11-24 17:50:47 +00:00
Guido van Rossum 4a9aff2eba A comparison with several other languages that also appears in the
Handbook of Object Technology.
1997-11-20 21:15:28 +00:00
Guido van Rossum 51bb7b7940 Dang. Formatting glitch. 1997-11-20 15:42:46 +00:00
Guido van Rossum f5831ae92e New blurb, derived from my Handbook of Object Technology abstract. 1997-11-20 15:42:18 +00:00
Guido van Rossum 6f5a312cec New version from Neale... He promised it's the last. 1997-11-11 16:36:14 +00:00
Guido van Rossum 3120bc3888 v1.1; added attribution to Neale Pickett. 1997-11-08 07:16:19 +00:00
Guido van Rossum 1abbd7f3f1 Added vgrindefs. 1997-11-07 19:58:10 +00:00
Guido van Rossum 93a47d7c3c Plucked this from the net. 1997-11-07 19:57:54 +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
Guido van Rossum 2bd358c9fd A nice blurb that Mark Hammond wrote, aimed at Windows users. 1997-11-05 17:15:02 +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