From: Masatake YAMATO Date: Thu, 25 Mar 2004 16:01:38 +0000 (+0000) Subject: (completion-setup-function): Emphasize the first uncommon characters in the completio... X-Git-Tag: ttn-vms-21-2-B4~7105 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=abcdd45aee4b2d927833de14bb9e3708ea378927;p=emacs.git (completion-setup-function): Emphasize the first uncommon characters in the completions;and de-emphasize the common prefix substrings. (completion-emphasis): New face. (completion-de-emphasis): New face. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f9597cdbe4d..89a18361ddd 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2004-03-26 Masatake YAMATO + + * simple.el (completion-setup-function): Emphasize the + first uncommon characters in the completions;and de-emphasize + the common prefix substrings. + (completion-emphasis): New face. + (completion-de-emphasis): New face. + 2004-03-25 Sam Steingold * vc.el (vc-print-log): Fixed a bug in the last patch: diff --git a/lisp/simple.el b/lisp/simple.el index f41b9cbd11a..6bc89ae1750 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -4116,6 +4116,15 @@ The completion list buffer is available as the value of `standard-output'.") ;; This function goes in completion-setup-hook, so that it is called ;; after the text of the completion list buffer is written. +(defface completion-emphasis + '((t (:inherit bold))) + "Face put on the first uncommon character in completions in *Completions* buffer." + :group 'completion) + +(defface completion-de-emphasis + '((t (:inherit default))) + "Face put on the common prefix substring in completions in *Completions* buffer." + :group 'completion) (defun completion-setup-function () (save-excursion @@ -4145,6 +4154,27 @@ The completion list buffer is available as the value of `standard-output'.") (save-match-data (if (minibufferp mainbuf) (setq completion-base-size 0)))) + ;; Put emphasis and de-emphasis faces on completions. + (when completion-base-size + (let ((common-string-length (length + (substring mbuf-contents + completion-base-size))) + (element-start (next-single-property-change + (point-min) + 'mouse-face)) + element-common-end) + (while element-start + (setq element-common-end (+ element-start common-string-length)) + (when (and (get-char-property element-start 'mouse-face) + (get-char-property element-common-end 'mouse-face)) + (put-text-property element-start element-common-end + 'font-lock-face 'completion-de-emphasis) + (put-text-property element-common-end (1+ element-common-end) + 'font-lock-face 'completion-emphasis)) + (setq element-start (next-single-property-change + element-start + 'mouse-face))))) + ;; Insert help string. (goto-char (point-min)) (if (display-mouse-p) (insert (substitute-command-keys