;;; mode-local.el --- Support for mode local facilities
;;
-;; Copyright (C) 2004, 2005, 2007, 2008, 2009, 2010
-;; Free Software Foundation, Inc.
+;; Copyright (C) 2004-2005, 2007-2015 Free Software Foundation, Inc.
;;
;; Author: David Ponce <david@dponce.com>
;; Maintainer: David Ponce <david@dponce.com>
;;
;; You should use a mode-local variable or override to allow extension
;; only if you expect a mode author to provide that extension. If a
-;; user might wish to customize a give variable or function then
+;; user might wish to customize a given variable or function then
;; the existing customization mechanism should be used.
;; To Do:
FUNCTION does not have arguments; when it is entered `current-buffer'
is the currently selected file buffer.
If optional argument PREDICATE is non nil, only select file buffers
-for which the function PREDICATE return non-nil.
+for which the function PREDICATE returns non-nil.
If optional argument BUFFERS is non-nil, it is a list of buffers to
walk through. It defaults to `buffer-list'."
(dolist (b (or buffers (buffer-list)))
(mode-local-map-mode-buffers #'activate-mode-local-bindings mode))
(defmacro define-child-mode (mode parent &optional docstring)
- "Make major mode MODE inherits behavior from PARENT mode.
+ "Make major mode MODE inherit behavior from PARENT mode.
DOCSTRING is optional and not used.
To work properly, this should be put after PARENT mode local variables
definition."
(list (mode-local--override name args body))
result)))
+;;;###autoload
+(put 'define-overloadable-function 'doc-string-elt 3)
+
(defmacro define-overloadable-function (name args docstring &rest body)
- "Define a new function, as with `defun' which can be overloaded.
+ "Define a new function, as with `defun', which can be overloaded.
NAME is the name of the function to create.
ARGS are the arguments to the function.
DOCSTRING is a documentation string to describe the function. The
-docstring will automatically had details about its overload symbol
+docstring will automatically have details about its overload symbol
appended to the end.
BODY is code that would be run when there is no override defined. The
default is to call the function `NAME-default' with the appropriate
appropriate arguments deduced from ARGS.
OVERARGS is a list of arguments passed to the override and
`NAME-default' function, in place of those deduced from ARGS."
+ (declare (doc-string 3))
`(eval-and-compile
(defun ,name ,args
,docstring
(defun overload-docstring-extension (overload)
"Return the doc string that augments the description of OVERLOAD."
(let ((doc "\n\This function can be overloaded\
- with `define-mode-local-override'.")
+ with ‘define-mode-local-override’.")
(sym (overload-obsoleted-by overload)))
(when sym
- (setq doc (format "%s\nIt has made the overload `%s' obsolete since %s."
+ (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 obsolete since %s;\nUse `%s' instead."
- doc (get overload 'overload-obsoleted-since) 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)
(defun mode-local-print-binding (symbol)
"Print the SYMBOL binding."
(let ((value (symbol-value symbol)))
- (princ (format "\n `%s' value is\n " symbol))
+ (princ (format "\n ‘%s’ value is\n " symbol))
(if (and value (symbolp value))
- (princ (format "`%s'" value))
+ (princ (format "‘%s’" value))
(let ((pt (point)))
(pp value)
(save-excursion
(defun mode-local-print-bindings (table)
"Print bindings in TABLE."
- (let (us ;; List of unpecified symbols
+ (let (us ;; List of unspecified symbols
mc ;; List of mode local constants
mv ;; List of mode local variables
ov ;; List of overloaded functions
table)
;; Print symbols by type
(when us
- (princ "\n !! Unpecified symbols\n")
+ (princ "\n !! Unspecified symbols\n")
(mapc 'mode-local-print-binding us))
(when mc
(princ "\n ** Mode local constants\n")
)
((symbolp buffer-or-mode)
(setq mode buffer-or-mode)
- (princ (format "`%s'\n" buffer-or-mode))
+ (princ (format "‘%s’\n" buffer-or-mode))
)
((signal 'wrong-type-argument
(list 'buffer-or-mode buffer-or-mode))))
(while mode
(setq table (get mode 'mode-local-symbol-table))
(when table
- (princ (format "\n- From `%s'\n" mode))
+ (princ (format "\n- From ‘%s’\n" mode))
(mode-local-print-bindings table))
(setq mode (get-mode-local-parent mode)))))