Subject: bug#1319: Change in where-is-internal causing describe-key problems

From: martin rudalics <[email-masked]>
Date: Wed, 12 Nov 2008 19:32:26 +0100

>>> 22.2  => ([491520] [458752] [442368] [425984] [409600]...)
>>> CVS   => ([(128 . 4194303)])
>
> The 22.2 answer lists generic chars (these are chars that stand for
> a whole charset).  In Emacs-23, generic chars have been dropped in favor
> of using char-ranges, represented a a cons cell (START . END).

This would deserve a NEWS entry.

Anyway, we can either replace

	  (if (and (eq function 'self-insert-command)
		   (eq (key-binding "a") 'self-insert-command)
		   (eq (key-binding "b") 'self-insert-command)
		   (eq (key-binding "c") 'self-insert-command))
	      (princ "It is bound to many ordinary text characters.\n")
	    ...

by something like

	  (if (and (eq function 'self-insert-command)
		   (catch 'plenty
		     (let ((count 0))
		       (dolist (item (where-is-internal 'self-insert-command))
			 (when (vectorp item)
			   (let ((range (elt item 0)))
			     (when (consp range)
			       (setq count (+ count (- (cdr range) (car range))))
			       (when (> count 100)
				 (throw 'plenty count)))))))))
	      (princ "It is bound to many ordinary text characters.\n")
	    ...
	
or drop that "It is bound to many ordinary text characters" stuff.

martin, who'd drop it unless someone finds a better solution.