From b59f639d99a4bb3f29d8700c084b2b4082eba877 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 27 Mar 2013 18:03:15 +0200 Subject: [PATCH] Fix bug #14063 with reverting the *Colors* buffer. lisp/facemenu.el (list-colors-callback): New defvar. (list-colors-redisplay): New function. (list-colors-display): Install list-colors-redisplay as the revert-buffer-function. --- lisp/ChangeLog | 7 +++++++ lisp/facemenu.el | 15 ++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index fecad470900..00a105b5142 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2013-03-27 Eli Zaretskii + + * facemenu.el (list-colors-callback): New defvar. + (list-colors-redisplay): New function. + (list-colors-display): Install list-colors-redisplay as the + revert-buffer-function. (Bug#14063) + 2013-03-27 Stefan Monnier * minibuffer.el (completion-pcm--merge-completions): Make sure prefixes diff --git a/lisp/facemenu.el b/lisp/facemenu.el index e86c1c23d66..9a66edd28fc 100644 --- a/lisp/facemenu.el +++ b/lisp/facemenu.el @@ -513,12 +513,23 @@ filter out the color from the output." (* (nth 1 c-rgb) 0.7151522) (* (nth 2 c-rgb) 0.0721750)))))) +(defvar list-colors-callback nil + "Value of CALLBACK arg passed to `list-colors-display'; internal use.") + +(defun list-colors-redisplay (_ignore-auto _noconfirm) + "Redisplay the colors using `list-colors-sort'. + +This is installed as a `revert-buffer-function' in the *Colors* buffer." + (list-colors-display nil (buffer-name) list-colors-callback)) + (defun list-colors-display (&optional list buffer-name callback) "Display names of defined colors, and show what they look like. If the optional argument LIST is non-nil, it should be a list of colors to display. Otherwise, this command computes a list of colors that the current display can handle. Customize `list-colors-sort' to change the order in which colors are shown. +Type `g' or \\[revert-buffer] after customizing `list-colors-sort' +to redisplay colors in the new order. If the optional argument BUFFER-NAME is nil, it defaults to *Colors*. @@ -566,7 +577,9 @@ color. The function should accept a single argument, the color name." (erase-buffer) (list-colors-print list callback) (set-buffer-modified-p nil) - (setq truncate-lines t))) + (setq truncate-lines t) + (setq-local list-colors-callback callback) + (setq revert-buffer-function 'list-colors-redisplay))) (when callback (pop-to-buffer buffer-name) (message "Click on a color to select it."))) -- 2.39.2