Subject: bug#20519: closed (Re: bug#20519: face-at-point: do not compute the final list if a sole value is wanted )

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 27 May 2015 22:31:05 +0000

Your bug report

#20519: face-at-point: do not compute the final list if a sole value is wanted 

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
20519: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20519
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#20519: face-at-point: do not compute the final list if a sole value is wanted
From: Ivan Shmakov <[email-masked]>
To: [email-masked]
Date: Wed, 27 May 2015 22:30:48 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Version: 25.1

>>>>> Ivan Shmakov <[email-masked]> writes:

 > The face-at-point function currently (1c7f0cdc4c1f, 2015-04-27
 > 16:59:11 +00:00) uses delete-dups to compute a duplicate-free version
 > of the list… just before taking a single value of it and discarding
 > the rest in the (not multiple) case.

 > Please thus consider the following patch.

 > * lisp/faces.el (face-at-point): Do not compute the properly ordered,
 > duplicate-free list if only a single value is requested.

	Pushed, as there were no objections; closing.

commit 550c65011c7394e8ebcf91fc29af2984908279d1
Date: 2015-05-27 22:15:27 +0000

    Avoid gratuitous delete-dups in face-at-point.

    * lisp/faces.el (face-at-point): Do not compute the properly
    ordered, duplicate-free list if only a single value is
    requested anyway.  (Bug#20519)

-- 
FSF associate member #7257  http://am-1.org/~ivan/      … 3013 B6A0 230E 334A

Subject: face-at-point: do not compute the final list if a sole value is wanted
From: Ivan Shmakov <[email-masked]>
To: [email-masked]
Date: Wed, 06 May 2015 21:25:40 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Package:  emacs
Severity: wishlist

	The face-at-point function currently (1c7f0cdc4c1f, 2015-04-27
	16:59:11 +00:00) uses delete-dups to compute a duplicate-free
	version of the list… just before taking a single value of it and
	discarding the rest in the (not multiple) case.

	Please thus consider the following patch.

	* lisp/faces.el (face-at-point): Do not compute the properly
	ordered, duplicate-free list if only a single value is
	requested.

-- 
FSF associate member #7257  http://am-1.org/~ivan/      … 3013 B6A0 230E 334A
--- a/lisp/faces.el
+++ b/lisp/faces.el
@@ -1937,8 +1937,9 @@ defun face-at-point (&optional thing multiple)
              (dolist (face faceprop)
                (if (facep face)
                    (push face faces))))))
-    (setq faces (delete-dups (nreverse faces)))
-    (if multiple faces (car faces))))
+    (if multiple
+        (delete-dups (nreverse faces))
+      (car (last faces)))))
 
 (defun foreground-color-at-point ()
   "Return the foreground color of the character after point."