diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2014-09-03 15:10:15 -0400 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2014-09-03 15:10:15 -0400 |
commit | 23aec6771492c8e5104be5c44d33e75492ad055a (patch) | |
tree | 1aa694babcaf04aa4147578ce1b44ff74c1fd897 /lisp | |
parent | eda0450a3aea160f3e6899b8c0bd8a2ac9ab7866 (diff) | |
download | emacs-23aec6771492c8e5104be5c44d33e75492ad055a.tar.gz |
* lisp/progmodes/which-func.el (which-func-ff-hook): Obey pre-existing
buffer-local setting of which-func-mode.
(which-func-mode): Use defvar-local.
(which-function-mode): Don't reset which-func-mode in each buffer since
it might have been set by someone else.
(which-func-update-ediff-windows): Check which-function-mode.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/ChangeLog | 9 | ||||
-rw-r--r-- | lisp/progmodes/which-func.el | 28 |
2 files changed, 22 insertions, 15 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d4bb37d32c6..d8c48287c14 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,12 @@ +2014-09-03 Stefan Monnier <monnier@iro.umontreal.ca> + + * progmodes/which-func.el (which-func-ff-hook): Obey pre-existing + buffer-local setting of which-func-mode. + (which-func-mode): Use defvar-local. + (which-function-mode): Don't reset which-func-mode in each buffer since + it might have been set by someone else. + (which-func-update-ediff-windows): Check which-function-mode. + 2014-09-03 Martin Rudalics <rudalics@gmx.at> * frame.el (frame-initialize): Remove horizontal-scroll-bars diff --git a/lisp/progmodes/which-func.el b/lisp/progmodes/which-func.el index aa68f9fcc1a..e62ad271089 100644 --- a/lisp/progmodes/which-func.el +++ b/lisp/progmodes/which-func.el @@ -187,21 +187,20 @@ and you want to simplify them for the mode line which-func-unknown)))) ;;;###autoload (put 'which-func-current 'risky-local-variable t) -(defvar which-func-mode nil +(defvar-local which-func-mode nil "Non-nil means display current function name in mode line. This makes a difference only if `which-function-mode' is non-nil.") -(make-variable-buffer-local 'which-func-mode) -;;(put 'which-func-mode 'permanent-local t) (add-hook 'find-file-hook 'which-func-ff-hook t) (defun which-func-ff-hook () "File find hook for Which Function mode. It creates the Imenu index for the buffer, if necessary." - (setq which-func-mode - (and which-function-mode - (or (eq which-func-modes t) - (member major-mode which-func-modes)))) + (unless (local-variable-p 'which-func-mode) + (setq which-func-mode + (and which-function-mode + (or (eq which-func-modes t) + (member major-mode which-func-modes))))) (condition-case err (if (and which-func-mode @@ -259,15 +258,13 @@ in certain major modes." ;;Turn it on (progn (setq which-func-update-timer - (run-with-idle-timer idle-update-delay t 'which-func-update)) + (run-with-idle-timer idle-update-delay t #'which-func-update)) (dolist (buf (buffer-list)) (with-current-buffer buf - (setq which-func-mode - (or (eq which-func-modes t) - (member major-mode which-func-modes)))))) - ;; Turn it off - (dolist (buf (buffer-list)) - (with-current-buffer buf (setq which-func-mode nil))))) + (unless (local-variable-p 'which-func-mode) + (setq which-func-mode + (or (eq which-func-modes t) + (member major-mode which-func-modes))))))))) (defvar which-function-imenu-failed nil "Locally t in a buffer if `imenu--make-index-alist' found nothing there.") @@ -347,10 +344,11 @@ If no function name is found, return nil." (defvar ediff-window-B) (defvar ediff-window-C) +;; FIXME: Why does ediff require special support? (defun which-func-update-ediff-windows () "Update Which-Function mode display for Ediff windows. This function is meant to be called from `ediff-select-hook'." - (when (eq major-mode 'ediff-mode) + (when (and (derived-mode-p 'ediff-mode) which-function-mode) (when ediff-window-A (which-func-update-1 ediff-window-A)) (when ediff-window-B |