Commit b2e6e5bd authored by Stefan Monnier's avatar Stefan Monnier
Browse files

* 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.
parent 7f0ea0ff
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.
......
......@@ -198,7 +198,7 @@ It creates the Imenu index for the buffer, if necessary."
(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 @@ It creates the Imenu index for the buffer, if necessary."
(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 @@ It creates the Imenu index for the buffer, if necessary."
(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 @@ If no function name is found, return nil."
;; ("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))
(cond ((atom pair)) ; skip anything not a cons
((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)))
(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))))))
(if (null alist)
(setq alist (car imstack)
namestack (cdr namestack)
imstack (cdr imstack))
(setq pair (car-safe alist)
alist (cdr-safe alist))
(cond
((atom pair)) ; Skip anything not a cons.
((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)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment