Subject: bug#4510: 23.1; Separate help-argument-face from downcasing

From: Juanma Barranquero <[email-masked]>
Date: Tue, 22 Sep 2009 01:21:15 +0200

On Mon, Sep 21, 2009 at 23:35, Drew Adams <[email-masked]> wrote:

> The problem is that function `help-default-arg-highlight' couples
> (a) the use of a face to highlight the arguments with (b) downcasing
> the arguments.  These two should be separated, so users can highlight
> without downcasing (or downcase without highlighting).

This is the proposed patch; it also renames
`help-default-arg-highlight', which has an unfitting name.

  Juanma

2009-09-21  Juanma Barranquero  <[email-masked]>

	* help-fns.el (help-downcase-arguments): New option.
	(help-default-arg-highlight): Obsolete.
	(help-highlight-arg): New function.
	(help-do-arg-highlight): Use it.
	Suggested by Drew Adams <[email-masked]>.  (Bug#4510)

diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index 2425310..fc80966 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -158,15 +158,22 @@ KIND should be `var' for a variable or `subr'
for a subroutine."
 	    (concat "src/" file)
 	  file)))))

-(defun help-default-arg-highlight (arg)
-  "Default function to highlight arguments in *Help* buffers.
-It returns ARG in face `help-argument-name'; ARG is also
-downcased if it displays differently than the default
-face (according to `face-differs-from-default-p')."
-  (propertize (if (face-differs-from-default-p 'help-argument-name)
-                  (downcase arg)
-                arg)
-              'face 'help-argument-name))
+(defcustom help-downcase-arguments
+  (and (face-differs-from-default-p 'help-argument-name) t)
+  "If non-nil, argument names in *Help* buffers are downcased."
+  :type 'boolean
+  :group 'help
+  :version "23.2")
+
+(defun help-highlight-arg (arg)
+  "Highlight ARG as an argument name for a *Help* buffer.
+Return ARG in face `help-argument-name'; ARG is also downcased
+if the variable `help-downcase-arguments' is non-nil."
+  (propertize (if help-downcase-arguments (downcase arg) arg)
+	      'face 'help-argument-name))
+
+(define-obsolete-function-alias 'help-default-arg-highlight
+    'help-highlight-arg "23.2")

 (defun help-do-arg-highlight (doc args)
   (with-syntax-table (make-syntax-table emacs-lisp-mode-syntax-table)
@@ -184,7 +191,7 @@ face (according to `face-differs-from-default-p')."
                          "\\(?:-[a-z0-9-]+\\)?"  ; for ARG-xxx, ARG-n
                          "\\(?:-[{([<`\"].*?\\)?"; for ARG-{x}, (x),
<x>, [x], `x'
                          "\\>")                  ; end of word
-                 (help-default-arg-highlight arg)
+                 (help-highlight-arg arg)
                  doc t t 1)))))

 (defun help-highlight-arguments (usage doc &rest args)