Re: [Python-mode] beginning-of-defun-function.patch

2009-09-14 Thread Andreas Roehler
Barry Warsaw wrote:
 On Sep 13, 2009, at 6:29 AM, Andreas Roehler wrote:
 
 as mentioned, several modes like C++ or python-mode
 need a more sophisticated determination of beginning-
 or end-of-defun than a regexp may provide.

 A additional function-call will be possible with patch
 attached. It allows use of `M-x end-of-defun' in
 python-mode for example.

 Should no one object, I'll try to check it in into
 the mercurial repo.
 
 I think you meant the Bazaar repo? :)
 

Not this time. :)

It's a patch agains XEmacs lisp.el, providing a call of
end-, resp. beginning-of-defun-function from beginning-of-defun/end-of-defun.

Its a feature available in GNU Emacs, but not in XE.
(Was buggy in GNU last time btw.)




 Can you do a proper branch and merge proposal for this change?  Please
 create a bug too.  It just helps us track things much better.

Will keep that in mind.

Andreas

 
 -Barry
 

___
Python-mode mailing list
Python-mode@python.org
http://mail.python.org/mailman/listinfo/python-mode


Re: [Python-mode] beginning-of-defun-function.patch

2009-09-14 Thread Barry Warsaw

On Sep 14, 2009, at 2:22 AM, Andreas Roehler wrote:


Not this time. :)


Sorry.  Note to self: first sleep, /then/ reply.

-B



PGP.sig
Description: This is a digitally signed message part
___
Python-mode mailing list
Python-mode@python.org
http://mail.python.org/mailman/listinfo/python-mode


[Python-mode] beginning-of-defun-function.patch

2009-09-13 Thread Andreas Roehler

Hi,

as mentioned, several modes like C++ or python-mode
need a more sophisticated determination of beginning-
or end-of-defun than a regexp may provide.

A additional function-call will be possible with patch
attached. It allows use of `M-x end-of-defun' in
python-mode for example.

Should no one object, I'll try to check it in into
the mercurial repo.

Cheers

Andreas Röhler

--
https://code.launchpad.net/s-x-emacs-werkstatt/
http://bazaar.launchpad.net/~a-roehler/python-mode/python-mode.el/
--- MY-PATH/xemacs-21.5/lisp/lisp.el	2009-09-10 20:04:38.0 +0200
+++ MY-PATH/xemacs-21.5-aroehler/lisp/lisp.el	2009-09-11 09:30:32.0 +0200
@@ -155,6 +155,21 @@
   (interactive p)
   (kill-sexp (- (or arg 1
 
+
+;; derived stuff from GNU Emacs
+(defvar beginning-of-defun-function nil
+  If non-nil, function for `beginning-of-defun-raw' to call.
+This is used to find the beginning of the defun instead of using the
+normal recipe (see `beginning-of-defun').  Modes can define this
+if defining `defun-prompt-regexp' is not sufficient to handle the mode's
+needs.)
+
+(defvar end-of-defun-function nil
+  If non-nil, function for `end-of-defun' to call.
+This is used to find the end of the defun instead of using the normal
+recipe (see `end-of-defun').  Modes can define this if the
+normal method is not appropriate.)
+
 (defun beginning-of-defun (optional arg)
   Move backward to the beginning of a defun.
 With argument, do it that many times.  Negative arg -N
@@ -175,13 +190,17 @@
 This is identical to beginning-of-defun, except that point does not move
 to the beginning of the line when `defun-prompt-regexp' is non-nil.
   (interactive p)
-  (and arg ( arg 0) (not (eobp)) (forward-char 1))
-  (and (re-search-backward (if defun-prompt-regexp
-			   (concat ^\\s(\\|
-   \\( defun-prompt-regexp \\)\\s()
-			 ^\\s()
-			   nil 'move (or arg 1))
-   (progn (goto-char (1- (match-end 0 t))
+   ;; (and arg ( arg 0) (not (eobp)) (forward-char 1))
+  (unless arg (setq arg 1))
+  (cond
+   (beginning-of-defun-function
+(funcall beginning-of-defun-function arg))
+   (t (re-search-backward (if defun-prompt-regexp
+  (concat ^\\s(\\|
+  \\( defun-prompt-regexp \\)\\s()
+^\\s()
+			nil 'move (or arg 1))
+	(progn (goto-char (1- (match-end 0 t)))
 
 ;; XEmacs change (optional buffer parameter)
 (defun buffer-end (arg optional buffer)
@@ -198,6 +217,10 @@
   ;; XEmacs change (for zmacs regions)
   (interactive _p)
   (if (or (null arg) (= arg 0)) (setq arg 1))
+  (if end-of-defun-function
+  (if ( arg 0) 
+	  (dotimes (i arg)
+	(funcall end-of-defun-function)))
   (let ((first t))
 (while (and ( arg 0) ( (point) (point-max)))
   (let ((pos (point))) ; XEmacs -- remove unused npos.
@@ -229,7 +252,7 @@
 		  (if (looking-at \\s\\|\n)
 		  (forward-line 1)))
 	  (goto-char (point-min)
-  (setq arg (1+ arg)
+  (setq arg (1+ arg))
 
 (defun mark-defun ()
   Put mark at end of this defun, point at beginning.
___
Python-mode mailing list
Python-mode@python.org
http://mail.python.org/mailman/listinfo/python-mode


Re: [Python-mode] beginning-of-defun-function.patch

2009-09-13 Thread Barry Warsaw

On Sep 13, 2009, at 6:29 AM, Andreas Roehler wrote:


as mentioned, several modes like C++ or python-mode
need a more sophisticated determination of beginning-
or end-of-defun than a regexp may provide.

A additional function-call will be possible with patch
attached. It allows use of `M-x end-of-defun' in
python-mode for example.

Should no one object, I'll try to check it in into
the mercurial repo.


I think you meant the Bazaar repo? :)

Can you do a proper branch and merge proposal for this change?  Please  
create a bug too.  It just helps us track things much better.


-Barry



PGP.sig
Description: This is a digitally signed message part
___
Python-mode mailing list
Python-mode@python.org
http://mail.python.org/mailman/listinfo/python-mode