;;; mode-local.el --- Support for mode local facilities
;;
-;; Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
+;; Copyright (C) 2004-2005, 2007-2011
+;; Free Software Foundation, Inc.
;;
;; Author: David Ponce <david@dponce.com>
;; Maintainer: David Ponce <david@dponce.com>
(or (get mode 'mode-local-parent)
(get mode 'derived-mode-parent)))
+;; FIXME doc (and function name) seems wrong.
+;; Return a list of MODE and all its parent modes, if any.
+;; Lists parent modes first.
(defun mode-local-equivalent-mode-p (mode)
"Is the major-mode in the current buffer equivalent to a mode in MODES."
(let ((modes nil))
The current mode bindings are saved, BODY is evaluated, and the saved
bindings are restored, even in case of an abnormal exit.
Value is what BODY returns.
-This lis like `with-mode-local-symbol', except that MODE is quoted
-and is note evaluated."
+This is like `with-mode-local-symbol', except that MODE is quoted
+and is not evaluated."
`(with-mode-local-symbol ',mode ,@body))
(put 'with-mode-local 'lisp-indent-function 1)
\f
;;; Function overloading
;;
-(defun make-obsolete-overload (old new)
- "Mark OLD overload as obsoleted by NEW overload."
+(defun make-obsolete-overload (old new when)
+ "Mark OLD overload as obsoleted by NEW overload.
+WHEN is a string describing the first release where it was made obsolete."
(put old 'overload-obsoleted-by new)
+ (put old 'overload-obsoleted-since when)
(put old 'mode-local-overload t)
(put new 'overload-obsolete old))
with `define-mode-local-override'.")
(sym (overload-obsoleted-by overload)))
(when sym
- (setq doc (format "%s\nIt makes the overload `%s' obsolete."
- doc sym)))
+ (setq doc (format "%s\nIt has made the overload `%s' obsolete since %s."
+ doc sym (get sym 'overload-obsoleted-since))))
(setq sym (overload-that-obsolete overload))
(when sym
- (setq doc (format "%s\nThis overload is obsoletes;\nUse `%s' instead."
- doc sym)))
+ (setq doc (format "%s\nThis overload is obsolete since %s;\nUse `%s' instead."
+ doc (get overload 'overload-obsoleted-since) sym)))
doc))
(defun mode-local-augment-function-help (symbol)
SYMBOL is a function that can be overridden."
(with-current-buffer "*Help*"
(pop-to-buffer (current-buffer))
- (unwind-protect
- (progn
- (toggle-read-only -1)
- (goto-char (point-min))
- (unless (re-search-forward "^$" nil t)
- (goto-char (point-max))
- (beginning-of-line)
- (forward-line -1))
- (insert (overload-docstring-extension symbol) "\n")
- ;; NOTE TO SELF:
- ;; LIST ALL LOADED OVERRIDES FOR SYMBOL HERE
- )
- (toggle-read-only 1))))
+ (goto-char (point-min))
+ (unless (re-search-forward "^$" nil t)
+ (goto-char (point-max))
+ (beginning-of-line)
+ (forward-line -1))
+ (let ((inhibit-read-only t))
+ (insert (overload-docstring-extension symbol) "\n")
+ ;; NOTE TO SELF:
+ ;; LIST ALL LOADED OVERRIDES FOR SYMBOL HERE
+ )))
;; Help for mode-local bindings.
(defun mode-local-print-binding (symbol)
"Display mode local bindings active in BUFFER."
(interactive "b")
(when (setq buffer (get-buffer buffer))
- (mode-local-describe-bindings-1 buffer (interactive-p))))
+ (mode-local-describe-bindings-1 buffer (called-interactively-p 'any))))
(defun describe-mode-local-bindings-in-mode (mode)
"Display mode local bindings active in MODE hierarchy."
#'(lambda (s) (get s 'mode-local-symbol-table))
t (symbol-name major-mode))))
(when (setq mode (intern-soft mode))
- (mode-local-describe-bindings-1 mode (interactive-p))))
+ (mode-local-describe-bindings-1 mode (called-interactively-p 'any))))
\f
;; ;;; find-func support (Emacs 21.4, or perhaps 22.1)
;; ;;