;;; which-func.el --- Print current function in mode line
-;; Copyright (C) 1994, 1997 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1997, 1998 Free Software Foundation, Inc.
;; Author: Alex Rezinsky <alexr@msil.sps.mot.com>
-;; Keywords: mode-line imenu
+;; Keywords: mode-line, imenu, tools
;; This file is part of GNU Emacs.
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
;; Boston, MA 02111-1307, USA.
-;;; COMMENTARY
-;;; ----------
-;;; This package prints name of function where your current point is
-;;; located in mode line. It assumes that you work with imenu package
-;;; and imenu--index-alist is up to date.
-
-;;; KNOWN BUGS
-;;; ----------
-;;; Really this package shows not "function where the current point
-;;; is located now", but "nearest function which defined above the
-;;; current point". So if your current point is located after end of
-;;; function FOO but before begin of function BAR, FOO will be
-;;; displayed in mode line.
-
-;;; TODO LIST
-;;; ---------
-;;; 1. Dependence on imenu package should be removed. Separate
-;;; function determination mechanism should be used to determine the end
-;;; of a function as well as the beginning of a function.
-;;; 2. This package should be realized with the help of overlay
-;;; properties instead of imenu--index-alist variable.
-
-;;; THANKS TO
-;;; ---------
-;;; Per Abrahamsen <abraham@iesd.auc.dk>
-;;; Some ideas (inserting in mode-line, using of post-command hook
-;;; and toggling this mode) have been borrowed from his package
-;;; column.el
-;;; Peter Eisenhauer <pipe@fzi.de>
-;;; Bug fixing in case nested indexes.
-;;; Terry Tateyama <ttt@ursa0.cs.utah.edu>
-;;; Suggestion to use find-file-hooks for first imenu
-;;; index building.
-
-;;; Variables for customization
-;;; ---------------------------
-;;;
+;;; Commentary:
+
+;; This package prints name of function where your current point is
+;; located in mode line. It assumes that you work with imenu package
+;; and imenu--index-alist is up to date.
+
+;; KNOWN BUGS
+;; ----------
+;; Really this package shows not "function where the current point is
+;; located now", but "nearest function which defined above the current
+;; point". So if your current point is located after end of function
+;; FOO but before begin of function BAR, FOO will be displayed in mode
+;; line.
+
+;; TODO LIST
+;; ---------
+;; 1. Dependence on imenu package should be removed. Separate
+;; function determination mechanism should be used to determine the end
+;; of a function as well as the beginning of a function.
+;; 2. This package should be realized with the help of overlay
+;; properties instead of imenu--index-alist variable.
+
+;;; History:
+
+;; THANKS TO
+;; ---------
+;; Per Abrahamsen <abraham@iesd.auc.dk>
+;; Some ideas (inserting in mode-line, using of post-command hook
+;; and toggling this mode) have been borrowed from his package
+;; column.el
+;; Peter Eisenhauer <pipe@fzi.de>
+;; Bug fixing in case nested indexes.
+;; Terry Tateyama <ttt@ursa0.cs.utah.edu>
+;; Suggestion to use find-file-hooks for first imenu
+;; index building.
+
+;;; Code:
+
+;; Variables for customization
+;; ---------------------------
+;;
(defvar which-func-unknown "???"
"String to display in the mode line when current function is unknown.")
:group 'which-func
:type 'sexp)
+;;;###autoload
+(defcustom which-func-mode-global nil
+ "*Toggle `which-func-mode'.
+You must modify via \\[customize] for this variable to have an effect."
+ :set #'(lambda (symbol value)
+ (which-func-mode (or value 0)))
+ :initialize 'custom-initialize-default
+ :type 'boolean
+ :group 'which-func
+ :require 'which-func)
+
;;; Code, nothing to customize below here
;;; -------------------------------------
;;;
(make-variable-buffer-local 'which-func-current)
(make-variable-buffer-local 'which-func-previous)
-(defvar which-func-mode-global nil
- "Non-nil means display current function name in mode line.")
-
(defvar which-func-mode nil
"Non-nil means display current function name in mode line.
-This makes a difference only if which-func-mode-global is non-nil")
+This makes a difference only if `which-func-mode-global' is non-nil")
(make-variable-buffer-local 'which-func-mode)
(put 'which-func-mode 'permanent-local t)
(which-func-mode -1) ; Function mode off
(message "Error in which-func-update: %s" info))))
+;;;###autoload
(defun which-func-mode (&optional arg)
"Toggle Which Function mode, globally.
When Which Function mode is enabled, the current function name is
(member major-mode which-func-modes))))))
(defun which-function ()
- "Returns current function name based on point.
-If imenu--index-alist does not exist, or is empty or if point
+ "Return current function name based on point.
+If `imenu--index-alist' does not exist, or is empty or if point
is located before first function, returns nil."
(and
(boundp 'imenu--index-alist)