[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/progmodes/python.el,v
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/progmodes/python.el,v |
Date: |
Thu, 12 Jul 2007 04:36:49 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Stefan Monnier <monnier> 07/07/12 04:36:49
Index: progmodes/python.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/progmodes/python.el,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -b -r1.62 -r1.63
--- progmodes/python.el 14 Jun 2007 00:11:40 -0000 1.62
+++ progmodes/python.el 12 Jul 2007 04:36:48 -0000 1.63
@@ -997,6 +997,15 @@
(setq arg (1- arg)))
(zerop arg)))
+(defvar python-which-func-length-limit 40
+ "Non-strict length limit for `python-which-func' output.")
+
+(defun python-which-func ()
+ (let ((function-name (python-current-defun python-which-func-length-limit)))
+ (set-text-properties 0 (length function-name) nil function-name)
+ function-name))
+
+
;;;; Imenu.
(defvar python-recursing)
@@ -1814,22 +1823,30 @@
(1+ (/ (current-indentation) python-indent)))
;; Fixme: Consider top-level assignments, imports, &c.
-(defun python-current-defun ()
+(defun python-current-defun (&optional length-limit)
"`add-log-current-defun-function' for Python."
(save-excursion
;; Move up the tree of nested `class' and `def' blocks until we
;; get to zero indentation, accumulating the defined names.
(let ((start t)
- accum)
- (while (or start (> (current-indentation) 0))
+ (accum)
+ (length -1))
+ (while (and (or start (> (current-indentation) 0))
+ (or (null length-limit)
+ (null (cdr accum))
+ (< length length-limit)))
(setq start nil)
(python-beginning-of-block)
(end-of-line)
(beginning-of-defun)
- (if (looking-at (rx (0+ space) (or "def" "class") (1+ space)
+ (when (looking-at (rx (0+ space) (or "def" "class") (1+ space)
(group (1+ (or word (syntax symbol))))))
- (push (match-string 1) accum)))
- (if accum (mapconcat 'identity accum ".")))))
+ (push (match-string 1) accum)
+ (setq length (+ length 1 (length (car accum))))))
+ (when accum
+ (when (and length-limit (> length length-limit))
+ (setcar accum ".."))
+ (mapconcat 'identity accum ".")))))
(defun python-mark-block ()
"Mark the block around point.
@@ -2248,6 +2265,7 @@
(set (make-local-variable 'beginning-of-defun-function)
'python-beginning-of-defun)
(set (make-local-variable 'end-of-defun-function) 'python-end-of-defun)
+ (add-hook 'which-func-functions 'python-which-func nil t)
(setq imenu-create-index-function #'python-imenu-create-index)
(set (make-local-variable 'eldoc-documentation-function)
#'python-eldoc-function)
- [Emacs-diffs] Changes to emacs/lisp/progmodes/python.el,v,
Stefan Monnier <=