changeset 111823:6c35da413ade

* lisp/progmodes/which-func.el (which-func-ff-hook): Log the error message. (which-func-update-1): Distinguish symbols from strings. (which-function): Stay within 80 columns.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Fri, 03 Dec 2010 19:49:49 -0500
parents 7a58c6c26566
children 88e55e239ecc
files lisp/ChangeLog lisp/progmodes/which-func.el
diffstat 2 files changed, 31 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Fri Dec 03 18:20:27 2010 -0500
+++ b/lisp/ChangeLog	Fri Dec 03 19:49:49 2010 -0500
@@ -1,3 +1,9 @@
+2010-12-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* progmodes/which-func.el (which-func-ff-hook): Log the error message.
+	(which-func-update-1): Distinguish symbols from strings.
+	(which-function): Stay within 80 columns.
+
 2010-12-03  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* subr.el (with-demoted-errors): Distinguish symbols from strings.
--- a/lisp/progmodes/which-func.el	Fri Dec 03 18:20:27 2010 -0500
+++ b/lisp/progmodes/which-func.el	Fri Dec 03 19:49:49 2010 -0500
@@ -198,7 +198,7 @@
 	     (or (eq which-func-modes t)
 		 (member major-mode which-func-modes))))
 
-  (condition-case nil
+  (condition-case err
       (if (and which-func-mode
 	       (not (member major-mode which-func-non-auto-modes))
 	       (or (null which-func-maxout)
@@ -207,6 +207,7 @@
 	  (setq imenu--index-alist
 		(save-excursion (funcall imenu-create-index-function))))
     (error
+     (message "which-func-ff-hook error: %S" err)
      (setq which-func-mode nil))))
 
 (defun which-func-update ()
@@ -225,7 +226,7 @@
 	      (force-mode-line-update)))
 	(error
 	 (setq which-func-mode nil)
-	 (error "Error in which-func-update: %s" info))))))
+	 (error "Error in which-func-update: %S" info))))))
 
 ;;;###autoload
 (defalias 'which-func-mode 'which-function-mode)
@@ -294,29 +295,31 @@
         ;; ("submenu" ("name" . marker) ... ). The list can be
         ;; arbitrarily nested.
         (while (or alist imstack)
-          (if alist
-              (progn
-                (setq pair (car-safe alist)
-                      alist (cdr-safe alist))
+          (if (null alist)
+              (setq alist     (car imstack)
+                    namestack (cdr namestack)
+                    imstack   (cdr imstack))
 
-                (cond ((atom pair))     ; skip anything not a cons
+            (setq pair (car-safe alist)
+                  alist (cdr-safe alist))
 
-                      ((imenu--subalist-p pair)
-                       (setq imstack   (cons alist imstack)
-                             namestack (cons (car pair) namestack)
-                             alist     (cdr pair)))
+            (cond
+             ((atom pair))              ; Skip anything not a cons.
 
-                      ((number-or-marker-p (setq mark (cdr pair)))
-                       (if (>= (setq offset (- (point) mark)) 0)
-                           (if (< offset minoffset) ; find the closest item
-                               (setq minoffset offset
-                                     name (funcall
-                                           which-func-imenu-joiner-function
-					   (reverse (cons (car pair)
-							  namestack)))))))))
-            (setq alist     (car imstack)
-                  namestack (cdr namestack)
-                  imstack   (cdr imstack))))))
+             ((imenu--subalist-p pair)
+              (setq imstack   (cons alist imstack)
+                    namestack (cons (car pair) namestack)
+                    alist     (cdr pair)))
+
+             ((number-or-marker-p (setq mark (cdr pair)))
+              (when (and (>= (setq offset (- (point) mark)) 0)
+                         (< offset minoffset)) ; Find the closest item.
+                (setq minoffset offset
+                      name (if (null which-func-imenu-joiner-function)
+                               (car pair)
+                             (funcall
+                              which-func-imenu-joiner-function
+                              (reverse (cons (car pair) namestack))))))))))))
 
     ;; Try using add-log support.
     (when (and (null name) (boundp 'add-log-current-defun-function)