unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "Ken Manheimer" <ken.manheimer@gmail.com>
Cc: Slawomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se>,
	emacs-devel@gnu.org
Subject: Re: python-mode patch
Date: Wed, 23 Aug 2006 11:03:30 -0400	[thread overview]
Message-ID: <2cd46e7f0608230803x16aa4fecx76bcebec53b63d80@mail.gmail.com> (raw)
In-Reply-To: <17644.3578.470144.458380@kahikatea.snap.net.nz>

On 8/23/06, Nick Roberts <nickrob@snap.net.nz> wrote:
>  > the other python-mode, python-mode.el, has one feature that i would
>  > love (and need) to see in any python-mode before switching.  (like
>  > others, i didn't know about the python-mode that comes with emacs 22,
>  > and i haven't tried it.)  i originally developed it as "pdbtrack", and
>  > barry warsaw integrated it with  python-mode.el.
>
> I think it would be good to add this especially as it is so few lines
> of code.

particularly when useful...

>  > what it does is add a comint-output-filter-function which looks for
>  > the prompts from python's interactive debugger, pdb.
>
> Yes.  I think these hooks should be local as they interfere with other
> comint derived buffers like shell, GUD etc.

agreed - didn't know about qualifying hooks as local, at the time.
(they're incredibly useful.)

>  > 150 lines of code (apparently 156, now) only gets the very basic
>  > pdb-session file/line tracking.  you type debugging commands at the
>  > interpreter, there are no provisions for setting breakpoints in a
>  > screen-oriented manner, etc - but file/line tracking is 9/10 of the
>  > value of a screen-oriented debugger, for me, and the interpreter is
>  > quite manageable for the other 1/10.  i'd prefer if this approach were
>  > extended to do the other stuff , but at least would like to see it
>  > incorporated with python.el's python-mode.
>
> It seems to me that most Python developers prefer it to pdb in gud.el but
> I see no reason why they shouldn't work alongside one another.

i don't disagree at all about enabling pdbtrack and gud to coexist.
i've seen some discussion about revamping gud (after the emacs 22
release), and have wanted to alert those concerned to a substantially
different approach, which migh yield better results - or might not,
but is worth considering.  however gud's job is done, enabling them to
coexist is good.

(i think for many python developers, me included, pdb in gud is not an
option, because it means leaving the environment at the point where
you want/need to do the debugging and somehow recreating it in a new
gud / python session.  i mention this because this quandry is not
obvious until you're actually in the situation, but the situation is
the common one for an interaction-oriented interpreted environment
like python's.  ironically, it's much like lisp in this way - hence,
emacs has edebug, debug-on-error, edebug-on-error, etc, so you can
start to debug when the bugs occur.  i suspect the pdbtrack approach
would be eminently suited for inferior lisp processes, as well...)

>  > if you're interested in scoping it out, look for variables and
>  > functions that contain the string pdbtrack".  i suspect most of it can
>  > be used exactly as is.
>  >
>  > at 150 lines of code, and since i wrote the original, i would be happy
>  > to sign papers for it.
>
> Presumably you've already signed papers for Emacs as you have contributed
> allout.el.

i don't recall whether the signoff i've done applies to any
contributions - i think i had to sign another for icomplete, for
instance.

> I find the PDB string in the mode-line too intrusive.  If it's needed, perhaps
> it could be a real minor-mode in the py-shell buffer.

i haven't noticed that in a while (and haven't had the opportunity to
write python for a while), will take a look.

> I would also add a sentinel so e.g the overlay arrow is no longer displayed
> if the py-shell buffer is killed.

that sounds good.

> How about the changes below? (this is from FC5, I don't know what version
> of python-mode that corresponds to).

these are good suggestions - i'll look at them soon, see about
incorporating them into python-mode.el, and including them in the
suggestions if someone works it all into python.el.

tnx!

-- 
ken
ken.manheimer@gmail.com
http://myriadicity.net

> *** /usr/share/emacs/site-lisp/python-mode.el   2006-03-08 01:12:21.000000000 +1300
> --- /home/nickrob/lisp/python-mode.el   2006-08-23 20:08:47.000000000 +1200
> ***************
> *** 271,281 ****
>     :group 'python)
>   (make-variable-buffer-local 'py-pdbtrack-do-tracking-p)
>
> - (defcustom py-pdbtrack-minor-mode-string " PDB"
> -   "*String to use in the minor mode list when pdbtrack is enabled."
> -   :type 'string
> -   :group 'python)
> -
>   ;; Not customizable
>   (defvar py-master-file nil
>     "If non-nil, execute the named file instead of the buffer's file.
> --- 271,276 ----
> ***************
> *** 1298,1308 ****
>       (switch-to-buffer-other-window
>        (apply 'make-comint py-which-bufname py-which-shell nil args))
>       (make-local-variable 'comint-prompt-regexp)
>       (setq comint-prompt-regexp "^>>> \\|^[.][.][.] \\|^(pdb) ")
>       (add-hook 'comint-output-filter-functions
> !             'py-comint-output-filter-function)
>       ;; pdbtrack
> !     (add-hook 'comint-output-filter-functions 'py-pdbtrack-track-stack-file)
>       (setq py-pdbtrack-do-tracking-p t)
>       (set-syntax-table py-mode-syntax-table)
>       (use-local-map py-shell-map)
> --- 1293,1305 ----
>       (switch-to-buffer-other-window
>        (apply 'make-comint py-which-bufname py-which-shell nil args))
>       (make-local-variable 'comint-prompt-regexp)
> +     (set-process-sentinel (get-buffer-process (current-buffer)) 'py-sentinel)
>       (setq comint-prompt-regexp "^>>> \\|^[.][.][.] \\|^(pdb) ")
>       (add-hook 'comint-output-filter-functions
> !             'py-comint-output-filter-function nil t)
>       ;; pdbtrack
> !     (add-hook 'comint-output-filter-functions
> !             'py-pdbtrack-track-stack-file nil t)
>       (setq py-pdbtrack-do-tracking-p t)
>       (set-syntax-table py-mode-syntax-table)
>       (use-local-map py-shell-map)
> ***************
> *** 3245,3258 ****
>
>   ;; arrange to kill temp files when Emacs exists
>   (add-hook 'kill-emacs-hook 'py-kill-emacs-hook)
> - (add-hook 'comint-output-filter-functions 'py-pdbtrack-track-stack-file)
>
> ! ;; Add a designator to the minor mode strings
> ! (or (assq 'py-pdbtrack-minor-mode-string minor-mode-alist)
> !     (push '(py-pdbtrack-is-tracking-p py-pdbtrack-minor-mode-string)
> !         minor-mode-alist))
>
> -
> -
>   (provide 'python-mode)
>   ;;; python-mode.el ends here
> --- 3242,3250 ----
>
>   ;; arrange to kill temp files when Emacs exists
>   (add-hook 'kill-emacs-hook 'py-kill-emacs-hook)
>
> ! (defun py-sentinel (proc msg)
> !   (setq overlay-arrow-position nil))
>
>   (provide 'python-mode)
>   ;;; python-mode.el ends here

  reply	other threads:[~2006-08-23 15:03 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-10 10:43 python-mode patch Slawomir Nowaczyk
2006-08-10 11:22 ` Nick Roberts
2006-08-10 16:12   ` Slawomir Nowaczyk
2006-08-10 20:19   ` Richard Stallman
2006-08-20 19:53     ` Slawomir Nowaczyk
2006-08-20 20:31       ` Steven Huwig
2006-08-21  9:39         ` Slawomir Nowaczyk
2006-08-20 21:08       ` Edward O'Connor
2006-08-21  9:03         ` Piet van Oostrum
2006-08-21  9:39           ` Slawomir Nowaczyk
2006-08-21 17:57         ` Peter Lee
2006-08-22  1:31           ` Stefan Monnier
2006-08-22 19:40             ` Peter Lee
2006-08-22 20:07               ` Slawomir Nowaczyk
2006-08-22 20:31                 ` Peter Lee
2006-08-23 20:10                   ` Slawomir Nowaczyk
2006-09-09 19:48                     ` Stefan Monnier
2006-08-20 21:41       ` Nick Roberts
2006-08-21  9:39         ` Slawomir Nowaczyk
2006-08-20 22:33       ` Stefan Monnier
2006-08-21  9:39         ` Slawomir Nowaczyk
2006-08-21 15:58           ` Stefan Monnier
2006-08-21 11:13       ` Richard Stallman
2006-08-23 20:10         ` Slawomir Nowaczyk
2006-08-25  7:43           ` Richard Stallman
2006-08-25  8:11             ` David Kastrup
2006-08-25  8:26             ` Nick Roberts
2006-08-26 10:08               ` Richard Stallman
2006-09-26 21:56                 ` Nick Roberts
2006-09-27  3:41                   ` Stefan Monnier
2006-09-27  5:30                     ` Nick Roberts
2006-09-27  3:59                   ` Ken Manheimer
2006-09-28  2:13                     ` Richard Stallman
2006-08-25  7:43           ` Richard Stallman
2006-08-25 15:44             ` Slawomir Nowaczyk
2006-08-21 18:27       ` Ken Manheimer
2006-08-23  8:12         ` Nick Roberts
2006-08-23 15:03           ` Ken Manheimer [this message]
2006-08-24 19:08         ` Slawomir Nowaczyk
2006-08-24 22:06           ` Nick Roberts

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2cd46e7f0608230803x16aa4fecx76bcebec53b63d80@mail.gmail.com \
    --to=ken.manheimer@gmail.com \
    --cc=emacs-devel@gnu.org \
    --cc=slawomir.nowaczyk.847@student.lu.se \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).