diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2010-12-03 19:49:49 -0500 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2010-12-03 19:49:49 -0500 |
commit | b2e6e5bd1549cdda271e6a5370615cd72c8f4fd6 (patch) | |
tree | b31fdc12b98701e739991c7043357c2a35b8f1fa /lisp/progmodes | |
parent | 7f0ea0ffc90f140cd6e19bc2adb25eb87f3e90d9 (diff) | |
download | emacs-b2e6e5bd1549cdda271e6a5370615cd72c8f4fd6.tar.gz |
* 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.
Diffstat (limited to 'lisp/progmodes')
-rw-r--r-- | lisp/progmodes/which-func.el | 53 |
1 files changed, 28 insertions, 25 deletions
diff --git a/lisp/progmodes/which-func.el b/lisp/progmodes/which-func.el index 049d708d191..6262e1c1958 100644 --- a/lisp/progmodes/which-func.el +++ b/lisp/progmodes/which-func.el @@ -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) |